Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour
je viens de creer un fichier d'ajout d'une famille d'article cette famille dois etre fourni par un ou plusieur fournisseur
dans mon fichier j'ai lister la liste des fournisseurs et devant un checkbox si il est cocher l'identifiant de la famille et l'identifiant de fournisseur choisie doivent être stockés dans une table four_fam qui a num_four et id_fam comme attribut mais je ne sais pas commet procéder pour récupérer les valeurs de num_four si c possible
sinon avez vous d'autre idées pour faire ce travaille
merci d'avance
Hors ligne
C'est un problème de formulaire ou de base de donnée ??
Hors ligne
c'est un problème de récupération de plusieurs num_four car je dois récupérer les valeurs si les fournisseurs sont choisie et je fais une requête d'insertion de ces valeurs dans ma table . avec zend je sais pas recuperer la valeurs de check box c'est comme ça le code
<?php foreach($this->fours $four):?>
<?php echo $four['nom_four'] ?><input type ="checkbox" name="choix/>
<?php endforeach; ?>
donc à l'affichage il y a autant de check box que des fournisseur si je choisie un ou deux ou plus je dois inserer leus identifiant dans une table fou_fam
est ce possible???
est ce que je peux ajouter value à checkbox et l'associer l'identifiant de fournisseur et puis dans ma requete comment je fais??
merci de m'aidez
Hors ligne
Biensur que c'est possible de mettre value="1" dans une checkbox, c'est comme les radios et les autres elements.
ensuite, tu fais une boucle sur tes elements et tu fais tes INSERT (je ne sais pas si tu utilises Zend_Db ou autre..) pour chaque ligne.
Hors ligne
Remplace
<?php echo $four['nom_four'] ?><input type ="checkbox" name="choix/>
par
<?php echo $four['nom_four'] ?><input type ="checkbox" name="choix[]" value="$four['nom_four'] "/>
apres soumission du formulaire, ta variable CHOIX est un array avec comme valeur les nom_four cochés
Hors ligne
c à d j'écris value="<?php echo $four['num_four'];?> "
et puis il reste le problème de tester le fournisseur choisie
je peux faire : if(choix1=="true")
et pour avoir un nom diffirent dans mes checkbox je peux faire come ça
<?php $i=0?>
<?php foreach($this->fours $four):?>
<?php echo $four['nom_four'] ?><input type ="checkbox" name="choix<?php $i>" />
<?php $i++?>
<?php endforeach; ?>est ce peux marcher??? ou c'est faux
et puis dans la variable value de checkbox sera true ou false et ce n'est pas le num_four ??
comment peut je sortir???
Dernière modification par yosra (31-03-2008 16:45:59)
Hors ligne
Le nombre de nombre ?? (je m'y perds)
Je ne comprends pas ce que tu veux tester.
Tu écris ce que ndesaleux t'as donné.
Quand ton formulaire est posté, il te suffit de parcourir ton tableau choix[] pour savoir qui a été selectionné.
Si un checkbox n'est pas selectionné, il n'apparaitra tout simplement pas dans le tableau.
Eventuellement, isset est une bonne chose aussi :
if (isset choix[42]) echo 'ok';
Hors ligne
oui désolé j'ai tromper
merci pour le code ndesaleux je comprend le chamanisme de choix[] si on n'a pas coché le check box il ne sera pas dans la liste.
maintenant pour l'insertion j'ai trouver un autre problème j'ai dis dés le debut que le num_four et le id_fam seront stocker dans une table four_fam dans la qu'elle les fournisseurs coché et le id_fam de la famille à ajouter mais comment j'insère le id_fam et elle n'est pas encore créer est ce que je peux faire la requete d'ajout dans la table four_fam après l'insertion de la nouvelle famille dans la table famille
désolé ,je questionne beaucoup
Hors ligne
je crois que je dois changer l'esprit
je dois creer d'abord ma famille dans une page puis dans une autre page je fais une liste deroulante ou en choisie la famille
et on attribut les fournisseurs cochés
donc je boucle et j'insère sur les fournisseurs choisie dans la table four_fam avec l' id de la famille choisie .
Hors ligne
ton code HTML devrait te donner
<ul> <li>marchand 1<input type="checkbox" name="choix[]" value="marchand 1" checked="checked" /></li> <li>marchand 2<input type="checkbox" name="choix[]" value="marchand 2" /></li> <li>marchand 3<input type="checkbox" name="choix[]" value="marchand 3" checked="checked" /></li> ... <li>marchand n<input type="checkbox" name="choix[]" value="marchand n" /></li> </ul>
avec un code TPL de type:
<ul> <?php foreach($cFour as $oFour): ?> <li><?php echo $oFour->nom ;?><input type="checkbox" name="choix" value="<?php echo $oFour->id;?>" <?php if ( $oFour->hasFam($oFam->id) ){echo 'checked="checked"}?> /></li> <?php endforeach; ?> </ul> <input type="hidden" name="iIdFam" value="<?php echo $oFam->id; ?>" />
Ton code PHP devrait resembler à un truc du genre
foreach( $_POST['choix'] as $iIdFour){ $oFour =new fournisseur($iIdFour); $oFour->hadFam($_POST['iIdFam']); // ajoute une association Famille de produit / Fournisseur $oFour->update(); // mais a jour le fournisseur ainsi que les associations famille / fournisseur }
Le code donné n'est pas adapté à ton code existant mais l'idée est la.
Hors ligne
merci beaucoup ndesaleux de ce code j'ai essayer de s'inspirer de ton code
voici mes codes
1_fichier html :
<tr><td> <?php foreach($this->fours as $four):?></td></tr> <tr><td class="detailfour1"> <?php echo $four['nom_four'];?>:<input type ="checkbox" name="choix" value="$four['num_four']{echo 'checked="checked"} "/></td></tr> <?php endforeach; ?> <tr><td class="detailfour1">Nom famille</td><td class="detailfour1"> <select id="famille_select" name="famille_select"> <option value="">_ _ Liste des familles _ _</option> <?php foreach($this->famille as $fam):?> <optgroup label="<?php echo $fam['nom_fam'];?>"></optgroup> <option value="<?php echo $fam['id_fam'];?>" ><?php echo $fam['nom_fam'];?></option> <?php endforeach; ?> </select></td> <tr><td >
la liste des familles sont disponible dans une liste deroulate donc on choisir la famille puis on choisie les fourisseurs voulue
2-code php dans index controllers
if ($this->_request->isPost()) { Zend_Loader::loadClass('Zend_Filter_StripTags'); $filter = new Zend_Filter_StripTags(); $famille_select = trim($filter->filter($this->_request->getPost('famille_select'))); $choix = trim($filter->filter($this->_request->getPost('choix'))); ////////***Les test**////////// if ($famille_select !='' && $choix!='') { foreach( $_POST['choix'] as $iIdFour){ $data = array( 'id_fam' => $famille_select, 'num_four' => $iIdFour, ); $fourfam = new Fourfam(); $fourfam->insert($data); } $this->_redirect('/'); return; } else { echo" Vous devez remplir tous les champs !"; }
si je choisie une famille de la liste et je coche un ou deux fournisseur il y a un chargement dans la page mais lorsque je consulte ma base(PhpMyadmin) je constate que les identifiant des fournisseur et de la famille ne sont pas insérer dans la table four_fam
???
est ce que il y a une faute dans mon code ???
Hors ligne