Problème avec liste déroulante
Résolu/Fermé
b-boybaki
Messages postés
160
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
10 juin 2010
-
6 août 2009 à 23:10
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 - 10 août 2009 à 11:37
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 - 10 août 2009 à 11:37
12 réponses
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
7 août 2009 à 10:58
7 août 2009 à 10:58
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.
b-boybaki
Messages postés
160
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
10 juin 2010
3
8 août 2009 à 04:13
8 août 2009 à 04:13
désoler je n'ai pas tout compris...
b-boybaki
Messages postés
160
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
10 juin 2010
3
10 août 2009 à 00:51
10 août 2009 à 00:51
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 ??
b-boybaki
Messages postés
160
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
10 juin 2010
3
10 août 2009 à 03:08
10 août 2009 à 03:08
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
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
10 août 2009 à 10:18
10 août 2009 à 10:18
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>
b-boybaki
Messages postés
160
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
10 juin 2010
3
10 août 2009 à 10:29
10 août 2009 à 10:29
oui cest bien de ma page production.php
j'ai fermer correctement comme tu mas dit mais rien ni fait
j'ai fermer correctement comme tu mas dit mais rien ni fait
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
10 août 2009 à 10:46
10 août 2009 à 10:46
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>
b-boybaki
Messages postés
160
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
10 juin 2010
3
10 août 2009 à 11:11
10 août 2009 à 11:11
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");
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
10 août 2009 à 11:27
10 août 2009 à 11:27
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.
b-boybaki
Messages postés
160
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
10 juin 2010
3
10 août 2009 à 11:32
10 août 2009 à 11:32
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^^
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
10 août 2009 à 11:35
10 août 2009 à 11:35
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.
b-boybaki
Messages postés
160
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
10 juin 2010
3
10 août 2009 à 11:37
10 août 2009 à 11:37
oups dsl j'ai modifier mon poste juste avan votre rep
ps : vous inquiéter pas je met tjr resolu quand le poste est fini^^
ps : vous inquiéter pas je met tjr resolu quand le poste est fini^^