salut!
Voilà mon problème: dans un formulaire j'ai un champ renseigné par l'utilisateur. Avec ce champ, le script php va faire une requête dans la base et ramène des infos que j'affiche dans la même page dans des champs prévus à cet effet. Rien de plus simple!
L'exemple ci dessous illustre ce que je fais:
Pour l'exemple je me contente d'aller vérifier que le champ est bien dans la base et je veux le réafficher dans le deuxième textfield du formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 $myproduct = isset($_REQUEST['txtSource'])?$_REQUEST['txtSource']:''; $form = new HTML_QuickForm('frm', 'POST'); if($myproduct != "") { // équivalent à select productname from products where productname = $myproduct $c = new Criteria(); $c->add(ProductsPeer::PRODUCTNAME, $myproduct); $product = new Products(); $product = ProductsPeer::doSelectOne($c); $productName= array('value' => $product->getProductName()); } $form->addElement('text', 'txtSource', "Input"); $form->addElement ('submit', 'btnSubmit', "Submit"); $form->addElement('text', 'txtProductName', 'product name', $productName); //$form->setDefaults($defaults); $form->display();
Le code dans le if utilise propel/creole pour communiquer avec la base, mais c'est secondaire: il fonctionne, la BDD renvoi bien ce que je veux.
Ce que je n'arrive pas à faire, c'est changer le "value" du deuxième textfield construit avec addElement. Pourtant le tableau associatif $productName n'est pas vide!
Si au lieu de $productName je lui passe en dur un truc comme array('value' => 'myvalue') le champ texte aura bien la valeur "myvalue" à l'affichage. C'est à n'y rien comprendre.
Ca doit être une erreur très bête, mais j'ai beau chercher, je ne vois pas.
En utilisant setDefaults plutôt que array('value' =>...) etc, ca fait de toutes façons la même erreur.
Please help!!
Partager