Accueil > Forum > > > > Boucle sur un formulaire ou il manque un élément.
Boucle sur un formulaire ou il manque un élément.
samedi 21 juin 2008 à 16:29:58 |
Boucle sur un formulaire ou il manque un élément.

lolowar
|
Bonjour tout le monde, Alors je ne sais pas trop si c'est le soleil qui me tape trop sur la tete aujourd'hui, mais pas moyen de résoudre un truc qui me semble simple. Voila, pour un pressing je dois faire une liste de vetements (chemise, pull...). Cette liste est dans ma BDD. J'affiche donc la liste via une boucle, ainsi qu'une CheckBox et un Input. Si le client veut un article (chemise par exemple) il coche la checkbox, et tape le nombre d'article dans l'input. Alors ok pour l'affichage de la liste, ok pour la boucle de la checkbox (il m'affiche bien seulement ceux cochés) mais pas moyen de faire rentrer dans la boucle l'input. Par exemple le premier vêtement coché (anorak ici) obtiendra bien le nombre voulu, mais pour les autres rien. Et je précise que c'est seulement le premier de la liste qui marche bien, et non le premier coché (si je coche le deuxième ça ne marche pas). Donc je dois me gourer quelque part dans ma boucle mais j'ai beau chercher là je sèche, alors si quelqu'un peut m'éclairer... Sachant qu'un fois cela fait je vais devoir multiplier le prix des vetements par le nombre de ce fameux imput pour faire un sous total, puis à la fin un total complet, mais c'est une autre histoire. Voici mon code, et merci d'avance... La boucle qui récupére les données: <?php $vet = $_POST['vetement']; $NBvet = $_POST['NBvetement']; if (isset($_POST['vetement'])) { echo "Vous avez choisi :"; for ($i = 0, $c = count($vet); $i < $c; $i++) { echo "<br/><b>" .$vet[$i]. "</b>"; echo " x "; echo "<b>" .$NBvet[$i]. "</b>"; } } ?> Et le fomulaire issu de la BDD: <?php while($Pressing = mysql_fetch_array($PressingList)) { $tab = $Pressing['vetement_p']; $tab2 = $Pressing['tarif_p']; $tabid = $Pressing['ID_pressing']; echo "<tr >"; echo "<td > $tab </td>"; echo "<td > $tab2 ¤ </td>"; echo "<td ><input name='vetement[]' type='checkbox' value='".$tab."' /></td>"; echo "<td >x <input name='NBvetement[]' type='text' size='2' value='' /></td>"; echo "</tr>"; } ?> Lolo 
|
|
samedi 21 juin 2008 à 17:40:30 |
Re : Boucle sur un formulaire ou il manque un élément.

Evangun
|
Hello,
fait des print_r( ) de tes tableaux et tu verras bien d'où vient l'erreur.
à+
|
|
samedi 21 juin 2008 à 19:03:47 |
Re : Boucle sur un formulaire ou il manque un élément.

nicomilville
|
Evangun ++ Tu peus aussi faire un var_dump des tableau je crois... a++ Si la réponse vous convient, pensez : Réponse acceptée ! 
|
|
samedi 21 juin 2008 à 19:40:49 |
Re : Boucle sur un formulaire ou il manque un élément.

