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

  FORUM HardWare.fr
  Programmation
  PHP

  $_GET, foreach et array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

$_GET, foreach et array

n°2143960
scribou
Posté le 29-05-2012 à 14:59:54  profilanswer
 

Bonjour à tous,  
 
J'ai exécuté un bout de code qui à marché à la première exécution (peut-être par miracle) mais depuis il ne m'affiche plus le résultat attendu ...
 
Le code doit récupéré les valeurs de toutes les checkbox (mais ce nombre est indéterminé car il est dans une boucle qui peut variée) d'un formulaire, leur attribué une variable d'un tableau (array) mais il ne prend malheureusement que la dernière en compte sans que je n'arrive à comprendre pourquoi ...
 
Voici le code :

Code :
  1. if(isset($_GET['insert']))
  2. {
  3.  $_GET = array_map('htmlentities', $_GET); // on applique la fonction htmlentities() sur chaque donnée du tableau $_GET
  4.  $a = array(); // on initialise notre tableau de destination
  5.  $i = 0; // notre variable qui sera incrémentée dans la boucle
  6.  foreach($_GET as $corrective) { // pour chaque valeur du tableau $_GET on crée une variable $var
  7.  $a[$i] = $corrective; // on met la valeur dans le tableau avec la valeur de $i
  8.  $i++; // on incrémente
  9.  }
  10.  print_r($a); // on affiche le tableau (vérification)
  11. }


 
 
Voici l'URL que j'ai pour l'affichage de la page (pour voir les variables):
 http://127.0.0.1/ajoutCorrectiveNo [...] es1&insert
 
 
Et voici ce que j'obtiens sur cette page :
 Array ( [0] => Londres1 [1] => )  
 
Si quelqu'un pouvait éclairé ma lanterne j'en serai ravis parce que la je ne comprend pas pourquoi ça a marché une fois et une seule :/

mood
Publicité
Posté le 29-05-2012 à 14:59:54  profilanswer
 

n°2143966
rufo
Pas me confondre avec Lycos!
Posté le 29-05-2012 à 15:38:07  profilanswer
 

Une url locale, on va aps en faire grand chose :/
 
Pour info, t'as pas besoin de $i. Tu peux faire un simple $a[] = $corrective;
 
Maintenant, si tu t'attendais à avoir tes 2 villes dans un tableau, tu t'y prends mal...
 
Déjà, par l'appel dans l'url (en faisant comme ça, la 2ème valeur de corrective écrase la première, mais aussi quand tu parcours $_GET. St corrective était déclarée en tant que tableau dans le $_GET, faudrait faire ta boucle sur $_GET['corrective'] et non sur tout le contenu de $_GET...
 
Si $_GET vient d'un formulaire, $_POST serait plus approprié pour envoyer tes données.


---------------
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°2143971
scribou
Posté le 29-05-2012 à 15:56:53  profilanswer
 

Ah désolé je pensais que l'URL s'afficherai en entier, parce que je sais bien que le lien ne marcherait pas mais c'était juste pour que vous ayez une vision de ce que le formulaire me renvoi ;)
Je pensais bien à le faire en $_POST mais étant donné que je ne sais pas combien de valeurs vont être envoyées, il me paraissait plus simple le faire avec un $_GET qui aurait pu me permettre de "parcourir" mon URL pour trouver toutes les différentes valeurs cochées.
 
Erreur de ma part, mes checkbox vont maintenant s'appeler corrective1, corrective2 etc.  
Et apparemment maintenant ça marche, mais je ne comprend pas vraiment pourquoi puisque je n'ai rien changer à part le nom de checkbox ...

n°2143988
rufo
Pas me confondre avec Lycos!
Posté le 29-05-2012 à 16:53:01  profilanswer
 

2 paramètres avaient le même nom, ce qui n'est pas possible. Le 2ème écrase donc le 1er.
 
Pour info, la méthode post permet d'envoyer beaucoup plus de données que get (limitée à 2 ko, si je me souviens bien, mais dépend aussi du navigateur web). POST est donc mieux.
 
Tu peux tout à fait avoir un même nom pour des checkbox mais dans leur name, faut mettre "corrective[]" et non juste "corrective". Les [] indique au navigateur qu'il s'agit d'un tableau. Côté php, tu pourras donc traiter ce paramètre comme un tableau (donc une boucle). Pas besoin de donner autant de name différents que de checkbox.
 
EDIT : un conseil, tu devrais apprendre les bases du html et php, ça t'éviterait de perdre du temps sur des trucs comme ça... ;)


Message édité par rufo le 29-05-2012 à 16:53:47

---------------
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°2144032
scribou
Posté le 30-05-2012 à 08:48:23  profilanswer
 

Ok merci encore pour toutes ces infos Rufo !
J'ai modifier ce qu'il fallait et ça fonctionne parfaitement maintenant ;)
 
Je sais bien que mes bases sont à revoir et je fais ce que je peux mais je suis obligé d'avancer dans mon projets, tout en revoyant les bases donc c'est pas simple, mais je retiens toutes mes erreurs et ça me permet de réapprendre un peu les bases :D

n°2144037
rufo
Pas me confondre avec Lycos!
Posté le 30-05-2012 à 09:35:35  profilanswer
 

Un conseil, revoir tes bases avant de poursuivre tes projet te fera GAGNER du temps et non en perdre ;)


---------------
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

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

  $_GET, foreach et array

 

Sujets relatifs
Bien sécuriser les variables GETPHP et Array
Script générant du JS => accès à $_GET de la page appelante ?définir une taille pour mon array
maîtrise de Get dans URL[PHP] tri sur plusieurs array multidimentionels
Ignorer un Get si aucune valeur entréCréer un Array superglobal
splitter un arrayRécuperer tous les index d'un array dans 1 variable
Plus de sujets relatifs à : $_GET, foreach et array


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