/[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 1294 - (show annotations)
Tue Feb 26 16:59:32 2013 UTC (11 years, 11 months ago) by nhaye
File size: 27785 byte(s)
Correction d'une erreur

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 // Execution du trigger 'after' specifique au MODE 'insert'
203 // Le premier parametre est vide car en MODE 'insert'
204 // l'enregistrement n'existe pas encore donc il n'a pas
205 // d'identifiant
206 $this->triggerajouterapres("", $db, $val, $DEBUG);
207 }
208 } else {
209 // Message d'echec (saut d'une ligne supplementaire avant le
210 // message pour qu'il soit mis en evidence)
211 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
212 }
213 // Logger
214 $this->addToLog("ajouter() - end", EXTRA_VERBOSE_MODE);
215 }
216
217 /**
218 * Cette methode permet d'executer la modification (MODE 'update') de
219 * l'objet dans la base de donnees.
220 *
221 * @param array $val
222 * @param object $db Objet de connexion DB
223 * @param boolean $DEBUG Mode debug (@deprecated)
224 */
225 function modifier($val = array(), &$db = NULL, $DEBUG = false) {
226 // Logger
227 $this->addToLog("modifier() - begin", EXTRA_VERBOSE_MODE);
228 // Recuperation de la valeur de la cle primaire de l'objet
229 if(isset($val[$this->clePrimaire]))
230 $id = $val[$this->clePrimaire];
231 else
232 $id=$this->id;
233 // Appel au mutateur de l'attribut valF de l'objet
234 $this->setValF($val);
235 // Verification de la validite des donnees
236 $this->verifier($val, $db, $DEBUG);
237 // Verification du verrou
238 $this->testverrou();
239 // Si les verifications precedentes sont correctes, on procede a
240 // la modification, sinon on ne fait rien et on affiche un message
241 // d'echec
242 if ($this->correct) {
243 // Execution du trigger 'before' specifique au MODE 'update'
244 $this->triggermodifier($id, $db, $val, $DEBUG);
245 // Execution de la requête de modification des donnees de l'attribut
246 // valF de l'objet dans l'attribut table de l'objet
247 $res = $db->autoExecute(DB_PREFIXE.$this->table, $this->valF, DB_AUTOQUERY_UPDATE, $this->getCle($id));
248 // Si une erreur survient
249 if (database::isError($res, true)) {
250 // Appel de la methode de recuperation des erreurs
251 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
252 } else {
253 // Log
254 $this->addToLog(_("Requete executee"), VERBOSE_MODE);
255 // Log
256 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
257 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
258 $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
259 $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
260 $this->addToLog($message, VERBOSE_MODE);
261 // Message de validation
262 if ($db->affectedRows() == 0) {
263 $this->addToMessage(_("Attention vous n'avez fait aucune modification.")."<br/>");
264 } else {
265 $this->addToMessage(_("Vos modifications ont bien ete enregistrees.")."<br/>");
266 }
267 // Mise en place du verrou pour ne pas valider plusieurs fois
268 // le meme formulaire
269 $this->verrouille();
270 // Execution du trigger 'after' specifique au MODE 'update'
271 $this->triggermodifierapres($id, $db, $val, $DEBUG);
272 }
273 } else {
274 // Message d'echec (saut d'une ligne supplementaire avant le
275 // message pour qu'il soit mis en evidence)
276 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
277 }
278 // Logger
279 $this->addToLog("modifier() - end", EXTRA_VERBOSE_MODE);
280 }
281
282 /**
283 * Cette methode permet d'executer la suppression (MODE 'delete') de
284 * l'objet dans la base de donnees.
285 *
286 * @param array $val
287 * @param object $db Objet de connexion DB
288 * @param boolean $DEBUG Mode debug (@deprecated)
289 */
290 function supprimer($val = array(), &$db = NULL, $DEBUG = false) {
291 // Logger
292 $this->addToLog("supprimer() - begin", EXTRA_VERBOSE_MODE);
293 // Recuperation de la valeur de la cle primaire de l'objet
294 if(isset($val[$this->clePrimaire]))
295 $id = $val[$this->clePrimaire];
296 else
297 $id=$this->id;
298 // Verification des contraintes d'integrite specifique au MODE 'delete'
299 $this->correct=true;
300 $this->cleSecondaire($id, $db, $val, $DEBUG);
301 // Verification du verrou
302 $this->testverrou();
303 // Si les verifications precedentes sont correctes, on procede a
304 // la suppression, sinon on ne fait rien et on affiche un message
305 // d'echec
306 if ($this->correct) {
307 // Execution du trigger 'before' specifique au MODE 'delete'
308 $this->triggersupprimer($id, $db, $val, $DEBUG);
309 // Construction de la requete de suppression de l'objet dans
310 // l'attribut table de l'objet
311 $sql = "delete from ".DB_PREFIXE.$this->table." where ".$this->getCle($id);
312 // Execution de la requete de suppression de l'objet
313 $res = $db->query($sql);
314 // Logger
315 $this->addToLog("supprimer(): db->query(\"".$sql."\");", VERBOSE_MODE);
316 // Si une erreur survient
317 if (database::isError($res, true)) {
318 // Appel de la methode de recuperation des erreurs
319 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
320 } else {
321 // Log
322 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
323 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
324 $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
325 $message .= _("enregistrement(s) supprime(s)")."&nbsp;]";
326 $this->addToLog($message, VERBOSE_MODE);
327 // Message de validation
328 $this->addToMessage(_("La suppression a ete correctement effectuee.")."<br/>");
329 // Mise en place du verrou pour ne pas valider plusieurs fois
330 // le meme formulaire
331 $this->verrouille();
332 // Execution du trigger 'after' specifique au MODE 'delete'
333 $this->triggersupprimerapres($id, $db, $val, $DEBUG);
334 }
335 } else {
336 // Message d'echec (saut d'une ligne supplementaire avant le
337 // message pour qu'il soit mis en evidence)
338 $this->addToMessage("<br/>"._("SUPPRESSION NON EFFECTUEE")."<br/>");
339 }
340 // Logger
341 $this->addToLog("supprimer() - end", EXTRA_VERBOSE_MODE);
342 }
343
344 /**
345 * Methode de verification de l'unicite d'une valeur pour chaque elements du tableau unique_key,
346 * ainsi que l'unicite de la cle multiple unique_multiple_key.
347 *
348 * @param objet $db Objet Base de donnees
349 */
350
351 function checkUniqueKey() {
352 $unique=true;
353 //Verification des cles uniques
354 if(!empty($this->unique_key)) {
355 foreach ($this->unique_key as $constraint) {
356 if(!is_array($constraint)) {
357 if(!is_null ($this->valF[$constraint])) {
358 if(!$this->isUnique($constraint,$this->valF[$constraint])) {
359 $this->addToMessage( _("La valeur saisie dans le champ")." <span class=\"bold\">");
360 $this->addToMessage( (!defined('REST_REQUEST')) ? $this->form->lib[$constraint] : $constraint); // $this->REST
361 $this->addToMessage( "</span> "._("existe deja, veuillez saisir une nouvelle valeur.")."<br/>");
362 $unique=false;
363 }
364 }
365 } else {
366 //Verification du groupe de champs uniques
367 $oneIsNull=false;
368 if(!empty($constraint)) {
369 $valueMultiple=array();
370 foreach($constraint as $field) {
371 $valueMultiple[]=$this->valF[$field];
372 if(is_null($this->valF[$field])) {
373 $oneIsNull=true;
374 }
375 }
376 if(!$oneIsNull) {
377 if(!$this->isUnique($constraint,$valueMultiple)) {
378 foreach($constraint as $field) {
379 $temp[] = (!defined('REST_REQUEST')) ? $this->form->lib[$field] : $constraint; // $this->REST
380 }
381 $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/>");
382 $unique=false;
383 }
384 }
385 }
386 }
387 }
388 }
389 if(!$unique) {
390 $this->correct = false;
391 }
392 }
393
394 /**
395 * Methode permettant de requeter la base afin de definir la validite du champ unique
396 *
397 * @param string $champ nom du champ unique
398 * @param string $value valeur à inserer dans la colonne
399 */
400 function isUnique($champ,$value) {
401 //Test sur un groupe de champs
402 if(is_array($champ) and is_array($value)) {
403 $sql = 'SELECT count(*) FROM '.DB_PREFIXE.$this->table." WHERE ".implode(" = ? AND ",$champ)." = ?";
404 } else {
405 //Test sur un champ
406 $sql = 'SELECT count(*) FROM '.DB_PREFIXE.$this->table." WHERE ".$champ." = ?";
407 }
408 if($this->getParameter('maj')) {
409 $sql .= " AND ".$this->clePrimaire." \!= ".$this->valF[$this->clePrimaire];
410 }
411 $nb = $this->db->getone($sql,$value);
412 $this->addToLog("isUnique() : db->getone(\"".$sql."\");", VERBOSE_MODE);
413 if (database::isError($nb, true)) {
414 // Affichage de l'erreur
415 $this->erreur_db($nb->getDebugInfo(), $nb->getMessage(), '');
416 return true;
417 } else {
418 //Si superieur a 0, pas unique
419 if ($nb > 0) {
420 return false;
421 } else {
422 return true;
423 }
424 }
425 }
426
427 /**
428 * Methode de verification des contraintes not null,
429 * affiche une erreur si nul.
430 *
431 * @param objet $db Objet Base de donnees
432 */
433 function checkRequired() {
434 foreach($this->required_field as $field) {
435 //Ne test la cle primaire car n'a pas de valeur a l'ajout
436
437 // la cle primaire est automatiquement cree
438 if ($field == $this->clePrimaire) {
439 continue;
440 }
441
442 $error = false;
443
444 /* En ajout - verification des requis
445
446 Fonctionnement formel de la condition:
447
448 SI le champ n'existe pas (est 'unset')
449 OU le champ est vide
450
451 ALORS le formulaire n'est pas correct
452
453 SINON le formulaire est correct
454
455 Explication:
456
457 Les champs verifies sont les champs requis. S'ils n'existent
458 pas en ajout ou qu'ils sont vide, un message apparait a l'ecran
459 avertissant l'utilisateur que certains champs doivent etre
460 remplis.
461
462 */
463 if ($this->getParameter('maj') == 0 and
464 (!isset($this->valF[$field]) or $this->valF[$field] == '')) {
465
466 $error = true;
467 $this->correct = false;
468
469 /* En modification - verification des requis
470
471 Fonctionnement formel de la condition:
472
473 SI le champ existe (est 'set')
474 ET le champ est vide
475
476 ALORS le formulaire n'est pas correct
477
478 SINON le formulaire est correct
479
480 Explication:
481
482 Les champs verifies sont les champs requis. S'ils existent
483 et qu'ils sont vides alors un message apparait a l'ecran
484 avertissant l'utilisateur que certains champs doivent etre
485 remplis. Si ces champs sont tous saisis, le formulaire est
486 correctement soumis. Par contre, si l'un des champs requis
487 n'existe pas au moment de verification (il aurait ete 'unset'),
488 il ne sera pas verifie, n'entrainera pas de formulaire incorrect
489 et ne sera pas insere dans la base de donnees.
490
491 Faire un 'unset' permet de ne pas mettre a jour certaines
492 donnees sensibles en base a chaque soumission de formulaire.
493
494 Faire un 'unset' permet egalement d'outre passer cette condition
495 en mode de modification. On suppose qu'a l'ajout une valeur
496 a ete inseree dans un champ, et qu'il n'est plus necessaire
497 de verifier si ce champ est vide puisque sa valeur ne sera
498 pas modifiee en base. Elle sera donc conservee.
499
500 */
501 } elseif ($this->getParameter('maj') == 1
502 and isset($this->valF[$field])
503 and $this->valF[$field] == '') {
504
505 $error = true;
506 $this->correct = false;
507 }
508
509 // ajout du message d'erreur
510 if ($error == true) {
511 //$this->msg .= _('Le champ').' <span class="bold">'.($this->form->lib[$field]!=""?$this->form->lib[$field]:_($field)).'</span> '._('est obligatoire').".<br/>";
512 $this->addToMessage( _('Le champ').' <span class="bold">'.((!defined('REST_REQUEST')) ? $this->form->lib[$field] :_($field)).'</span> '._('est obligatoire').".<br/>"); // $this->REST
513 }
514 }
515 }
516
517
518
519
520
521 /**
522 *
523 */
524 function message() {
525
526 // do not output anything in case of a REST request
527 if (defined('REST_REQUEST')) {
528 return;
529 }
530
531 if ($this->msg != "") {
532
533 //
534 if ($this->correct) {
535 $class = "valid";
536 } else {
537 $class = "error";
538 }
539 $this->f->displayMessage($class, $this->msg);
540
541 }
542
543 }
544
545
546
547 /**
548 * Cette methode ne doit plus etre appelee, c'est 'message::isError($res)'
549 * qui s'occupe d'afficher le message d'erreur et de faire le 'die()'.
550 *
551 * @deprecated
552 */
553 function erreur_db($debuginfo, $messageDB, $table) {
554 if (!defined('REST_REQUEST')) { // $this->REST
555 die(_("Erreur de base de donnees. Contactez votre administrateur."));
556 } else {
557 $this->errors['db_debuginfo'] = $debuginfo;
558 $this->errors['db_message'] = $messageDB;
559 $this->addToLog("Erreur de BD pour table ".$table ." avec message: \"".$messageDB.
560 "\" et debug info \"".$debuginfo."\"", VERBOSE_MODE);
561 }
562 }
563
564
565 /**
566 *
567 */
568 function addToLog($message, $type = DEBUG_MODE) {
569 if (defined('REST_REQUEST')) { // dans le cas d'utilisation du REST $this->REST
570 logger::instance()->log("REST request class ".get_class($this)." - ".$message, $type);
571 } else {
572 logger::instance()->log("class ".get_class($this)." - ".$message, $type);
573 }
574 }
575
576 // }}}
577
578 /**
579 * Cette methode vide les valeurs des erreurs du tableau errors.
580 */
581 function clearErrors() {
582 foreach (array_keys($this->errors) as $key) {
583 $this->errors[$key] = '';
584 }
585 }
586
587 /**
588 * Méthode pour convertir une date Y-m-d en d/m/Y
589 */
590 function dateDBToForm($date) {
591 if($date == "") {
592 return "";
593 }
594 $dateFormat = new DateTime($date);
595 return $dateFormat->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