Problème avec liste déroulante
Résolu
b-boybaki
Messages postés
160
Date d'inscription
Statut
Membre
Dernière intervention
-
b-boybaki Messages postés 160 Date d'inscription Statut Membre Dernière intervention -
b-boybaki Messages postés 160 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
alors voila je voudrais savoir comment ils ont fait dans ogame, pour la liste déroulante pour les planètes...
c'est a dire lorsque l'on selectionne la planète on obtient les donnée de cette planete
alors voila je voudrais savoir comment ils ont fait dans ogame, pour la liste déroulante pour les planètes...
c'est a dire lorsque l'on selectionne la planète on obtient les donnée de cette planete
A voir également:
- Problème avec liste déroulante
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Liste code ascii - Guide
- Site dangereux liste - Guide
12 réponses
Bonjour,
Dans n'importe quel langage qu'il soit, le principe reste le même :
- Tu pose un écouteur (si ce n'est pas déjà géré dans le langage que tu utilises) sur ta liste déroulante
- A chaque changement de sélection sur ta liste déroulante, tu récupères la valeur sélectionnée et tu vas chercher les informations relatives à cette valeur au sein de ta base de données (requête SQL)
- Tu affiches les informations ainsi récupérée dans un zone de ton interface.
Dans n'importe quel langage qu'il soit, le principe reste le même :
- Tu pose un écouteur (si ce n'est pas déjà géré dans le langage que tu utilises) sur ta liste déroulante
- A chaque changement de sélection sur ta liste déroulante, tu récupères la valeur sélectionnée et tu vas chercher les informations relatives à cette valeur au sein de ta base de données (requête SQL)
- Tu affiches les informations ainsi récupérée dans un zone de ton interface.
voila la partie de mon programme :
orm action="production.php" method="POST"><select name="planete"><?php
while ($ligne7 = mysql_fetch_array($sql7))
{ echo "<option value=".$ligne7['num_planete'].">".$ligne7['nom_planete']." ".$ligne7['coordonnee_planete']."</option>"; } ?>
et je voudrais qu'on maide pour que lorsque le joureur choisit une autre planete je récupère la valeur dans option value dans une variable qui va me servire pour une requete sql
pouvez-vous maidez ??
orm action="production.php" method="POST"><select name="planete"><?php
while ($ligne7 = mysql_fetch_array($sql7))
{ echo "<option value=".$ligne7['num_planete'].">".$ligne7['nom_planete']." ".$ligne7['coordonnee_planete']."</option>"; } ?>
et je voudrais qu'on maide pour que lorsque le joureur choisit une autre planete je récupère la valeur dans option value dans une variable qui va me servire pour une requete sql
pouvez-vous maidez ??
j'ai trouver commenf faire mais maintenant il ne veux pas garder ma selection
<form action="production.php" method="POST"><select name="kik"><?php
while ($ligne7 = mysql_fetch_array($sql7))
{ echo "<option value=".$ligne7['num_planete'].""; if($_SESSION['test1'] == $_POST['kik']){print "selected";} echo ">".$ligne7['nom_planete']." ".$ligne7['coordonnee_planete']."</option>"; } ?>
<form action="production.php" method="POST"><select name="kik"><?php
while ($ligne7 = mysql_fetch_array($sql7))
{ echo "<option value=".$ligne7['num_planete'].""; if($_SESSION['test1'] == $_POST['kik']){print "selected";} echo ">".$ligne7['nom_planete']." ".$ligne7['coordonnee_planete']."</option>"; } ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Le code du formulaire que tu donnes est celui de ta page "production.php" ?
N'oublies-tu pas de fermer proprement ton formulaire avec ceci à la fin :
Le code du formulaire que tu donnes est celui de ta page "production.php" ?
N'oublies-tu pas de fermer proprement ton formulaire avec ceci à la fin :
</select> </form>
Je n'avais pas fait attention mais...
A quoi fait référence ce "$_SESSION['test1']" ? A priori le vrai test à faire serait plutôt celui-là :
Puisqu'il faut que tu compare la valeur courante de la liste que tu ajoute, avec celle sélectionnée, donc venant du tableau $_POST de ton formulaire.
A moins que tu as fait quelque chose pour le récupérer et le mettre en session quelque part, auquel cas il serait bon d'avoir le code entier pour débuguer ton truc.
Qui plus est, tu as fait une faute d'écriture qui fait que ta balise 'option' n'est jamais fermée et prend pour valeur 'bidule selected".
Voilà un code juste et qui fonctionne :
(En gras les points importants qui n'allait pas dans ton code. N'oubli pas d'adapter ce code avec ta requête SQL, j'ai volontairement modifié pour tester chez moi le code.
if($_SESSION['test1'] == $_POST['kik'])
A quoi fait référence ce "$_SESSION['test1']" ? A priori le vrai test à faire serait plutôt celui-là :
if ( $ligne7['num_planete'] == $_POST['kik'] )
Puisqu'il faut que tu compare la valeur courante de la liste que tu ajoute, avec celle sélectionnée, donc venant du tableau $_POST de ton formulaire.
A moins que tu as fait quelque chose pour le récupérer et le mettre en session quelque part, auquel cas il serait bon d'avoir le code entier pour débuguer ton truc.
Qui plus est, tu as fait une faute d'écriture qui fait que ta balise 'option' n'est jamais fermée et prend pour valeur 'bidule selected".
Voilà un code juste et qui fonctionne :
(En gras les points importants qui n'allait pas dans ton code. N'oubli pas d'adapter ce code avec ta requête SQL, j'ai volontairement modifié pour tester chez moi le code.
<form action="index2.php" method="POST"> <select name="kik" > <?php if (isset($_POST["kik"]) ) $kik = $_POST["kik"]; else $kik = ""; $array = array("test","test1","test2","test3"); for ( $i = 0; $i < sizeof($array); $i++ ){ echo "<option value='".$array[$i]."'"; if($array[$i] == $kik){ echo "selected"; } echo ">".$array[$i]." ".$array[$i]."</option>"; } ?> <input type='submit' value='go!'/> </select> </form>
voila le code entier :
<?php
$_SESSION['test1'] = $_POST['kok'];
$lol = $_SESSION['test1'];
include("connexion.php");
include("requete.php");
include("prodmetal.php");
include("prodcristal.php");
include("proddeut.php");
include("prodtib.php");
?>
</body>
</html>
<html>
<head>
<link rel="stylesheet" type="text/css" title="production" href="production.css"/>
</head>
<body>
<center>
<table>
<tr>
<td rowspan="2">image planète</td>
<td><form action="test2.php" name="kik" method="POST"><select name="kok">
<?php
while ($ligne7 = mysql_fetch_array($sql7))
{ echo "<option value=".$ligne7['num_planete'].""; if($_SESSION['test1'] == $_POST['kok']){print "selected";}
echo ">".$ligne7['nom_planete']." ".$ligne7['coordonnee_planete']."</option>"; } ?></select></td>
<td><center><img src="imageprod/metal.gif"/>
</center></td>
<td><center><img src="imageprod/cristal.gif"/></center></td>
<td><center><img src="imageprod/deuterium.gif"/></center></td>
<td><center><img src="imageprod/tiberium.gif"/></center></td>
<td><center><img src="imageprod/energie.gif"/></center></td>
<td><center><img src="imageprod/message.gif"/></center></td>
</tr>
<tr>
<td>Ressources</td>
<td><font color="#ff5555"><center>métal</font></br><?php echo ceil($prodtotalmetal); ?></center></td>
<td><font color="#ff5555"><center>cristal</font></br><?php echo ceil($prodtotalcristal); ?></center></td>
<td><font color="#ff5555"><center>deutérium</font></br><?php echo ceil($prodtotaldeut); ?></center></td>
<td><font color="#ff5555"><center>tibérium</font></br><?php echo ceil($prodtotaltib); ?></center></td>
<td><font color="#ff5555"><center>énergie</font></br>1.000/1.000</center></td>
<td><font color="#ff5555"><center>message</font></br>5</center></td>
</tr>
<tr><td><input type="submit" value="lol"/></td></tr></form>
</table></center>
<?php echo $lol;
echo $_POST['kik'];
echo $_POST['kok'];?>
</body>
</html>
et j'ai pas compris la ligne la :
$array = array("test","test1","test2","test3");
<?php
$_SESSION['test1'] = $_POST['kok'];
$lol = $_SESSION['test1'];
include("connexion.php");
include("requete.php");
include("prodmetal.php");
include("prodcristal.php");
include("proddeut.php");
include("prodtib.php");
?>
</body>
</html>
<html>
<head>
<link rel="stylesheet" type="text/css" title="production" href="production.css"/>
</head>
<body>
<center>
<table>
<tr>
<td rowspan="2">image planète</td>
<td><form action="test2.php" name="kik" method="POST"><select name="kok">
<?php
while ($ligne7 = mysql_fetch_array($sql7))
{ echo "<option value=".$ligne7['num_planete'].""; if($_SESSION['test1'] == $_POST['kok']){print "selected";}
echo ">".$ligne7['nom_planete']." ".$ligne7['coordonnee_planete']."</option>"; } ?></select></td>
<td><center><img src="imageprod/metal.gif"/>
</center></td>
<td><center><img src="imageprod/cristal.gif"/></center></td>
<td><center><img src="imageprod/deuterium.gif"/></center></td>
<td><center><img src="imageprod/tiberium.gif"/></center></td>
<td><center><img src="imageprod/energie.gif"/></center></td>
<td><center><img src="imageprod/message.gif"/></center></td>
</tr>
<tr>
<td>Ressources</td>
<td><font color="#ff5555"><center>métal</font></br><?php echo ceil($prodtotalmetal); ?></center></td>
<td><font color="#ff5555"><center>cristal</font></br><?php echo ceil($prodtotalcristal); ?></center></td>
<td><font color="#ff5555"><center>deutérium</font></br><?php echo ceil($prodtotaldeut); ?></center></td>
<td><font color="#ff5555"><center>tibérium</font></br><?php echo ceil($prodtotaltib); ?></center></td>
<td><font color="#ff5555"><center>énergie</font></br>1.000/1.000</center></td>
<td><font color="#ff5555"><center>message</font></br>5</center></td>
</tr>
<tr><td><input type="submit" value="lol"/></td></tr></form>
</table></center>
<?php echo $lol;
echo $_POST['kik'];
echo $_POST['kok'];?>
</body>
</html>
et j'ai pas compris la ligne la :
$array = array("test","test1","test2","test3");
La ligne : "$array = array("test","test1","test2","test3");" c'est uniquement pour simuler la boucle de traitement que tu as avec ta requête SQL. Comme je n'ai pas ta base de données chez moi, si je veux tester le script en condition "réelles" il faut bien que je fasse quelque chose d'autre, ici en l'occurrence, je génère un tableau de valeur que je vais afficher dans le select.
Pour toi il ne faut pas changer les lignes relatives à ta boucle donc.
Dans ton script, il y a une chose énorme qui me choque, l'utilisation inutile de la session.
Lorsque tu souhaites utiliser une session, il faut toujours commencer ses scripts par l'instruction suivante sur chaque page où tu souhaites garder la session courante (dans laquelle tu enregistres / mets à jour des variables de sauvegarde par exemple) :
Seulement dans ton cas, l'utilisation de la session ne sert à rien.
Qui plus es, tu récupère la valeur '$_POST["kok"]' sans pour autant vérifier qu'elle existe ! Conclusion, la première fois que tu arrive sur ta page de formulaire, tu vas avoir une belle erreur du type "undefined index 'kok'" et ta page se fonctionnera certainement pas.
La bonne démarche est donc la suivante (si tu lis mon post précédents pour t'en inspirer), tu remplace ceci :
par ceci :
Puis dans ta boucle de traitement, tu ne fais plus le test sur la variable de session, mais sur '$lol' directement :
Pareil, tu avais oublié de mettre des ' ' pour entourer la valeur dans <option value=".$ligne7.....", ce qui empêche d'avoir les bonnes valeurs dans ton select. Je les ai ajouté dans le script ci-dessus, n'oublis pas de le faire aussi, auquel cas ça ne fonctionnera pas.
Dans tous les cas, je t'encourage fortement à relire l'ensemble des dossiers PHP situé ici :
https://www.commentcamarche.net/contents/php-1452351953
Cela t'aidera à mieux comprendre et utiliser le PHP et faire ce dont tu as besoin.
Pour toi il ne faut pas changer les lignes relatives à ta boucle donc.
Dans ton script, il y a une chose énorme qui me choque, l'utilisation inutile de la session.
Lorsque tu souhaites utiliser une session, il faut toujours commencer ses scripts par l'instruction suivante sur chaque page où tu souhaites garder la session courante (dans laquelle tu enregistres / mets à jour des variables de sauvegarde par exemple) :
<?php session_start(); ... le reste du code de ta page ?>
Seulement dans ton cas, l'utilisation de la session ne sert à rien.
Qui plus es, tu récupère la valeur '$_POST["kok"]' sans pour autant vérifier qu'elle existe ! Conclusion, la première fois que tu arrive sur ta page de formulaire, tu vas avoir une belle erreur du type "undefined index 'kok'" et ta page se fonctionnera certainement pas.
La bonne démarche est donc la suivante (si tu lis mon post précédents pour t'en inspirer), tu remplace ceci :
$_SESSION['test1'] = $_POST['kok']; $lol = $_SESSION['test1'];
par ceci :
if ( isset($_POST('kok')) ) $lol = $_POST["kok"]; else $lol = "";
Puis dans ta boucle de traitement, tu ne fais plus le test sur la variable de session, mais sur '$lol' directement :
while ($ligne7 = mysql_fetch_array($sql7)){ echo "<option value='".$ligne7['num_planete']."'"; if($ligne7['num_planete'] == $lol ){ echo "selected"; } echo ">".$ligne7['nom_planete']." ".$ligne7['coordonnee_planete']."</option>"; }
Pareil, tu avais oublié de mettre des ' ' pour entourer la valeur dans <option value=".$ligne7.....", ce qui empêche d'avoir les bonnes valeurs dans ton select. Je les ai ajouté dans le script ci-dessus, n'oublis pas de le faire aussi, auquel cas ça ne fonctionnera pas.
Dans tous les cas, je t'encourage fortement à relire l'ensemble des dossiers PHP situé ici :
https://www.commentcamarche.net/contents/php-1452351953
Cela t'aidera à mieux comprendre et utiliser le PHP et faire ce dont tu as besoin.
pwaaaaaaaa sa marche
olalalalalalla aje ss trop content depuis hier soir juska 4h du mat jessay de trouver le bug !!!!!!
merci merci merci merci
et j'aurais une question en passant
si je veux mettre du java au lieu de mettre un bouton je dois faire comment ???
je vous demande pcq je commence un peux le java, et l'an prochain je vais en faire en cour je prend un peux d'avance^^
olalalalalalla aje ss trop content depuis hier soir juska 4h du mat jessay de trouver le bug !!!!!!
merci merci merci merci
et j'aurais une question en passant
si je veux mettre du java au lieu de mettre un bouton je dois faire comment ???
je vous demande pcq je commence un peux le java, et l'an prochain je vais en faire en cour je prend un peux d'avance^^
Tant mieux,
Je rappelle que lorsqu'une discussion est considérée comme "résolu" de la part de l'initiateur, ce dernier ne doit pas oublier de mettre à jour le statut de la discussion en le passant à "résolu".
Pour ce faire, il suffit de cocher l'option "résolu" en haut à droite du premier post de la discussion (visible uniquement par la personne qui a posté la discussion, les contributeurs et les modérateurs / webmasters), puis de valider.
Je le fais pour toi cette fois-ci mais tâche d'y penser, c'est toujours mieux pour ceux qui font des recherches sur des sujets résolu pour trouver les solutions aux problèmes analogues.
Je rappelle que lorsqu'une discussion est considérée comme "résolu" de la part de l'initiateur, ce dernier ne doit pas oublier de mettre à jour le statut de la discussion en le passant à "résolu".
Pour ce faire, il suffit de cocher l'option "résolu" en haut à droite du premier post de la discussion (visible uniquement par la personne qui a posté la discussion, les contributeurs et les modérateurs / webmasters), puis de valider.
Je le fais pour toi cette fois-ci mais tâche d'y penser, c'est toujours mieux pour ceux qui font des recherches sur des sujets résolu pour trouver les solutions aux problèmes analogues.