/[openfoncier]/trunk/obj/om_dbform.class.php
ViewVC logotype

Contents of /trunk/obj/om_dbform.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1201 - (show annotations)
Wed Jan 9 17:03:07 2013 UTC (12 years ago) by fmichon
File size: 27775 byte(s)
Suppression/ajout de sauts de ligne et de commentaires pour rendre les comparaisons avec la classe parent plus faciles

1 <?php
2 /**
3 * Ce fichier est destine a permettre la surcharge de certaines methodes de
4 * la classe om_dbform pour des besoins specifiques de l'application
5 *
6 * @package openmairie_exemple
7 * @version SVN : $Id$
8 */
9
10 /**
11 *
12 */
13 require_once PATH_OPENMAIRIE."om_dbform.class.php";
14
15 /**
16 *
17 */
18 require_once "om_formulaire.class.php";
19
20 /**
21 *
22 */
23 class om_dbform extends dbForm {
24
25 /**
26 *
27 */
28 var $om_formulaire = "om_formulaire";
29
30 /**
31 * Constructeur
32 *
33 * @param string $id
34 * @param object $db Objet de connexion DB
35 * @param boolean $DEBUG Mode debug (@deprecated)
36 */
37 function constructeur($id, &$db, $DEBUG = false) {
38 if (defined('REST_REQUEST')) { // $this->REST
39 logger::instance()->display_log = false;
40 }
41 //
42 if (isset($GLOBALS["f"])) {
43 $this->f = $GLOBALS["f"];
44 }
45 // Le framework REST est utilisee
46 $this->errors = array();
47
48 // Affectation de l'identifiant de base de donnees dans l'attribut db
49 // de l'objet
50 $this->db = $db;
51 // Inclusion du fichier de parametre de la table pour recuperer les
52 // trois parametres permettant de construire la requete de selection
53 // $champs - clause select
54 // $tableSelect - clause from
55 // $selection - clause where
56 $fichier = "../sql/".$this->db->phptype."/".$this->table.".form.inc.php";
57 if (file_exists($fichier)) {
58 include $fichier;
59 } else {
60 $fichier = "../sql/".$this->db->phptype."/".$this->table.".form.inc";
61 if (file_exists($fichier)) {
62 include $fichier;
63 }
64 }
65
66 // Sauvegarde des actions contextuelles supplementaires
67 if (isset($portlet_actions)) {
68 $this->actions_sup = $portlet_actions;
69 }
70
71 // Concatenation des champs pour constitution de la clause select
72 $listeChamp = "";
73 foreach ($champs as $elem) {
74 $listeChamp .= $elem.",";
75 }
76 // Suppresion de la derniere virgule
77 $listeChamp = substr($listeChamp, 0, strlen($listeChamp)-1);
78 // Initialisation de la variable selection
79 if (!isset($selection)) {
80 $selection = "";
81 }
82 // Concatenation de la requete de selection
83 $sql = " select ".$listeChamp." from ".$tableSelect." ";
84 // Si mode ajout
85 if ($id == "]") {
86 // Remplacement du 'and' par 'where' dans la varibale $selection
87 $selection = ltrim($selection);
88 if (strtolower(substr($selection, 0, 3)) == "and") {
89 $selection = " where ".substr($selection, 4, strlen($selection));
90 }
91 } else { // Si mode modification ou suppression
92 // Clause where en fonction du type de la cle primaire
93 if ($this->typeCle == "A") {
94 $sql .= " where ".$this->table.".".$this->clePrimaire." like '".$id."' ";
95 } else {
96 $sql .= " where ".$this->table.".".$this->clePrimaire." = ".$id." ";
97 }
98 }
99 $sql .= " ".$selection." ";
100 // Execution de la requete
101 $res = $db->limitquery($sql, 0, 1);
102 // Logger
103 $this->addToLog("constructeur(): db->limitquery(\"".str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
104 // Si une erreur survient
105 if (database::isError($res, true)) {
106 // Appel de la methode de recuperation des erreurs
107 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), $tableSelect);
108 } else {
109 // Recuperation des informations sur la structure de la table
110 // ??? compatibilite POSTGRESQL (len = -1, type vide, flags vide)
111 $info = $res->tableInfo();
112 // Initialisation de la cle a 0
113 $i = 0;
114 // Recuperation du nom de chaque champ dans l'attribut 'champs'
115 foreach ($info as $elem) {
116 $this->champs[$i++] = $elem['name'];
117 }
118 // ??? Le $i devrait etre initialises a 0 pour chaque attribut suivant
119 // Recuperation de la taille de chaque champ dans l'attibut 'longueurMax'
120 foreach ($info as $elem) {
121 $this->longueurMax[$i++] = $elem['len'];
122 }
123 // Recuperation du type de chaque champ dans l'attribut 'type'
124 // ??? Non utilise
125 foreach ($info as $elem) {
126 $this->type[$i++] = $elem['type'];
127 }
128 // Recuperation du flag de chaque champ dans l'attribut 'flags'
129 // ??? Non utilise
130 foreach ($info as $elem) {
131 $this->flags[$i++] = $elem['flags'];
132 }
133 // Recuperation de l'enregistrement resultat de la requete
134 while ($row =& $res->fetchRow()) {
135 // Initialisation de la cle a 0
136 $i = 0;
137 // Recuperation de la valeur de chaque champ dans l'attribut 'val'
138 foreach ($row as $elem) {
139 $this->val[$i] = $elem;
140 if (defined('REST_REQUEST')) { // $this->REST
141 $this->valF[$this->champs[$i]] = $elem;
142 }
143 $i++;
144 }
145 }
146 }
147 }
148
149 /**
150 * Cette methode permet d'executer l'ajout (MODE 'insert') de l'objet dans
151 * la base de donnees.
152 *
153 * @param array $val
154 * @param object $db Objet de connexion DB
155 * @param boolean $DEBUG Mode debug (@deprecated)
156 */
157 function ajouter($val, &$db = NULL, $DEBUG = false) {
158 // Logger
159 $this->addToLog("ajouter() - begin", EXTRA_VERBOSE_MODE);
160 // Mutateur de valF
161 $this->setValF($val);
162 // Mutateur de valF specifique a l'ajout
163 $this->setValFAjout($val);
164 // Verification de la validite des donnees
165 $this->verifier($val, $db, $DEBUG);
166 // Verification specifique au MODE 'insert' de la validite des donnees
167 $this->verifierAjout($val, $db);
168 // Verification du verrou
169 $this->testverrou();
170 // Si les verifications precedentes sont correctes, on procede a
171 // l'ajout, sinon on ne fait rien et on affiche un message d'echec
172 if ($this->correct) {
173 // Appel au mutateur pour le calcul de la cle primaire (si la cle
174 // est automatique) specifique au MODE 'insert'
175 $this->setId($db);
176 // Execution du trigger 'before' specifique au MODE 'insert'
177 // Le premier parametre est vide car en MODE 'insert'
178 // l'enregistrement n'existe pas encore donc il n'a pas
179 // d'identifiant
180 $this->triggerajouter("", $db, $val, $DEBUG);
181 // Execution de la requete d'insertion des donnees de l'attribut
182 // valF de l'objet dans l'attribut table de l'objet
183 $res = $db->autoExecute(DB_PREFIXE.$this->table, $this->valF, DB_AUTOQUERY_INSERT);
184 // Si une erreur survient
185 if (database::isError($res, true)) {
186 // Appel de la methode de recuperation des erreurs
187 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
188 } else {
189 // Log
190 $this->addToLog(_("Requete executee"), VERBOSE_MODE);
191 // Log
192 $message = _("Enregistrement")."&nbsp;".$this->valF[$this->clePrimaire]."&nbsp;";
193 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
194 $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
195 $message .= _("enregistrement(s) ajoute(s)")."&nbsp;]";
196 $this->addToLog($message, VERBOSE_MODE);
197 // Message de validation
198 $this->addToMessage(_("Vos modifications ont bien ete enregistrees.")."<br/>");
199 // Mise en place du verrou pour ne pas valider plusieurs fois
200 // le meme formulaire
201 $this->verrouille();
202
203 // Execution du trigger 'after' specifique au MODE 'insert'
204 // Le premier parametre est vide car en MODE 'insert'
205 // l'enregistrement n'existe pas encore donc il n'a pas
206 // d'identifiant
207 $this->triggerajouterapres("", $db, $val, $DEBUG);
208 }
209 } else {
210 // Message d'echec (saut d'une ligne supplementaire avant le
211 // message pour qu'il soit mis en evidence)
212 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
213 }
214 // Logger
215 $this->addToLog("ajouter() - end", EXTRA_VERBOSE_MODE);
216 }
217
218 /**
219 * Cette methode permet d'executer la modification (MODE 'update') de
220 * l'objet dans la base de donnees.
221 *
222 * @param array $val
223 * @param object $db Objet de connexion DB
224 * @param boolean $DEBUG Mode debug (@deprecated)
225 */
226 function modifier($val = array(), &$db = NULL, $DEBUG = false) {
227 // Logger
228 $this->addToLog("modifier() - begin", EXTRA_VERBOSE_MODE);
229 // Recuperation de la valeur de la cle primaire de l'objet
230 if(isset($val[$this->clePrimaire]))
231 $id = $val[$this->clePrimaire];
232 else
233 $id=$this->id;
234 // Appel au mutateur de l'attribut valF de l'objet
235 $this->setValF($val);
236 // Verification de la validite des donnees
237 $this->verifier($val, $db, $DEBUG);
238 // Verification du verrou
239 $this->testverrou();
240 // Si les verifications precedentes sont correctes, on procede a
241 // la modification, sinon on ne fait rien et on affiche un message
242 // d'echec
243 if ($this->correct) {
244 // Execution du trigger 'before' specifique au MODE 'update'
245 $this->triggermodifier($id, $db, $val, $DEBUG);
246 // Execution de la requête de modification des donnees de l'attribut
247 // valF de l'objet dans l'attribut table de l'objet
248 $res = $db->autoExecute(DB_PREFIXE.$this->table, $this->valF, DB_AUTOQUERY_UPDATE, $this->getCle($id));
249 // Si une erreur survient
250 if (database::isError($res, true)) {
251 // Appel de la methode de recuperation des erreurs
252 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
253 } else {
254 // Log
255 $this->addToLog(_("Requete executee"), VERBOSE_MODE);
256 // Log
257 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
258 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
259 $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
260 $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
261 $this->addToLog($message, VERBOSE_MODE);
262 // Message de validation
263 if ($db->affectedRows() == 0) {
264 $this->addToMessage(_("Attention vous n'avez fait aucune modification.")."<br/>");
265 } else {
266 $this->addToMessage(_("Vos modifications ont bien ete enregistrees.")."<br/>");
267 }
268 // Mise en place du verrou pour ne pas valider plusieurs fois
269 // le meme formulaire
270 $this->verrouille();
271
272 // Execution du trigger 'after' specifique au MODE 'update'
273 $this->triggermodifierapres($id, $db, $val, $DEBUG);
274 }
275 } else {
276 // Message d'echec (saut d'une ligne supplementaire avant le
277 // message pour qu'il soit mis en evidence)
278 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
279 }
280 // Logger
281 $this->addToLog("modifier() - end", EXTRA_VERBOSE_MODE);
282 }
283
284 /**
285 * Cette methode permet d'executer la suppression (MODE 'delete') de
286 * l'objet dans la base de donnees.
287 *
288 * @param array $val
289 * @param object $db Objet de connexion DB
290 * @param boolean $DEBUG Mode debug (@deprecated)
291 */
292 function supprimer($val = array(), &$db = NULL, $DEBUG = false) {
293 // Logger
294 $this->addToLog("supprimer() - begin", EXTRA_VERBOSE_MODE);
295 // Recuperation de la valeur de la cle primaire de l'objet
296 if(isset($val[$this->clePrimaire]))
297 $id = $val[$this->clePrimaire];
298 else
299 $id=$this->id;
300 // Verification des contraintes d'integrite specifique au MODE 'delete'
301 $this->correct=true;
302 $this->cleSecondaire($id, $db, $val, $DEBUG);
303 // Verification du verrou
304 $this->testverrou();
305 // Si les verifications precedentes sont correctes, on procede a
306 // la suppression, sinon on ne fait rien et on affiche un message
307 // d'echec
308 if ($this->correct) {
309 // Execution du trigger 'before' specifique au MODE 'delete'
310 $this->triggersupprimer($id, $db, $val, $DEBUG);
311 // Construction de la requete de suppression de l'objet dans
312 // l'attribut table de l'objet
313 $sql = "delete from ".DB_PREFIXE.$this->table." where ".$this->getCle($id);
314 // Execution de la requete de suppression de l'objet
315 $res = $db->query($sql);
316 // Logger
317 $this->addToLog("supprimer(): db->query(\"".$sql."\");", VERBOSE_MODE);
318 // Si une erreur survient
319 if (database::isError($res, true)) {
320 // Appel de la methode de recuperation des erreurs
321 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
322 } else {
323 // Log
324 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
325 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
326 $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
327 $message .= _("enregistrement(s) supprime(s)")."&nbsp;]";
328 $this->addToLog($message, VERBOSE_MODE);
329 // Message de validation
330 $this->addToMessage(_("La suppression a ete correctement effectuee.")."<br/>");
331 // Mise en place du verrou pour ne pas valider plusieurs fois
332 // le meme formulaire
333 $this->verrouille();
334
335 // Execution du trigger 'after' specifique au MODE 'delete'
336 $this->triggersupprimerapres($id, $db, $val, $DEBUG);
337 }
338 } else {
339 // Message d'echec (saut d'une ligne supplementaire avant le
340 // message pour qu'il soit mis en evidence)
341 $this->addToMessage("<br/>"._("SUPPRESSION NON EFFECTUEE")."<br/>");
342 }
343 // Logger
344 $this->addToLog("supprimer() - end", EXTRA_VERBOSE_MODE);
345 }
346
347 /**
348 * Methode de verification de l'unicite d'une valeur pour chaque elements du tableau unique_key,
349 * ainsi que l'unicite de la cle multiple unique_multiple_key.
350 *
351 * @param objet $db Objet Base de donnees
352 */
353
354 function checkUniqueKey() {
355 $unique=true;
356 //Verification des cles uniques
357 if(!empty($this->unique_key)) {
358 foreach ($this->unique_key as $constraint) {
359 if(!is_array($constraint)) {
360 if(!is_null ($this->valF[$constraint])) {
361 if(!$this->isUnique($constraint,$this->valF[$constraint])) {
362 $this->addToMessage( _("La valeur saisie dans le champ")." <span class=\"bold\">");
363 $this->addToMessage( (!defined('REST_REQUEST')) ? $this->form->lib[$constraint] : $constraint); // $this->REST
364 $this->addToMessage( "</span> "._("existe deja, veuillez saisir une nouvelle valeur.")."<br/>");
365 $unique=false;
366 }
367 }
368 } else {
369 //Verification du groupe de champs uniques
370 $oneIsNull=false;
371 if(!empty($constraint)) {
372 $valueMultiple=array();
373 foreach($constraint as $field) {
374 $valueMultiple[]=$this->valF[$field];
375 if(is_null($this->valF[$field])) {
376 $oneIsNull=true;
377 }
378 }
379 if(!$oneIsNull) {
380 if(!$this->isUnique($constraint,$valueMultiple)) {
381 foreach($constraint as $field) {
382 $temp[] = (!defined('REST_REQUEST')) ? $this->form->lib[$field] : $constraint; // $this->REST
383 }
384 $this->addToMessage( _("Les valeurs saisies dans les champs")." <span class=\"bold\">".implode("</span>, <span class=\"bold\">",$temp)."</span> "._("existent deja, veuillez saisir de nouvelles valeurs.")."<br/>");
385 $unique=false;
386 }
387 }
388 }
389 }
390 }
391 }
392 if(!$unique) {
393 $this->correct = false;
394 }
395 }
396
397 /**
398 * Methode permettant de requeter la base afin de definir la validite du champ unique
399 *
400 * @param string $champ nom du champ unique
401 * @param string $value valeur à inserer dans la colonne
402 */
403 function isUnique($champ,$value) {
404 //Test sur un groupe de champs
405 if(is_array($champ) and is_array($value)) {
406 $sql = 'SELECT count(*) FROM '.DB_PREFIXE.$this->table." WHERE ".implode(" = ? AND ",$champ)." = ?";
407 } else {
408 //Test sur un champ
409 $sql = 'SELECT count(*) FROM '.DB_PREFIXE.$this->table." WHERE ".$champ." = ?";
410 }
411 if($this->getParameter('maj')) {
412 $sql .= " AND ".$this->clePrimaire." \!= ".$this->valF[$this->clePrimaire];
413 }
414 $nb = $this->db->getone($sql,$value);
415 $this->addToLog("isUnique() : db->getone(\"".$sql."\");", VERBOSE_MODE);
416 if (database::isError($nb, true)) {
417 // Affichage de l'erreur
418 $this->erreur_db($nb->getDebugInfo(), $nb->getMessage(), '');
419 return true;
420 } else {
421 //Si superieur a 0, pas unique
422 if ($nb > 0) {
423 return false;
424 } else {
425 return true;
426 }
427 }
428 }
429
430 /**
431 * Methode de verification des contraintes not null,
432 * affiche une erreur si nul.
433 *
434 * @param objet $db Objet Base de donnees
435 */
436 function checkRequired() {
437 foreach($this->required_field as $field) {
438 //Ne test la cle primaire car n'a pas de valeur a l'ajout
439
440 // la cle primaire est automatiquement cree
441 if ($field == $this->clePrimaire) {
442 continue;
443 }
444
445 $error = false;
446
447 /* En ajout - verification des requis
448
449 Fonctionnement formel de la condition:
450
451 SI le champ n'existe pas (est 'unset')
452 OU le champ est vide
453
454 ALORS le formulaire n'est pas correct
455
456 SINON le formulaire est correct
457
458 Explication:
459
460 Les champs verifies sont les champs requis. S'ils n'existent
461 pas en ajout ou qu'ils sont vide, un message apparait a l'ecran
462 avertissant l'utilisateur que certains champs doivent etre
463 remplis.
464
465 */
466 if ($this->getParameter('maj') == 0 and
467 (!isset($this->valF[$field]) or $this->valF[$field] == '')) {
468
469 $error = true;
470 $this->correct = false;
471
472 /* En modification - verification des requis
473
474 Fonctionnement formel de la condition:
475
476 SI le champ existe (est 'set')
477 ET le champ est vide
478
479 ALORS le formulaire n'est pas correct
480
481 SINON le formulaire est correct
482
483 Explication:
484
485 Les champs verifies sont les champs requis. S'ils existent
486 et qu'ils sont vides alors un message apparait a l'ecran
487 avertissant l'utilisateur que certains champs doivent etre
488 remplis. Si ces champs sont tous saisis, le formulaire est
489 correctement soumis. Par contre, si l'un des champs requis
490 n'existe pas au moment de verification (il aurait ete 'unset'),
491 il ne sera pas verifie, n'entrainera pas de formulaire incorrect
492 et ne sera pas insere dans la base de donnees.
493
494 Faire un 'unset' permet de ne pas mettre a jour certaines
495 donnees sensibles en base a chaque soumission de formulaire.
496
497 Faire un 'unset' permet egalement d'outre passer cette condition
498 en mode de modification. On suppose qu'a l'ajout une valeur
499 a ete inseree dans un champ, et qu'il n'est plus necessaire
500 de verifier si ce champ est vide puisque sa valeur ne sera
501 pas modifiee en base. Elle sera donc conservee.
502
503 */
504 } elseif ($this->getParameter('maj') == 1
505 and isset($this->valF[$field])
506 and $this->valF[$field] == '') {
507
508 $error = true;
509 $this->correct = false;
510 }
511
512 // ajout du message d'erreur
513 if ($error == true) {
514 //$this->msg .= _('Le champ').' <span class="bold">'.($this->form->lib[$field]!=""?$this->form->lib[$field]:_($field)).'</span> '._('est obligatoire').".<br/>";
515 $this->addToMessage( _('Le champ').' <span class="bold">'.((!defined('REST_REQUEST')) ? $this->form->lib[$field] :_($field)).'</span> '._('est obligatoire').".<br/>"); // $this->REST
516 }
517 }
518 }
519
520
521
522
523
524 /**
525 *
526 */
527 function message() {
528
529 // do not output anything in case of a REST request
530 if (defined('REST_REQUEST')) {
531 return;
532 }
533
534 if ($this->msg != "") {
535
536 //
537 if ($this->correct) {
538 $class = "valid";
539 } else {
540 $class = "error";
541 }
542 $this->f->displayMessage($class, $this->msg);
543
544 }
545
546 }
547
548
549
550 /**
551 * Cette methode ne doit plus etre appelee, c'est 'message::isError($res)'
552 * qui s'occupe d'afficher le message d'erreur et de faire le 'die()'.
553 *
554 * @deprecated
555 */
556 function erreur_db($debuginfo, $messageDB, $table) {
557 if (!defined('REST_REQUEST')) { // $this->REST
558 die(_("Erreur de base de donnees. Contactez votre administrateur."));
559 } else {
560 $this->errors['db_debuginfo'] = $debuginfo;
561 $this->errors['db_message'] = $messageDB;
562 $this->addToLog("Erreur de BD pour table ".$table ." avec message: \"".$messageDB.
563 "\" et debug info \"".$debuginfo."\"", VERBOSE_MODE);
564 }
565 }
566
567
568 /**
569 *
570 */
571 function addToLog($message, $type = DEBUG_MODE) {
572 if (defined('REST_REQUEST')) { // dans le cas d'utilisation du REST $this->REST
573 logger::instance()->log("REST request class ".get_class($this)." - ".$message, $type);
574 } else {
575 logger::instance()->log("class ".get_class($this)." - ".$message, $type);
576 }
577 }
578
579 // }}}
580
581 /**
582 * Cette methode vide les valeurs des erreurs du tableau errors.
583 */
584 function clearErrors() {
585 foreach (array_keys($this->errors) as $key) {
586 $this->errors[$key] = '';
587 }
588 }
589
590 /**
591 * Méthode pour convertir une date Y-m-d en d/m/Y
592 */
593 function dateDBToForm($date) {
594 $date = new DateTime($this->valF['date_demande']);
595 return $date->format('d/m/Y');
596 }
597
598
599 function init_select(&$form = null, &$db = null, $maj, $debug, $field, $sql,
600 $sql_by_id, $om_validite = false) {
601
602 if ($maj < 2) {
603
604 $contenu = array();
605 $res = $db->query($sql);
606
607 // logger
608 $this->addToLog("setSelect()[gen/obj]: db->query(\"".$sql."\");",
609 VERBOSE_MODE);
610
611 // verification d'une eventuelle erreur
612 if (database::isError($res)) {
613 die($res->getMessage().$sql);
614 } else {
615
616 if ($debug == 1) {
617 echo ' la requete '.$sql.' est executee';
618 echo "<br />";
619 }
620
621 $contenu[0][0] = '';
622 $contenu[1][0] = _('choisir')."&nbsp;"._($field);
623
624 $k=1;
625 while($row =& $res->fetchRow()){
626 $contenu[0][$k] = $row[0];
627 $contenu[1][$k] = $row[1];
628 $k++;
629 }
630
631 // gestion des objets a date de validite
632 if ($om_validite == true) {
633
634 // ajout de la valeur manquante a $contenu si necessaire
635 if ($maj == 1) {
636
637 if (!in_array($this->form->val[$field], $contenu[0])) {
638
639 //
640 $this->getSelectOldValue($form, $maj, $db, $contenu,
641 $sql_by_id, $field);
642 } else {
643
644 $empty = true;
645 foreach ($this->form->val as $f => $value) {
646 if (!empty($value)) {
647 $empty = false;
648 }
649 }
650
651 //
652 if ($empty == true and
653 $_POST[$field] != '') {
654
655 $this->getSelectOldValue($form, $maj, $db,
656 $contenu, $sql_by_id,
657 $field,
658 $_POST[$field]);
659 }
660 }
661 }
662 }
663
664 $form->setSelect($field, $contenu);
665 }
666 }
667
668 if ($maj == 2 or $maj == 3) {
669
670 $contenu[0][0] = '';
671 $contenu[1][0] = '';
672
673 if (isset($this->form->val[$field]) and
674 !empty($this->form->val[$field]) and $sql_by_id) {
675
676 // ajout de l'identifiant recherche a la requete
677 $sql_by_id = str_replace('<idx>', $this->form->val[$field],
678 $sql_by_id);
679
680 // execution
681 $result = $db->query($sql_by_id);
682
683 // logger
684 $this->addToLog("setSelect()[gen/obj]: db->query(".$sql_by_id.");",
685 VERBOSE_MODE);
686
687 if (database::isError($result)) {
688 die($result->getMessage().$sql_by_id);
689 }
690
691 $row =& $result->fetchRow();
692 $contenu[0][0] = $row[0];
693 $contenu[1][0] = $row[1];
694
695 $k=1;
696 while($row =& $result->fetchRow()){
697 $contenu[0][$k] = $row[0];
698 $contenu[1][$k] = $row[1];
699 $k++;
700 }
701 }
702
703 $form->setSelect($field, $contenu);
704 }
705 }
706 }
707
708 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26