$_GET, foreach et array

$_GET, foreach et array - PHP - Programmation

Marsh Posté le 29-05-2012 à 14:59:54    

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

Reply

Marsh Posté le 29-05-2012 à 14:59:54   

Reply

Marsh Posté le 29-05-2012 à 15:38:07    

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
Reply

Marsh Posté le 29-05-2012 à 15:56:53    

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

Reply

Marsh Posté le 29-05-2012 à 16:53:01    

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
Reply

Marsh Posté le 30-05-2012 à 08:48:23    

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

Reply

Marsh Posté le 30-05-2012 à 09:35:35    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed