Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1356 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Champs input vers Array PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Champs input vers Array PHP

n°2209330
mftech
Posté le 05-11-2013 à 17:10:41  profilanswer
 

Bonjour à tous
 
J'ai une question à propos des tableaux en PHP et de leurs interactions avec des éléments de formulaire en HTML.
 
Je souhaiterai, à partir de plusieurs éléments de formulaire (input type="text", input type="checkbox" ) remplir un ou plusieurs tableaux (array) PHP dans le but d'obtenir à la fin une variable qui contient  
 
x (qte de produit) produits A
y produits B
z produits C
 
Pour cela, voici mon code HTML
 

Code :
  1. <input type="text" name="QteMateriel[]" size="3"><input type="checkbox" name="Materiel[]" id="1" value="Produit A" /> Produit A <br />
  2. <input type="text" name="QteMateriel[]" size="3"><input type="checkbox" name="Materiel[]" id="2" value="Produit B" /> Produit B <br />
  3. <input type="text" name="QteMateriel[]" size="3"><input type="checkbox" name="Materiel[]" id="3" value="Produit C" /> Produit C <br />


 
Et le résultat :
 
http://img11.hostingpics.net/thumbs/mini_641344Capturehtml1.png
 
 
Et mon code PHP pour la récupération des données dans le formulaire
 
 

Code :
  1. foreach($_POST['QteMateriel'] as $value )
  2.     {
  3.        echo $value;
  4.     }
  5. foreach($_POST['Materiel'] as $value )
  6.    {
  7.       echo $value . '<br />';
  8.    }


 
 
Dans mon formulaire, je rentre :
 

  • Dans le textbox du produit A la valeur 1 (et je coche la case)
  • Dans le textbox du produit B la valeur 2 (et je coche la case)


Mais le résultat escompté n'est pas la, j'obtiens :
 
12Produit A
Produit B
 
 
D'ou pourrait venir l'erreur ?  
 
Merci beaucoup à tous  :bounce:  

mood
Publicité
Posté le 05-11-2013 à 17:10:41  profilanswer
 

n°2209331
rufo
Pas me confondre avec Lycos!
Posté le 05-11-2013 à 17:19:38  profilanswer
 

T'as pas mis <br /> après le $value dans ta première boucle ;)
 


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2209341
MaybeEijOr​Not
but someone at least
Posté le 05-11-2013 à 18:37:43  profilanswer
 

Cela ne changera pas grand chose, le résultat obtenu est celui attendu. Ce que tu voudrais c'est que ça t'affiche la Qté1 puis le produit1 puis Qté2 puis produit2 etc.
Là tu demandes avec tes boucles d'afficher :
Boucle 1 : Qté1 puis Qté2 etc.
PUIS
Boucle 2 : produit1 puis produit2 etc.
 
Il faut que tu fasses une seule boucle qui affiche à chaque pas Qtéx puis Produitx.
 
 
 
Mais bon ça ne marchera toujours pas dans le cas où l'utilisateur mets une qté dans la première case, coche "produit A" puis mets une quantité dans la deuxième case et coche "produit C". En effet tu ne lies pas tes champs.

n°2209357
mftech
Posté le 05-11-2013 à 22:32:54  profilanswer
 

rufo a écrit :

T'as pas mis <br /> après le $value dans ta première boucle ;)
 


 
Merci pour ton aide, je n'avais pas vu cette petite coquille :)
 

MaybeEijOrNot a écrit :

Cela ne changera pas grand chose, le résultat obtenu est celui attendu. Ce que tu voudrais c'est que ça t'affiche la Qté1 puis le produit1 puis Qté2 puis produit2 etc.
Là tu demandes avec tes boucles d'afficher :
Boucle 1 : Qté1 puis Qté2 etc.
PUIS
Boucle 2 : produit1 puis produit2 etc.
 
Il faut que tu fasses une seule boucle qui affiche à chaque pas Qtéx puis Produitx.
 
 
 
Mais bon ça ne marchera toujours pas dans le cas où l'utilisateur mets une qté dans la première case, coche "produit A" puis mets une quantité dans la deuxième case et coche "produit C". En effet tu ne lies pas tes champs.


 
Merci pour tes observations et tu as devancé ma prochaine question toujours en rapport avec les quelques lignes de scripts ci-dessus. J'ai remarqué exactement les mêmes symptômes en cas de saisie incorrecte (volontaire ou non), c'est à dire des décalages entres les quantités et les noms de produits SI le formulaire est mal renseigné.
 
