Page 1 sur 1

Liste déroulantes : résultat seconde liste

Posté : 19 janv. 2012, 22:05
par atome13
Bonsoir.

Je tenais à vous remercier pour le tuto sur les listes liées
http://forum.phpfrance.com/faq-tutoriels/listes-liees-avec-html-javascript-t255580.html
.

Voila, je sais que le problème a été posté sur le forum, mais je n'ai pas pu trouvé ma réponse. Je voudrais savoir de quelle manière afficher un résultat pour la deuxième liste.

J'ai fais une table console et une autre jeux, et j'aimerais que lorsqu'on choisisse le jeu, on en est une description et une image.

Etant vraiment débutant, je viens prendre conseil au près de vous, car la seule chose que j'ai d'écrite actuellement comme résultat est :

Vous avez sélectionné le jeux 3 sur la console 2

Soit la base de ce formidable script.

D'avance, merci.

Re: Liste déroulantes : résultat seconde liste

Posté : 19 janv. 2012, 22:14
par xTG
Lorsque tu soumets le formulaire tu récupères les données sélectionnées dans les listes.
Il te suffit plus qu'à aller chercher l'information (texte, image, ect) correspondante en base de données ou ailleurs et de l'afficher. :)

Re: Liste déroulantes : résultat seconde liste

Posté : 19 janv. 2012, 22:23
par atome13
Merci de votre réponse rapide.

Pourriez m'indiquer un bout de code afin que je puisse continuer a coder, car cela fait 3 heures que j'essaye mais je commence à peine le php et par conséquent,
je rencontre encore une certaine difficulté à être autonome.

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 10:15
par atome13
J'ai mis ce code à la fin du script, mais cela me fait une erreur.

Code : Tout sélectionner

<?php if (isset($_POST[$code_jeux[$d]])) { $sql = 'SELECT titre FROM jeux WHERE id_jeux = "'.$jeux_selectionne.'"'; $req = mysql_query($sql) or die('Erreur SQL ! '.$sql.' '.mysql_error()); while ($donnees=mysql_fetch_array($req)) { echo "<table> <tr> <td>".$donnees['titre']."</td> <td>".$donnees['image']."</td> </tr> </table> "; }} else { echo ''; } } ?>
Si quelqu'un a une idée, je veux bien.

