listes déroulantes dynamiques => afficher des résultats?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : listes déroulantes dynamiques => afficher des résultats?

Re: listes déroulantes dynamiques => afficher des résultats?

par san1981 » 17 avr. 2011, 19:16

Ouf j'ai trouvé mon erreur, en fait je ne devais pas renvoyer le $_POST[code_dept[$d]] sélectionné mais le "name" de mon formulaire "select". Tout fonctionne maintenant.

Merci beaucoup Ryle pour ton aide, j'ai appris plusieurs choses grâce à toi et j'ai mieux analysé mon code :)

Re: listes déroulantes dynamiques => afficher des résultats?

par san1981 » 17 avr. 2011, 18:54

Quand je mets le code ci-dessus, je reçois la même erreur "undefined offset" :(
Est-ce que tu as une idée de comment je peux récupérer la donnée choisie dans la 2e liste pour afficher le résultat? Visiblement "$_POST[$code_dept[$d]]" ne renvoie rien de bon :(

Re: listes déroulantes dynamiques => afficher des résultats?

par Ryle » 17 avr. 2011, 18:45

Si c'est juste visuellement, il te suffit d'afficher le contenu de $_POST avec print_r(). Si c'est hum... php-tivement, tu peux utiliser la fonction isSet() pour vérifier que l'index d'un tableau est bien défini avant d'y faire appel :)
if (isSet($_POST['mon_index'])) {
  echo "Mon index existe et sa valeur est : ". $_POST['mon_index'];
}

Re: listes déroulantes dynamiques => afficher des résultats?

par san1981 » 17 avr. 2011, 16:12

Bonjour,

C'est un peu plus clair grâce à tes explications mais j'avoue que je ne vois pas comment je peux vérifier que la valeur de $code_dept[$d] est bien présente dans $_POST?:(

Re: listes déroulantes dynamiques => afficher des résultats?

par Ryle » 17 avr. 2011, 14:31

En fait $_POST est un tableau associatif, c'est à dire qu'il est constitué de couples "index => valeur". Pour récupérer une valeur, il suffit de faire appel à $_POST["mon_index"].

Le message d'erreur que tu rencontres te dis que l'index que tu demandes n'existe pas. Il faut donc vérifier la valeur de $code_dept[$d] (qui accessoirement est également un tableau indexé) pour t'assurer que celle-ci est bien présent dans ton $_POST.

Et si $code_dept[$d] te retourne la valeur "Array", cela veut dire qu'il s'agit à son tour d'un tableau donc tu dois probablement récupérer une valeur pour obtenir le nom de ton index... en espérant que ce soit un peu plus clair :)

Re: listes déroulantes dynamiques => afficher des résultats?

par san1981 » 17 avr. 2011, 11:48

Bonjour,

Merci beaucoup pour l'aide :-)

J'ai supprimer les ' ' mais du coup je reçois une erreur "undefined offset" sur cette liste:

Code : Tout sélectionner

if (isset($_POST[$code_dept[$d]])) { $sql = 'SELECT * FROM pharmacies WHERE APB = "'.$_POST[$code_dept[$d]].'"';
Je ne suis pas sûre mais je pense que c'est dû au fait que "$code_dept[$d]" est défini comme un array plus haut dans le code. Je ne sais plus trop comment faire?
#-o

Re: listes déroulantes dynamiques => afficher des résultats?

par Ryle » 16 avr. 2011, 13:01

Le problème semble provenir de la différence entre une chaine délimitée par des guillemets et une chaine délimitée par des apostrophes. Entre apostrophes, les variables présentes dans la chaine ne sont pas interprétées (il faut donc les sortir de la chaine, chose que tu fais bien dans ta requête sql, mais que tu omets lorsque tu spécifies l'index de $_POST) :

$_POST['$code_dept[$d]'] devrait vraisemblablement être $_POST[$code_dept[$d]] :)

Re: listes déroulantes dynamiques => afficher des résultats?

par san1981 » 16 avr. 2011, 11:26

Bonjour,

Merci pour votre aide.

Après plusieurs tests de debug, il s'avère que "'$code_dept[$d]'" que j'utilise pour récupérer la donnée choisie dans la 2e liste, ne renvoie rien.
Comment puis-je renvoyer la donnée sélectionnée dans la 2 liste pour en afficher les résultats? #-o

Merci à tous!

Re: listes déroulantes dynamiques => afficher des résultats?

par devlop78 » 16 avr. 2011, 01:41

C'est le moment d'apprendre à débuguer ;)

-> Tester déjà dans PHPMyAdmin si le SELECT renvoie quelque chose, et si oui, est-ce ce que l'on attend
-> Connaitre le nombre de résultats
-> De façon globale, savoir ce que le résultat possède (var_dump() par exemple);
-> etc

listes déroulantes dynamiques => afficher des résultats?

par san1981 » 15 avr. 2011, 23:14

Bonjour à tous,

J'ai découvert le tutoriel sur ce site pour créer des listes déroulantes dynamiques liées entre elles: faq-tutoriels/formulaires-listes-deroul ... t4562.html
Les listes sont bien liées entre elles, lorsque je choisis une région, les départements relatifs s'affichent bien. Par contre je voudrais que lorsque je choisis un département dans la 2e liste, je voudrais pouvoir afficher des informations sur ce département, informations reprises dans la database mais je ne trouve pas comment récupérer le département choisi dans la liste 2 pour pouvoir afficher les résultats.

Pour l'instant, j'ai utilisé exactement le même code que dans le tutoriel, j'ai juste ajouté après "mysql_free_result($rech_dept);" le code suivant pour essayer de récupérer les données relatives au département choisi:

Code : Tout sélectionner

if (isset($_POST['$code_dept[$d]'])) { $sql = 'SELECT * FROM pharmacies WHERE APB = "'.$_POST['$code_dept[$d]'].'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); while ($donnees=mysql_fetch_array($req)) { echo "<table> <tr> <td>".$donnees['Customer']."</td> <td>".$donnees['City']."</td> </tr> </table> "; }} else { echo ''; } ?>
Rien ne s'affiche mais je ne reçois pas de message d'erreur donc j'ai du mal à voir où je me trompe :(

Merci à tous d'avance ;)