Db_RecordExists et Db_NoRecordExists Zend_Validate_Db_RecordExists et Zend_Validate_Db_NoRecordExists permettent de vérifier si un enregistrement existe (ou pas) dans une table de base de données. Utilisation de base Voici un exemple basique: isValid($emailaddress)) { // l'adresse email existe } else { // l'adresse email n'existe pas, affichons les messages d'erreur foreach ($validator->getMessages() as $message) { echo "$message\n"; } } ]]> Le code ci-dessus vérifie la présence d'une adresse email $emailaddress vis à vis d'un champ d'une table de base de données. isValid($username)) { // Le nom d'utilisateur semble absent de la table } else { // invalide : l'utilisateur est probablement présent dans la table $messages = $validator->getMessages(); foreach ($messages as $message) { echo "$message\n"; } } ]]> Le code ci-dessus vérifie l'absence d'un nom d'utilisateur $username vis à vis d'un champ d'une table de base de données. Exclure des enregistrement Zend_Validate_Db_RecordExists et Zend_Validate_Db_NoRecordExists proposent aussi un moyen de tester la base de données en excluant certaines parties de table, en passant une clause where ou un tableau de paires "champs" "valeur". Lorsqu'un tableau est passé, l'opérateur != est utilisé et vous pouvez ainsi tester le reste de la table. getId(); $validator = new Zend_Validate_Db_NoRecordExists( 'users', 'username', array( 'field' => 'id', 'value' => $user_id ) ); if ($validator->isValid($username)) { // OK } else { // KO $messages = $validator->getMessages(); foreach ($messages as $message) { echo "$message\n"; } } ]]> L'exemple ci dessus va vérifier qu'aucun utilisateur dont l'id n'est pas celui spécifié, possède ce nom là $username. La clause d'exclusion peut aussi être renseignée avec une chaine afin de pouvoir utiliser un opérateur autre que !=. getId(); $clause = $db->quoteInto('post_id = ?', $category_id); $validator = new Zend_Validate_Db_RecordExists( 'posts_categories', 'post_id', $clause ); if ($validator->isValid($username)) { // OK } else { // KO $messages = $validator->getMessages(); foreach ($messages as $message) { echo "$message\n"; } } ]]> L'exemple ci-dessus vérifie la table posts_categories pour s'assurer qu'un enregistrement avec post_id corresponde à $category_id Adaptateurs de base de données Un adaptateur spécifique peut être passé au validateur. Dans le cas contraire, il utilisera l'adaptateur déclaré comme étant celui par défaut: Nom des bases de données Vous pouvez spécifier un nom de base de données (schéma) pour l'adaptateur PostgreSQL et DB/2 simplement grâce à un tableau possédant les clés table et schema. Voici un exemple: 'users', 'schema' => 'my'), 'id'); ]]>