JoJo738
|
Hello ! Petes critiques sur ton code ^^ Tu ne sécurises pas tes variables $_POST ! Hyper facile à piraté ... Oh, et tester l'existance d'une variable apres l'avoir demandé, c'est pas bon. Inverse à la rigeur ton $vet = [...]; et ta condition) Utilise isset(), intval(), htmlentities(), ... Et evite de mettre une fonction dans ta boucle for (je parle du count(), ici). Crée une variable avant, tu gagneras en temps d'execution. Tu peux mettre (vivement recomandé) des simple quote ( ' ) à la place des doubles quotes ( " ) dans tes echo ; tout comme une virgule à la place des points (seulement pour echo) Après, je vois pas vraiment ton problème ... :s Oui, utilise un print_r($_POST); pour voir tes valeurs ... Sinon, petit code pédagogique ... je ne sais pas si il mùarche, c'est fai à la va vite ^^ (je m'ennuiyais ^_____^) : <?php
# TRAITEMENT $produits=array(); $error=null;
// Le formulaire à été envoyé if(isset($_POST['infos'])) { // Les données retournée doivent être sous la forme d'un array if(is_array($_POST['infos'])) { // On fait une boucle pour lire les infos // Les infos sont evoyées de la forme " infos[$KEY][0] = $VAL ". $key est donc l'id du produit foreach($_POST['infos']as$key=>$val) { // On force le type numerique pour le nombre de produit $val[1]=intval($val[1]); // On protége le nom du produit et on le "decode()" $val[0]=htmlspecialchars(urldecode($val[0])); // Erreur formulaire : il n'existe pas l'une des informationsd demandées if(!isset($val[0],$val[1])) { $error='Erreur'; continue; } // Tout s'est bien déroulé, on enregistre l'information ! $produits[]='<strong>'.$val[1].' </strong> * '.$val[0]; } } else { $error='Erreur formulaire'; } }
// On regarde le code retour // Il n'y à pas d'erreur ;) if(!$error) { // On liste els produits. // Implode() permet de lister toutes les valeurs de l'Array() en y insérant une chaine séparatrice. Ici on obtient une jolie liste à puce echo'Vous avez choisis : <br /><ul>',implode('</li></li>',$produits),'</ul>'; } else { echo$error; }
# FORMULAIRE
while($row=mysql_fetch_assoc($query)) { // l'ID du vetement, que l'on encode pour la sécurité et protéger le code // Perso, ici je conseil un ID numeric, c'est plus simple, permet une plus grande sécurité (un intval()) et les données sont automatiquement numéric, donc plus de sécurité ;) // Il n'y as pas un champs Id_vetement ? // ou alors, plus simple un $i (incrémenté à chaque boucle) $vetementId=urlencode($Pressing['vetement_p']);
echo<<< EOS <tr> <td>{$Pressing['vetement_p']}</td> <td>{$Pressing['tarif_p']} €</td> <td><input name="infos[{$vetementId}][0]" type="checkbox" value="{$Pressing['vetement_p']}" /></td> <td><input name="infos[{$vetementId}][1]" type="text" value="" size="3" /></td> </tr> EOS; // Là, on met dans un même formulaire, sous le nom INFO toutes les valeurs que l'on veut récupérer, pour pouvoir les récupérés sous la forme d'un Array() (-> $_POST['infos'] = array()) }
?>Petite note : echo <<< EOS EOS;
(faire TRES attention à cette mise en forme, il faut mettre impérativement un saut de ligne apres le premier <<< EOS et avant le dernier (aucun espace entre le saut à la ligne et le EOS;) Cest ni plus ni moinsqu'un echo normal mais avec une convention (typage du text) (tu as des équivalents avec SQL, EOSPAGE, ...)
Si ma reponse te convient, merci de l'accepter ! 
|
|
dimanche 22 juin 2008 à 17:18:57 |
Re : Boucle sur un formulaire ou il manque un élément.

lolowar
|
Un grand merci a vous les gars et particulièrement a toi Jojo!!!!! Le hic c'est que je ne crois pas que ce soit ça. Par contre pour toi Jojo, outre un grand grand merci, tout ça dépasse mes compétences pour le moment, mais je le garde sous la main pour faire des recherches afin de le comprendre, donc vraiment merci. En fait pour mon problème, pour faire simple, j'ai sur une ligne une checkbox, et en face un imput (qui reçoit une valeure numérique, 2, 4, 88...). Il y a autant de checbox et d'imput que de vetement dans le pressing, le tout généré par une boucle, là c'est ok. Ce que je veux, c'est que lorsque la checkbox est cochée, qu'il me rapporte le vetement concerné (ça c'est ok) ainsi que la valeur rentrée dans l'input (genre 2, 5...) et c'est là que ça bloque. Impossible de récupérer ça. Le mieux que j'arrive a faire est de faire marcher le script mais avec la première valeure oubliée avec ça: <?php $vet = $_POST['vetement']; $NBvet = $_POST['NBvetement']; $totalart = count ($vet); if (isset($_POST['vetement'])) { echo "Vous avez choisi :"; for ($i = 0, $c = count($vet); $i < $c; $i++) { echo "<br/><b>" .$vet[$i]. "</b>"; echo " x "; echo "<b>" .$NBvet[$i]. "</b>"; } echo "<br> Au total " .$totalart. " types d'articles"; } ?> (Alors pour Jojo, je met les verif, mais là pour faire simple j'ai mis le minimum). Donc voila, une ligne, avec une checkbox et un input, si la checkbox renvoi "on" alors prendre l'id du vetement (ok) ainsi que la valeur de l'input (et c'est là que je bloque)... En tout cas merci pour tout. PS: j'ai bien fait le print-r, mais il me renvoi toute une série de chiffre meme s'ils ne sont pas rentrés.... Lolo 
|
|
dimanche 22 juin 2008 à 19:05:03 |
Re : Boucle sur un formulaire ou il manque un élément.

JoJo738
|
Hum ... En fait, mon script est je pense ce que tu veux faire (faut faire gaffe aux espaces manquants ... si tu test normalement ça va buguer ... faut en rajouté après les echo) Sinon, je vais tester ton script ce soir et je te tiens au courant. (même si je pense que ça devrait normaleent fonctionner ...bizzar :s ) Si ma reponse te convient, merci de l'accepter ! 
|
|
dimanche 22 juin 2008 à 21:23:34 |
Re : Boucle sur un formulaire ou il manque un élément.

JoJo738
|
Réponse acceptée !
Ahhhhhhhhhh !!! Oui, c'est bon j'ai trouvé ;) C'était tout bête : tu ne peux pas faire comme ça ... En fait, tu dois dans ce cas là, soit utiliser ma méthode (avec name_input[$ID][0/1]) soit transformer legerement ton code. Dans ce dernier cas, tu dois transmettre un ID (un peu comme la 1er méthode) Regarde le code : if ( isset($_POST['vetement'], $_POST['NBvetement']) ) { $vet = $_POST['vetement']; $NBvet = $_POST['NBvetement']; if( is_array($vet) && is_array($NBvet) ) { $totalart = count($vet); echo 'Vous avez choisi :<ul>'; // foreach est une fonction équivalente à for ou While, mais plus puissante. foreach( $vet as $key => $value ) { // Il faut vérifier que l'équivalent ($NBvet[$key]) existe, sinon on passe // Ici, $value est la valeur de $_POST['vetement'][$key] if( !isset($NBvet[$key]) ) { continue; } echo '<li><strong>', $value, '</strong> x <strong>', $NBvet[$key], '</strong>'; }
echo '</ul><br/> Au total <strong>', $totalart, '</strong> articles sélectionnés';
} else { echo 'Erreur !'; } }
echo '<form action="?" method="POST"><table>';
while($Pressing = mysql_fetch_array($PressingList)) { $tab = $Pressing['vetement_p']; $tab2 = $Pressing['tarif_p']; $tabid = $Pressing['ID_pressing']; // ID_pressing ??? C'est l'équivalent de ID_vetement ... ?
echo "<tr >"; echo "<td > $tab </td>"; echo "<td > $tab2 ¤ </td>"; echo "<td ><input name='vetement[".$tabid."]' type='checkbox' value='".$tab."' /></td>"; echo "<td >x <input name='NBvetement[".$tabid."]' type='text' size='2' value='' /></td>"; echo "</tr>"; }
echo '</table></form>';
Si ma reponse te convient, merci de l'accepter ! 
|
|
mardi 24 juin 2008 à 15:46:41 |
Re : Boucle sur un formulaire ou il manque un élément.

lolowar
|
Super!!! merci Jojo!!!! vraiment un immense merci!!! Tu me sors un grosse épine du pied. J'ai toujours bloqué sur les tableaux et les bouquins que j'ai se cantonent a ne mettre que des exemples sans boucles, ou avec des valeurs déclarées (visibles) genre " Array (pull =>rouge,...)". Bref là ça marche au poil et vraiment un grand grand merci. Je vais l'adapter, car suite a cetet liste là il y a quatres autres lites dans la foulée (là il n'y a que vetement, mais après il y a linge, repassage, retouches...). Puis je vais le compléter avec une multiplication du prix de l'article par la quantitée, ça va me donner un sous total. Puis je ferai un total des sous totaux pour le prix final. Je le posterai ici, ça sortira du sujet mais si ça peut aider quelqu'un. En tout cas Jojo je te suis infiniment reconnaissant. Je viens de voir que tu n'avais que 17 ans, t'as de l'avenir en tout cas. Encore merci!!!! PS: désolé pour la réponse tardive, crétin.fr a fait des siennes... Lolo 
|
|
mardi 24 juin 2008 à 16:01:42 |
Re : Boucle sur un formulaire ou il manque un élément.

