Page 1 sur 1

Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 08:40
par bromlecornu
Bonjour à tous,

Je viens vous demander un petit coup de main

Je souhaiterai afficher dans une liste des choix mais ces choix seraient proposés en fonction du choix que j'aurai fait dans une première liste.

Voilà la page du code de mon premier choix (celle là fonctionne bien !! :) )

Code : Tout sélectionner

<html> <head> <link href="style.css" rel="stylesheet" media="all" type="text/css"> </head> <?php include('connexion.inc'); if(isset($_POST['liste1'])){ //si la liste a été "postée" c'est à dire choix fait $liste1=$_POST['liste1']; }else{ $liste1=-1; } ?> <TABLE border=0 width=97% BGCOLOR=#FFFFFF> <TR align="center"> <TD><h1> R&eacute;servation mobile</h1></TD> </TR> </TABLE> <BR><BR> Sélectionnez une marque : <form name="form1" method="post" action="modele.php"> <select name="liste1" onchange=" form1.submit();"> <option value=-1>-- Choisissez -- </option> <!-- il faut cette ligne pour avoir obliagtoirement un changement --> <?php $requete = "SELECT * FROM marques"; $execution_requete = mysql_query($requete); while($total = mysql_fetch_array($execution_requete)) //Liste déroulante { echo "<option value=\"".$total["nom_marque"]."\""; echo ">".$total['nom_marque']."</option>\n"; } ?> </select> </form> </html>
Et voilà le code la page où je récupère le choix de la première liste et où je dois faire mon choix dans la seconde

Code : Tout sélectionner

<html> <head> <link href="style.css" rel="stylesheet" media="all" type="text/css"> </head> <?php include('connexion.inc'); if(isset($_POST['liste1'])){ //si la liste a été "postée" c'est à dire choix fait $liste1=$_POST['liste1']; }else{ $liste1=-1; } ?> <TABLE border=0 width=97% BGCOLOR=#FFFFFF> <TR align="center"> <TD><h1> R&eacute;servation mobile</h1></TD> </TR> </TABLE> <BR><BR> <?php echo $_POST['liste1']; if(isset($_POST['liste2'])){ //si la liste a été "postée" c'est à dire choix fait $liste2=$_POST['liste2']; }else{ $liste2=-1; } ?> <br><br> Sélectionnez un modèle : <form name="form2" method="post" action="mobile.php"> <select name="liste2" onchange=" form2.submit();"> <option value=-1>-- Choisissez -- </option> <!-- il faut cette ligne pour avoir obliagtoirement un changement --> <?php $requete2 = mysql_query("SELECT * FROM marques AS m, modeles AS n WHERE m.num_marque = n.num_marque AND m.num_marque= ".$_POST['liste1']."'") OR die (mysql_error()); $execution_requete2 = mysql_query($requete2); while($total2 = mysql_fetch_array($execution_requete2)) //Liste déroulante { echo "<option value=\"".$total2["nom_modele"]."\""; echo ">".$total2['nom_modele']."</option>\n"; } ?> </select> </form> <a href="accueil.php">Retour Accueil</a> </html>
Merci d'avance pour le coup de main :wink:

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 09:19
par @rthur
Bonjour,

Il y a un tutoriel assez complet sur PHPfrance qui pourra probablement t'aider : faq-tutoriels/listes-liees-avec-html-ja ... 55580.html

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 09:33
par bromlecornu
Je suis pas ultra calé en dev et là il y a du html, javascript et php....a la limite que la page se recharge ne me dérange pas mais je ne dois pas être loin du résultat voulu, j'ai juste besoin de l'aide d'un expert ;-)

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 09:45
par tof73
que se passe-t-il exactement dans la seconde page ?

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 09:58
par bromlecornu
En fait je n'arrive pas dans la liste de ma deuxième page à afficher mes modèles, je pense que ça vient en partie d'un problème de récupération du numéro de la marque sélectionnée dans la page précedente, mais je ne vois pas comment faire, j'ai déjà essayé pas mal de trucs

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 10:08
par Ryle
Bonjour,

Ta requête SQL contient une erreur :
$requete2 = mysql_query("SELECT * FROM marques AS m, modeles AS n 
WHERE m.num_marque = n.num_marque 
AND m.num_marque= ".$_POST['liste1']."'")

D'une part tu utilises $_POST['liste1'] sans tester si celui-ci a bien été envoyé (encore que quelques lignes plus haut tu définis $liste1 proprement pour pouvoir l'utiliser :)) et d'autre part, la valeur que tu utilises ici et que tu envois dans ta requête n'est pas délimitée par une apostrophe d'ouverture (il y a bien l'apostrophe de fin "'", mais tu n'en as pas après le m.num_marque= pour commencer la chaine SQL.

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 10:31
par bromlecornu
Merci pour toutes ces infos.

J'ai corrigé l'erreur dans ma requête pour l'apostrophe.

Rien ne change effectivement je dois pas récupérer de valeurs dans variable.

D'après toi depuis ma première page je récupère le numéro de la marque? parce que j'en ai besoin dans ma seconde page pour afficher mes résultats dans ma liste.

Comment puis je tester le remplissage de ma variable?

Merci encore

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 11:10
par bromlecornu
Dans ma page accueil j'ai ajouter un input en hidden qui doit récupérer mon num_marque et l'envoyer à la page suivante

Code : Tout sélectionner

<html> <head> <link href="style.css" rel="stylesheet" media="all" type="text/css"> </head> <?php include('connexion.inc'); if(isset($_POST['liste1'])){ //si la liste a été "postée" c'est à dire choix fait $liste1=$_POST['liste1']; }else{ $liste1=-1; } ?> <TABLE border=0 width=97% BGCOLOR=#FFFFFF> <TR align="center"> <TD><h1> R&eacute;servation mobile</h1></TD> </TR> </TABLE> <BR><BR> Sélectionnez une marque : <form name="form1" method="post" action="modele.php"> <select name="liste1" onchange=" form1.submit();"> <option value=-1>-- Choisissez -- </option> <!-- il faut cette ligne pour avoir obliagtoirement un changement --> <?php $requete = "SELECT * FROM marques"; $execution_requete = mysql_query($requete); while($total = mysql_fetch_array($execution_requete)) //Liste déroulante { echo "<option value=\"".$total["nom_marque"]."\""; echo ">".$total['nom_marque']."</option>\n"; } echo "<input type='hidden' name='num_marque' value=\"".$total["num_marque"]."\">"; ?> </select> </form> </html>
Mais ça marche pas ma variable ne récupère rien dans page suivante

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 11:27
par yann18
si tu souhaites transmettre le numéro de la marque dans le champ select, alors tu peux mettre ce numéro dans l'attribut value du select:
<form name="form1" method="post" action="modele.php">
<select name="liste1" onchange=" form1.submit();">
<option value=-1>-- Choisissez -- </option> <!-- il faut cette ligne pour avoir obliagtoirement un changement -->
<?php


$requete = "SELECT * FROM marques";
$execution_requete = mysql_query($requete);
while($total = mysql_fetch_array($execution_requete))

//Liste déroulante
{

echo "<option value='".$total["num_marque"]."'>{$total['nom_marque']}</option>";



}

?>
</select>
</form>
pour s'assurer que le numéro selectionné est bien transmise à la page modele.php, il te suffit d'afficher la variable $_POST['liste1']:
//page modele.php
//à mettre avant le isset($_POST['liste1'])
var_dump( $_POST['liste1'] );

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 11:32
par bromlecornu
Merci ça marche nickel

Par contre dernière petite question.

Sur ma page modèle au lieu de m'afficher le nom_marque il m'affiche le num-marque :-)

et accessoirement il ne me renvoi pas les modèle dans ma liste non plus

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 12:17
par yann18
si aucun modèle n'est renvoyé, tu peux afficher la 2ème requête qui sélectionne les modèles, la copier puis l'exécuter dans phpmyadmin pour tester si la requête sql marche.Pour ce faire, sur la page 1, tu sélectionnes(avec la liste déroute) la marque et tu verras la requête s'afficher dans la page modèle:
$sql_modeles = "SELECT * FROM marques AS m, modeles AS n 
WHERE m.num_marque = n.num_marque 
AND m.num_marque=' ".$_POST['liste1']."'";
echo "$sql_modeles  <br>";//une fois la requête affichéé, copies-la puis tu l'exécute dans phpmyadmin
$requete2 = mysql_query($sql_modeles );

Re: Remplissage liste en fonction choix autre liste

Posté : 24 juil. 2015, 14:10
par bromlecornu
J'ai copié ton code dans ma page

Code : Tout sélectionner

<html> <head> <link href="style.css" rel="stylesheet" media="all" type="text/css"> </head> <?php include('connexion.inc'); if(isset($_POST['liste1'])){ //si la liste a été "postée" c'est à dire choix fait $liste1=$_POST['liste1']; }else{ $liste1=-1; } ?> <TABLE border=0 width=97% BGCOLOR=#FFFFFF> <TR align="center"> <TD><h1> R&eacute;servation mobile</h1></TD> </TR> </TABLE> <BR><BR> <?php if (isset($_POST['liste1'])) { echo $_POST['liste1']; }else{ echo "variable vide"; } if(isset($_POST['liste2'])){ //si la liste a été "postée" c'est à dire choix fait $liste2=$_POST['liste2']; }else{ $liste2=-1; } ?> <br><br> Sélectionnez un modèle : <form name="form2" method="post" action="mobile.php"> <select name="liste2" onchange=" form2.submit();"> <option value=-1>-- Choisissez -- </option> <!-- il faut cette ligne pour avoir obliagtoirement un changement --> <?php $sql_modeles = "SELECT * FROM marques AS m, modeles AS n WHERE m.num_marque = n.num_marque AND m.num_marque=' ".$_POST['liste1']."'"; echo "$sql_modeles <br>" ;//une fois la requête affichéé, copies-la puis tu l'exécute dans phpmyadmin $requete2 = mysql_query($sql_modeles ); while($total2 = mysql_fetch_array($execution_requete2)) Liste déroulante { echo "<option value=\"".$total2["ean_modele"]."\""; echo ">".$total2['nom_modele']."</option>\n"; } ?> </select> </form> <a href="accueil.php">Retour Accueil</a> </html>
Mais rien ne se passe