JeuWeb - Crée ton jeu par navigateur
[réglé]Créer une liste déroulante a partie d'un tableau - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [réglé]Créer une liste déroulante a partie d'un tableau (/showthread.php?tid=1370)



[réglé]Créer une liste déroulante a partie d'un tableau - V1nc3 - 27-06-2007

Voici ma nouvelle étape, je souhaiterai mettre dans une liste déroulante, le contenu d'un tableau.

Les données que je récupèrent :

Code PHP :
<?php 
$portee
= $_SESSION['perso_'.$_SESSION['perso'].'']['portee'];

//Je prépare les distances
$portee_x_min = $coord_x - $portee;
$portee_x_max = $coord_x + $portee;
$portee_y_min = $coord_y - $portee;
$portee_y_max = $coord_y + $portee;

//Et je vais chercher dans ma table toutes personnes a portée
$resultat = mysql_query("SELECT * FROM profil_joueurs WHERE (coord_x BETWEEN '$portee_x_min' AND '$portee_x_max') AND (coord_y BETWEEN '$portee_y_min' AND '$portee_y_max') ORDER BY coord_x, coord_y");
$persos = mysql_fetch_array($resultat);

Mais la grande qustion maintenant, comment en faire une liste déroulante?
(Comment gérer la boucle d'affichage surtout).


RE: Créer une liste déroulante a partie d'un tableau - Fidelcastor - 27-06-2007

Salut , voici un petit exemple à toi de l'adapter :


------------------------
$requeteV=mysql_db_query($sql_bdd,"select * from monstre ORDER BY NomMonstre",$db_link) or die(mysql_error());
$numV=mysql_num_rows($requeteV);
$tableau= array ();
while ($res=mysql_fetch_array($requeteV)){
array_push($tableau,"$res[IDMonstre]");
}
echo "<SELECT NAME=NomMonstre>";
echo "<OPTION SELECTED>".$NomMonstreM;
//liste des monstres
for ($i=0;$i<=$numV-1;$i++){
$IDMonstre=$tableau[$i];
$requete=mysql_db_query($sql_bdd,"select * from monstre where IDMonstre=\"$IDMonstre\"",$db_link) or die(mysql_error());
$NomMonstre=mysql_result($requete,0,"NomMonstre");
if ($NomMonstreM==$NomMonstre){
$NomMonstre="";}
echo "<OPTION> ".$NomMonstre;
}
echo "</SELECT>

---------------------------------
Tu va me dire pourquoi <OPTION SELECTED> : Parce que je veux récupérer la valeur déjà choisi ou positionné précédemment. Et à l'occasion remplacé la valeur déjà choisi par un blanc (afin de déselectionner le choix).

Faire la liste des monstre en mettant l'IDMonstre dans un tableau et affiché le nom du monstre dans <OPTION> ; la limite étant définir la $numV (nombre de ligne trouvé dans la table MONSTRE)

Je précise que $NomMonstreM provient d'une URL ou POST/GET.


RE: Créer une liste déroulante a partie d'un tableau - V1nc3 - 27-06-2007

Voyons voir :
Code PHP :
<?php 
$resultat
= mysql_query("SELECT * FROM profil_joueurs WHERE (coord_x BETWEEN '$portee_x_min' AND '$portee_x_max') AND (coord_y BETWEEN '$portee_y_min' AND '$portee_y_max') ORDER BY coord_x, coord_y");
$persos = mysql_fetch_array($resultat);

$nb_perso = mysql_num_rows($resultat);

$output .="<select name=\"attaquer\">";
for(
$i=0; $i<$nb_perso; $i++)
{
$output .="<option value=\"".$persos['pseudo']." \">(".$persos['coord_x']."/".$persos['coord_y']." -- ".$persos['pseudo']."</option>"
}
$output .="</select>";

echo
$output;



RE: Créer une liste déroulante a partie d'un tableau - V1nc3 - 27-06-2007

Le problème c'est que j'affiche bien le nombre de persos a portée, mais j'affiche celui qui est le premier dans mon classement par x,y, mais il est affiché autant de fois que de persos a portées.


RE: Créer une liste déroulante a partie d'un tableau - Roworll - 27-06-2007

Normal.
tu fais une boucle sur le nombre de lignes renvoyées par la requête mais tu ne parcours pas ton recordset.
Un code plus adéquat ressemblerai à
Code PHP :
<?php 
$resultat
= mysql_query("SELECT * FROM profil_joueurs WHERE (coord_x BETWEEN '$portee_x_min' AND '$portee_x_max') AND (coord_y BETWEEN '$portee_y_min' AND '$portee_y_max') ORDER BY coord_x, coord_y");

$output .="<select name=\"attaquer\">";
while (
$persos = mysql_fetch_array($resultat)) // c'est ici que tu parcours le résultat de ta requête
{
$output .="<option value=\"".$persos['pseudo']." \">(".$persos['coord_x']."/".$persos['coord_y']." -- ".$persos['pseudo']."</option>"
}
$output .="</select>";

echo
$output;



RE: Créer une liste déroulante a partie d'un tableau - V1nc3 - 27-06-2007

J'ai essayé ton code, mais il manque un perso dans la liste.
J'ai bien les différents persos qui s'affiche a chaque fois, mais manque un perso dans le tat :S


RE: Créer une liste déroulante a partie d'un tableau - Roworll - 27-06-2007

Tu n'aurais pas gardé une ligne du type
$persos = mysql_fetch_array($resultat);
en dehors de la boucle ?


RE: Créer une liste déroulante a partie d'un tableau - V1nc3 - 27-06-2007

Si -_-'
Je viens de m'en rendre compte, maintenant ça fonctionne impec, reste a elevé les gens du même camps que soit.


RE: Créer une liste déroulante a partie d'un tableau - Fidelcastor - 28-06-2007

Si V1nc3 à trouvé son bonheur, le sujet est réglé?


RE: Créer une liste déroulante a partie d'un tableau - V1nc3 - 28-06-2007

Oui, désolé, j'ai oublié de mettre le tag Wink