Il ne me reste plus que cette partie pour finir mon site.

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 19:19
par atome13
Quelqu'un pour m'aider :( ?

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 19:39
par xTG
Quelle est l'erreur affichée ? :roll:

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 20:08
par atome13
Voici l'erreur :

Notice: Undefined offset: 1 in C:\wamp\www\test\index.php on line 249

Mes tables dans la DB:

console : id_console, console
jeux : id_jeux, jeux, description, image, id_console

Voici le code complet du script :

Code : Tout sélectionner

<?php echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */ $serveur = "localhost"; $admin = "root"; $mdp = ""; $base = "site"; /* On récupère si elle existe la valeur de la console envoyée par le formulaire */ $idr = isset($_POST['console'])?$_POST['console']:null; ?> <body style="font-family: verdana, helvetica, sans-serif; font-size: 85%"> <h3>Trouver un jeux</h3> <?php /* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect() * car on aura besoin de la connexion un peu plus loin dans le script */ $connexion = mysql_pconnect($serveur, $admin, $mdp); if($connexion != false) { $choixbase = mysql_select_db($base, $connexion); $sql1 = "SELECT `id_console`, `console`". " FROM `console`". " ORDER BY `id_console`"; $rech_consoles = mysql_query($sql1); $code_console = array(); $console = array(); /* On active un compteur pour les consoles */ $nb_consoles = 0; if($rech_consoles != false) { while($ligne = mysql_fetch_assoc($rech_consoles)) { array_push($code_console, $ligne['id_console']); array_push($console, $ligne['console']); /* On incrémente de compteur */ $nb_consoles++; } } ?> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept"> <fieldset style="border: 3px double #333399"> <legend>Sélectionnez une console</legend> <select name="console" id="console" onchange="document.forms['chgdept'].submit();"> <option value="-1">- - - Choisissez une console - - -</option> <?php for($i = 0; $i < $nb_consoles; $i++) { ?> <option value="<?php echo($code_console[$i]); ?>"<?php echo((isset($idr) && $idr == $code_console[$i])?" selected=\"selected\"":null); ?>><?php echo($console[$i]); ?></option> <?php } ?> </select> <?php mysql_free_result($rech_consoles); /* On commence par vérifier si on a envoyé un numéro de console et le cas échéant s'il est différent de -1 */ if(isset($idr) && $idr != -1) { /* Création de la requête pour avoir les jeux de cette console */ $sql2 = "SELECT `id_jeux`, `jeux`". " FROM `jeux`". " WHERE `id_console` = ". $idr ."". " ORDER BY `id_jeux`;"; if($connexion != false) { $rech_jeux = mysql_query($sql2, $connexion); /* Un petit compteur pour les jeux */ $nd = 0; /* On crée deux tableaux pour les numéros et les noms des jeux */ $code_jeux = array(); $nom_jeux = array(); /* On va mettre les numéros et noms des jeux dans les deux tableaux */ while($ligne_dept = mysql_fetch_assoc($rech_jeux)) { array_push($code_jeux, $ligne_dept['id_jeux']); array_push($nom_jeux, $ligne_dept['jeux']); $nd++; } /* Maintenant on peut construire la liste déroulante */ ?> <select name="jeux" id="jeux"> <?php for($d = 0; $d<$nd; $d++) { ?> <option value="<?php echo($code_jeux[$d]); ?>"<?php echo((isset($jeux_selectionne) && $jeux_selectionne == $code_jeux[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_jeux[$d]." (". $code_jeux[$d] .")"); ?></option> <?php } ?> </select> <?php } /* Un petit coup de balai */ mysql_free_result($rech_jeux); } ?> <br /><input type="submit" name="ok" id="ok" value="Envoyer" /> </fieldset> </form> <?php /* Terminé, on ferme la connexion */ mysql_close($connexion); } else { /* Si on arrive là, c'est pas bon signe, il faut vérifier les * paramètres de connexion, mot de passe, serveur pas démarré etc... */ ?> <p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p> <?php } ?> <?php if(isset($_POST['ok']) && isset($_POST['jeux']) && $_POST['jeux'] != "") { $console_selectionnee = $_POST['console']; $jeux_selectionne = $_POST['jeux']; ?> <p>Vous avez sélectionné le jeux <?php echo($jeux_selectionne); ?> sur la console <?php echo($console_selectionnee); ?></p> <?php if (isset($_POST[$code_jeux[$d]])) { $sql = 'SELECT titre FROM jeux WHERE id_jeux = "'.$jeux_selectionne.'"'; $req = mysql_query($sql) or die('Erreur SQL ! '.$sql.' '.mysql_error()); while ($donnees=mysql_fetch_array($req)) { echo "<table> <tr> <td>".$donnees['titre']."</td> <td>".$donnees['image']."</td> </tr> </table> "; }} else { echo ''; } } ?> </body> </html>

Merci de votre aide.

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 20:23
par xTG
Donnes nous la ligne précédente, la ligne 249 et la suivante.
Car j'ai un peu la flemme de compter... 8-|

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 20:40
par atome13
voilà la ligne 249 jusqu'à la fin :

Code : Tout sélectionner

<?php if (isset($_POST[$code_jeux[$d]])) { $sql = 'SELECT titre FROM jeux WHERE id_jeux = "'.$jeux_selectionne.'"'; $req = mysql_query($sql) or die('Erreur SQL ! '.$sql.' '.mysql_error()); while ($donnees=mysql_fetch_array($req)) { echo "<table> <tr> <td>".$donnees['titre']."</td> <td>".$donnees['image']."</td> </tr> </table> "; }} else { echo ''; } } ?>

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 21:11
par xTG
C'est pas plutôt $_POST['jeux'] que tu souhaites utiliser ?
Car $code_jeux[$d] a l'air de renvoyer le nom d'un jeu, or tu n'as aucun champ dans ton formulaire prenant ça en attribut name.

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 21:36
par atome13
Yes merci, j'ai pu arranger un peu le code derrière et ça marche.


Merci mille fois.

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 21:49
par atome13
Ah mince :? j'ai une dernière petite question :

J'ai inclue ce code dans ma page qui se nomme games.php dans mon site par un include mais quand je clique sur le premier select, ca me renvoi à mon index.php.

Je suppose que je dois changer quelque chose dans le code ci dessous.

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">

Je pense que PHP_SELF n'est pas bon mais je suis pas sur et je ne sais pas quoi mettre.

Après je ne t’embête plus :) et encore merci pour ton aide.

Re: Liste déroulantes : résultat seconde liste

Posté : 20 janv. 2012, 22:49
par atome13
C'est bon j'ai trouvé

Il fallait faire :


<form action="<?php echo($_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']); ?>" method="post" id="chgdept">


Merci encore. Sujet Résolu