Pourrais-tu me dire dans les grandes lignes que faut t'il faire pour résoudre ce problème ? Ou mieux de la documentation (toujours mieux pour apprendre et comprendre nos erreurs)  
 
D'avance, merci à tous :)

Message cité 1 fois
Message édité par mftech le 05-11-2013 à 22:33:24
n°2209371
rufo
Pas me confondre avec Lycos!
Posté le 06-11-2013 à 09:25:14  profilanswer
 

Pour rappel,  une case à cocher non cochée n'est pas envoyée au serveur, contrairement à un input type "text" qui serait vide...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2209376
MaybeEijOr​Not
but someone at least
Posté le 06-11-2013 à 10:15:26  profilanswer
 

Tu pourrais faire (à tester, je n'ai jamais essayé) :
 

Code :
  1. <input type="text" name="Materiel[0][]" size="3"><input type="checkbox" name="Materiel[0][]" id="1" value="Produit A" /> Produit A <br />
  2.     <input type="text" name="Materiel[1][]" size="3"><input type="checkbox" name="Materiel[1][]" id="2" value="Produit B" /> Produit B <br />
  3.     <input type="text" name="Materiel[2][]" size="3"><input type="checkbox" name="Materiel[2][]" id="3" value="Produit C" /> Produit C <br />


 
Après dans le php tu vérifies si pour chaque dimension de premier ordre il existe 2 valeurs.

n°2209425
Buldozerbe​n
Shizofan !
Posté le 06-11-2013 à 15:57:53  profilanswer
 

mftech a écrit :


 
Merci pour tes observations et tu as devancé ma prochaine question toujours en rapport avec les quelques lignes de scripts ci-dessus. J'ai remarqué exactement les mêmes symptômes en cas de saisie incorrecte (volontaire ou non), c'est à dire des décalages entres les quantités et les noms de produits SI le formulaire est mal renseigné.


 
Il faut, à ce moment là, faire des contrôles de champs (si le champs a des lettres au lieu de chiffres, pas bon, si le champs est vide, etc)
 

mftech a écrit :


Pourrais-tu me dire dans les grandes lignes que faut t'il faire pour résoudre ce problème ? Ou mieux de la documentation (toujours mieux pour apprendre et comprendre nos erreurs)  
 
D'avance, merci à tous :)


 
Juste une idée Pourquoi ne pas mettre une liste déroulante de 0 à X chiffres. Si il y a 0 tu ne le prends pas en compte sinon tu le comptabilises !
 


---------------
Topic Ach/Vds/Ech jeux vidéo
n°2216486
quanph0211​84
Posté le 17-01-2014 à 17:35:00  profilanswer
 

J'ai une idée qui est proche de la version initiale, ce n'est pas génial mais ça répond à la question :)
n'oublies pas des tests existants des variable, ainsi que leur valeurs.  
 

Code :
  1. <?php
  2. if (isset($_POST) && isset($_POST['Materiel'])){
  3. foreach($_POST['Materiel'] as $name1 => $value_checkbox){
  4.  $output = '';
  5.  $name_input = "QteMateriel".$value_checkbox;
  6.  $name_hidden = "hiddenMateriel".$value_checkbox;
  7.  foreach($_POST as $name2 => $value_input){
  8.   if ($name2 == $name_input && $value_input != ''){
  9.    $output = $value_input. " ".$_POST[$name_hidden];
  10.   }
  11.  }
  12.  echo $output."<br/>";
  13. }
  14. }
  15. else{
  16. ?>
  17. <form method="post">
  18. <input type="text" name="QteMaterielA" size="3">
  19. <input type="checkbox" name="Materiel[]" id="1" value="A" /> Produit A <br />
  20. <input type="hidden" name="hiddenMaterielA" value="Produit A"/>
  21. <input type="text" name="QteMaterielB" size="3">
  22. <input type="checkbox" name="Materiel[]" id="1" value="B" /> Produit B <br />
  23. <input type="hidden" name="hiddenMaterielB" value="Produit B"/>
  24. <button type="submit">Submit</button>
  25. </form>
  26. <?php
  27. }?>


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Champs input vers Array PHP

 

Sujets relatifs
Help [PHP/MySQL] et programmation de jeuArray sort_by Boolean
Comment additionner les valeurs d'input?Array, conversion
PHP Fatal error: Class 'DoctrineBundleFixturesBundle not found[PHP] Script de remplissage de base de données
Logiciel Gratuit Pour Sites en PHPRefresh et passage de var vers un include
copier des lignes sous condition vers autre feuille[PHP] Upload multiples : variables ne passent pas si trop de volume
Plus de sujets relatifs à : Champs input vers Array PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR