[ZF-10089] Zend_Log
[zend.git] / documentation / manual / fr / module_specs / Zend_Validate-Db.xml
blobbb5700e1a8c9136d96622eee89982c1ba3db6c38
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21241 -->
3 <!-- Reviewed: no -->
4 <sect2 id="zend.validate.Db">
5     <title>Db_RecordExists et Db_NoRecordExists</title>
7     <para>
8         <classname>Zend_Validate_Db_RecordExists</classname> et
9         <classname>Zend_Validate_Db_NoRecordExists</classname> permettent de vérifier si un enregistrement
10         existe (ou pas) dans une table de base de données.
11     </para>
13     <sect3 id="zend.validate.set.db.options">
14         <title>Options supportées par Zend_Validate_Db_*</title>
16         <para>
17             Les options suivantes sont supportées par
18             <classname>Zend_Validate_Db_NoRecordExists</classname> et
19             <classname>Zend_Validate_Db_RecordExists</classname>&#160;:
20         </para>
22         <itemizedlist>
23             <listitem>
24                 <para>
25                     <emphasis><property>adapter</property></emphasis>&#160;: l'adaptateur de base
26                     de données qui sera utilisé pour la recherche.
27                 </para>
28             </listitem>
30             <listitem>
31                 <para>
32                     <emphasis><property>exclude</property></emphasis>&#160;: jeu d'enregistrements
33                     qui seront exclus de la recherche.
34                 </para>
35             </listitem>
37             <listitem>
38                 <para>
39                     <emphasis><property>field</property></emphasis>&#160;: le champs dans la table
40                     de la base de données dans lequel sera effectué la recherche.
41                 </para>
42             </listitem>
44             <listitem>
45                 <para>
46                     <emphasis><property>schema</property></emphasis>&#160;: le schéma utilisé
47                     pour la recherche.
48                 </para>
49             </listitem>
51             <listitem>
52                 <para>
53                     <emphasis><property>table</property></emphasis>&#160;: la table qui sera
54                     utilisée pour la recherche.
55                 </para>
56             </listitem>
57         </itemizedlist>
58     </sect3>
60     <sect3 id="zend.validate.db.basic-usage">
61         <title>Utilisation de base</title>
63         <para>
64             Voici un exemple basique:
65         </para>
67         <programlisting language="php"><![CDATA[
68 //Vérifie que l'email existe bien dans la base de données
69 $validator = new Zend_Validate_Db_RecordExists('users', 'emailaddress');
70 if ($validator->isValid($emailaddress)) {
71     // l'adresse email existe
72 } else {
73     // l'adresse email n'existe pas, affichons les messages d'erreur
74     foreach ($validator->getMessages() as $message) {
75         echo "$message\n";
76     }
78 ]]></programlisting>
80         <para>
81             Le code ci-dessus vérifie la présence d'une adresse email <varname>$emailaddress</varname>
82             vis à vis d'un champ d'une table de base de données.
83         </para>
85         <programlisting language="php"><![CDATA[
86 //Vérifie que le nom d'utilisateur n'est pas présent dans la table
87 $validator = new Zend_Validate_Db_NoRecordExists('users', 'username');
88 if ($validator->isValid($username)) {
89     // Le nom d'utilisateur semble absent de la table
90 } else {
91     // invalide : l'utilisateur est probablement présent dans la table
92     $messages = $validator->getMessages();
93     foreach ($messages as $message) {
94         echo "$message\n";
95     }
97 ]]></programlisting>
99         <para>
100             Le code ci-dessus vérifie l'absence d'un nom d'utilisateur <varname>$username</varname>
101             vis à vis d'un champ d'une table de base de données.
102         </para>
103     </sect3>
105     <sect3 id="zend.validate.db.excluding-records">
106         <title>Exclure des enregistrement</title>
108         <para>
109             <classname>Zend_Validate_Db_RecordExists</classname> et
110             <classname>Zend_Validate_Db_NoRecordExists</classname> proposent aussi un moyen de tester
111             la base de données en excluant certaines parties de table, en passant une clause where
112             ou un tableau de paires "champs" "valeur".
113         </para>
115         <para>
116             Lorsqu'un tableau est passé, l'opérateur <code>!=</code> est utilisé et vous pouvez ainsi
117             tester le reste de la table.
118         </para>
120         <programlisting language="php"><![CDATA[
121 //Vérifie qu'aucun autre utilisateur que celui dont l'id est spécifié, ne possède ce nom
122 $user_id   = $user->getId();
123 $validator = new Zend_Validate_Db_NoRecordExists(
124     'users',
125     'username',
126     array(
127         'field' => 'id',
128         'value' => $user_id
129     )
132 if ($validator->isValid($username)) {
133     // OK
134 } else {
135     // KO
136     $messages = $validator->getMessages();
137     foreach ($messages as $message) {
138         echo "$message\n";
139     }
141 ]]></programlisting>
143         <para>
144             L'exemple ci dessus va vérifier qu'aucun utilisateur dont l'id n'est pas celui spécifié,
145             possède ce nom là <varname>$username</varname>.
146         </para>
148         <para>
149             La clause d'exclusion peut aussi être renseignée avec une chaine afin de pouvoir utiliser
150             un opérateur autre que <code>!=</code>.
151         </para>
153         <programlisting language="php"><![CDATA[
154 $post_id   = $post->getId();
155 $clause    = $db->quoteInto('post_id = ?', $category_id);
156 $validator = new Zend_Validate_Db_RecordExists(
157     'posts_categories',
158     'post_id',
159     $clause
162 if ($validator->isValid($username)) {
163     // OK
164 } else {
165     // KO
166     $messages = $validator->getMessages();
167     foreach ($messages as $message) {
168         echo "$message\n";
169     }
171 ]]></programlisting>
173         <para>
174             L'exemple ci-dessus vérifie la table <code>posts_categories</code> pour s'assurer
175             qu'un enregistrement avec <code>post_id</code> corresponde à <varname>$category_id</varname>
176         </para>
177     </sect3>
179     <sect3 id="zend.validate.db.database-adapters">
180         <title>Adaptateurs de base de données</title>
182         <para>
183             Un adaptateur spécifique peut être passé au validateur. Dans le cas contraire,
184             il utilisera l'adaptateur déclaré comme étant celui par défaut:
185         </para>
187         <programlisting language="php"><![CDATA[
188 $validator = new Zend_Validate_Db_RecordExists('users', 'id', null, $dbAdapter);
189 ]]></programlisting>
190     </sect3>
192     <sect3 id="zend.validate.db.database-schemas">
193         <title>Nom des bases de données</title>
195         <para>
196             Vous pouvez spécifier un nom de base de données (schéma) pour l'adaptateur
197             PostgreSQL et DB/2 simplement grâce à un tableau possédant les clés
198             <code>table</code> et <code>schema</code>. Voici un exemple:
199         </para>
201         <programlisting language="php"><![CDATA[
202 $validator = new Zend_Validate_Db_RecordExists(array('table' => 'users',
203                                                      'schema' => 'my'), 'id');
204 ]]></programlisting>
205     </sect3>
206 </sect2>