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   -
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
A voir également:

12 réponses

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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.
0
b-boybaki Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   3
 
désoler je n'ai pas tout compris...
0
b-boybaki Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   3
 
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 ??
0
b-boybaki Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   3
 
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>"; } ?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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 :
</select>
</form>

0
b-boybaki Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   3
 
oui cest bien de ma page production.php

j'ai fermer correctement comme tu mas dit mais rien ni fait
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Je n'avais pas fait attention mais...
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>

0
b-boybaki Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   3
 
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");
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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) :
<?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.
0
b-boybaki Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   3
 
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^^
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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.
0
b-boybaki Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   3
 
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^^
0