JoJo738
|
Plop ;) ^______^ Bah, avec ce que tu veux faire, c'est pas bien compliqué ... une petite multiplication, des additions. La seule difficulté ça va être avec le prix (tu dois faire une requete pour récupérer le prix (c'est pas sûr si on passe par un formulaire ...) puis tu mets tout dans un tableau et avec une recherche ID (produit). 17 ans ? ah oui ^^ c'est jsute que mes 18 sont dans quelques jorus ... ça me semble déjà si loin mes 17 printemps ;) Et pis, il y a (bien) meilleur que moi .... je ne suis qu'autodidacte (j'ai pas pris de cours) je dois encore m'améliorer ;) Si ma reponse te convient, merci de l'accepter ! 
|
|
mardi 24 juin 2008 à 16:20:44 |
Re : Boucle sur un formulaire ou il manque un élément.

lolowar
|
Alors bon anniversaire pour dans qq jours lolllll Moi c'est trente dans qq jours, et je suis bien moins bon que toi (bon j'avais débuté seul aussi, puis j'ai relaché pendant 9 mois là, du coup tout perdu, mais les array ont tjs été ma bête noire). Pour répondre a ton message, oui je récupére les tarifs via ma boucle, en gros j'ai l'ID, le nom du vetement et le tarif, c'est $tab2 qui vaut $Pressing['tarif_p'];while($Pressing = mysql_fetch_array($PressingList)) { $tab = $Pressing['vetement_p']; $tab2 = $Pressing['tarif_p']; //ICI $tabid = $Pressing['ID_pressing']; // ID_pressing ??? C'est l'équivalent de ID_vetement ... ? Donc je le multiplis par la veleur de l'input correspondant, et à la fin je récupére tout pour l'addition. Je fais ça sans doute demain et je le poste là. Encore merci pour tout!!! et fêtes bien tes 18 ans!
Lolo 
|
|
Cette discussion est classée dans : boucle, checkbox, liste, echo, pressing
Répondre à ce message
Sujets en rapport avec ce message
boucle [ par toto99 ]
voila je recupe des dates dans une liste deroulante suvant un choix qui ce trouve dans une autre liste deroulante, tous les deux sont alimenter par un
Probleme avec une liste <SELECT> </SELECT> [ par softflower ]
J'ai un enorme probleme, dans une de mes pages php je fais intervenir une liste que je rempli avec des info se trouvant sur une base de données. La l
submit ne renvoyant pas valeur d'une liste déroulante dans $_POST [ par dubitoph ]
ChristopheBonjour,Je suis dans une impasse. Dans le cadre d'une agence d'interim, un intérimaire peut, avant son inscription dans l'agence, avoir déjà
Listes dynamiques. [ par Jouban ]
Bonjour à tous!J'utilise des listes dynamiques avec utilisation d'une BD.Le principe est la consultation de noms (présents dans la base) en fonction d
Checkbox [ par tritum ]
TRITUMBonjour; Pour résumer, j'ai un formulaire avec une liste de checkbox, le choix de plusieurs checbox devra engendrer une autre liste de checkbox
insertion d'un lien dans une liste déroulante [ par dev10 ]
salut à tous,je suis en train de faire un qcm, et j'aurais besoin d'un coup de mains!!je souhaite insérer des données sous forme de lien dans une list
help checkbox et SQL [ par youfoux ]
Bonjour,voilà que je peine depuis quelques jours sur un suci de requete.En fait je souhaite executer une requete SQL qui contient dans le select les c
Afficher la sélection d'une liste déroulante !!! Help !!! [ par merlinwap ]
Salut à tous,Point qui fonctionne : J'ai une liste déroulante qui est alimentée par une requete.Point qui ne fonctionne pas :Après avoir sélectionné u
checkbox dans un tableau [ par titigrou ]
kikou a tous!!!j'ai regardé un peut partout sur le site mais je n'ai pas trouvé mon bonheur... :(je demande votre aide!!!je voudrais savoir comment on
Concaténation de nom de variables ! [ par fil ]
Concaténation de nom de variables !bonjour j'ai un petit problème je voudrais creer des noms de variable dynamiquement dans une boucle :J'ai des varia
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
XML ET PHPXML ET PHP par karouani
Cliquez pour lire la suite par karouani
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|