Problème de while ne fonctionnant pas

Résolu
tony1239456 Messages postés 41 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 9 septembre 2008 - 23 févr. 2006 à 20:09
tony1239456 Messages postés 41 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 9 septembre 2008 - 24 févr. 2006 à 14:40
Bonjour j'ai un problème avec ma fonction while qui devrait m'afficher un résultat sous forme d'un tableau. Voici mon code :

<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('sonarty');
$requete = mysql_query(\"SELECT id,x,y FROM jeu\") or die(mysql_error());
$nombre_ligne=10;
$nombre_colonne=10; for ($i=1;$i <= $nombre_ligne;$i++)
{
echo'----

';
for($i_=1;$i_ <= $nombre_colonne;$i_++)
{
while ($aff = mysql_fetch_array($requete) )
{if($i $aff['x'] AND $i_ $aff['y']){
echo'&nbsp;,
'; }
else{ echo'&nbsp;,
'; }
}
}
echo'
';
}
?>

Sa ne m'affiche que 2 cases alors que sa devrait former un tableau de 10 colonnes ainsi que 10 lignes. Quand j'enlève le while tout fonctionne, aidez-moi please !
Tony123945

11 réponses

yergo Messages postés 135 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 18 avril 2006
23 févr. 2006 à 21:02
mais tu peux faire tout ca sans les "for"
en utilisant juste le while !!!!
3
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
24 févr. 2006 à 14:02
Tu fais la boucle comme je l'ai proposé dans l'autre post, et, tu peux insérer manuellement une case vide au milieu:
if( ... )
{
echo '<td>&nbsp;</td>';
$tr++;
}

Il faudrait que tu précises quand tu veux des cases vides!

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
3
yergo Messages postés 135 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 18 avril 2006
23 févr. 2006 à 20:56
salut,
je comprends pas vraiment ce que t'essai de faire avec ce code !!!!!!!
0
tony1239456 Messages postés 41 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 9 septembre 2008
23 févr. 2006 à 21:00
Ba en fait j'éssaye de construire un mini jeu en php, et je fais une première boucle for permettant les ligne de la table : <tr> et à l'interieur de cette boucle je fais les colonnes : <td> et je construis la table entière. Avec le while je récupère les personnages enregistrés et leur positions x et y pour les placer sur le plateau.

Tony123945
0

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

Posez votre question
tony1239456 Messages postés 41 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 9 septembre 2008
23 févr. 2006 à 21:09
non car le plateau ne sera pas crée et il n'y aura que le nombre de personnages enregistrés et puis la boucle s'arretera
. Moi ce que je veux c'est avoir un tableau par exemple :
<tr> // Ligne 1
<td class="td></td> //Colonne 1
<td class="td></td> //Colonne 2
<td class="td></td> //Colonne 3
<td class="td></td> //Colonne 4
<td class="td></td> //Colonne 5
</tr>
<tr> // Ligne 2

<td class="td></td> //Colonne 1
<td class="td></td> //Colonne 2

<td class="td></td> //Colonne 3

<td class="td></td> //Colonne 4

<td class="td></td> //Colonne 5

</tr>
<tr> // Ligne 3

<td class="td></td> //Colonne 1
<td class="td></td> //Colonne 2

<td class="td></td> //Colonne 3

<td class="td></td> //Colonne 4

<td class="td></td> //Colonne 5

</tr>
<tr> // Ligne 4

<td class="td></td> //Colonne 1
<td class="td></td> //Colonne 2

<td class="td></td> //Colonne 3

<td class="td></td> //Colonne 4

<td class="td></td> //Colonne 5

</tr>
<tr> // Ligne 5

<td class="td></td> //Colonne 1
<td class="td></td> //Colonne 2

<td class="td></td> //Colonne 3

<td class="td></td> //Colonne 4

<td class="td></td> //Colonne 5

</tr>

Et par exemple un personnage qui a x=5 et y=3 ira a la ligne 5 de la colonne 3 et sera affichée comme sa par exemple :
<tr> // Ligne 5


<td class="td></td> //Colonne 1

<td class="td></td> //Colonne 2


<td class="td>PERSO x=5; y=3</td> //Colonne 3


<td class="td></td> //Colonne 4


<td class="td></td> //Colonne 5


</tr>
Tony123945
0
tony1239456 Messages postés 41 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 9 septembre 2008
23 févr. 2006 à 21:43
Personne n'a une idée please !

Tony123945
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
24 févr. 2006 à 10:49
Salut!
http://www.phpcs.com/infomsg/GALERIE-IMAGE_658422.aspx

Regarde ca ma réponse, il me semble que c'est ce que tu veux... :)
Commence avec ca et dis nous si ca coince!

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
tony1239456 Messages postés 41 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 9 septembre 2008
24 févr. 2006 à 10:55
Je pense que sa ne fonctionnerais pas car la boucle s'arrete au nombre d'enregistrements dans mysql. Il faudrait aussi qu'il y ait des <td></td> ne contenant rien. Voila le code que j'aimerais faire et qui marche mais en utilisant mysql :
<?php
$nombre_ligne=20;
$nombre_colonne=20;

if(empty($_GET['changex']) || empty($_GET['changey']) || $_GET['changex'] == '' || $_GET['changey'] == '')
{
$aff['x'] = 1;
$aff['y'] = 1;
}
else
{
$x = $_GET['changex'];
$y = $_GET['changey'];
$aff['x'] = $x;
$aff['y'] = $y;
}

for ($i=1;$i <= $nombre_ligne;$i++)
{
echo'<tr>
';
for($i_=1;$i_ <= $nombre_colonne;$i_++)
{

if($i $aff['x'] AND $i_ $aff['y']){
echo'<td class="perso">&nbsp;</td>
'; }
else{ echo'<td class="td" onClick="window.location.replace(\'carte_jeu_demarrer.php?changex='.$i.'&changey='.$i_.'\')">&nbsp;</td>
'; }



}
echo'</tr>

';
}

?>

Tony123945
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
24 févr. 2006 à 11:11
Tu peux gérer ca manuellement de la boucle...

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
tony1239456 Messages postés 41 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 9 septembre 2008
24 févr. 2006 à 11:19
J'ai pas très bien compris, peux-tu réexpliquer s'il te plait ?

Tony123945
0
tony1239456 Messages postés 41 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 9 septembre 2008
24 févr. 2006 à 14:40
Oui mais le but du jeu est que le personnage peut bouger comme il le souhaite et il y a aussi des elements de décors. J'ai trouvé la solution sur le site du zero :

<style>
.ligneMap {
height: 30px;
clear: left;
cursor:pointer;
}
.caseMap {
width: 30px;
height: 30px;
float: left;
background-image: url('arene_fond.png');
border: 0px solid white;
}
.oui
{
background-color:red;
}
.coucou
{
background-color:green;
}
</style>
<?php

mysql_connect('localhost', 'root', '');
mysql_select_db('zinsearch');
$pseudo = 'tony4758';

if(empty($_GET['changex']) || empty($_GET['changey']) || $_GET['changex'] == '' || $_GET['changey'] == '')
{}
else
{
$x = $_GET['changex'];
$y = $_GET['changey'];mysql_query("UPDATE persos SET posx '$x', posy '$y' WHERE nom = '$pseudo'") or die(mysql_error());
}

$recup = mysql_query("SELECT nom,posx,posy FROM persos WHERE nom='$pseudo'") or die(mysql_error());

$fetch = mysql_fetch_assoc($recup);

$posx = $fetch['posx'];
$posy = $fetch['posy'];

$compteurX = $posx - 4;
$compteurY = $posy + 4;

$finX = $posx + 4;
$finY = $posy - 4;

$debutX = $posx - 4;

while($compteurY >= $finY) {
echo '
', "\n";

while($compteurX <= $finX) {
echo "\t\t\t\t\t\t\t", '
';
$test = mysql_query("SELECT nom,skin FROM persos WHERE posx='$compteurX' AND posy='$compteurY'") or die(mysql_error());
if(mysql_num_rows($test) == 1) {
$data = mysql_fetch_assoc($test);
echo '
&nbsp;
';
}
echo '
', "\n";
$compteurX++;
}

echo "\t\t\t\t\t\t", '
', "\n";
$compteurX = $debutX; // <===============ICI
$compteurY--;
}

mysql_close();

?>

Merci pour votre aide !!!

Tony123945
0
Rejoignez-nous