Page 1 sur 2

Histoire de boucle

Posté : 17 oct. 2005, 14:27
par Domi_d
Bonjour,

Comment remplacer ce code par une boucle dont la première valeur est 1 (req1) et la dernière 64 (req64) :
$result1 = mysql_query("SELECT id,joueur from table where id='$id1'");
$req1 = mysql_fetch_object($result1);
$joueur1 = $req1->joueur; $id1=$req1->id;

$result2 = mysql_query("SELECT id,joueur from table where id='$id2'");
$req2 = mysql_fetch_object($result2);
$joueur2 = $req2->joueur; $id2=$req2->id;
---
$result64 = mysql_query("SELECT id,joueur from table where id='$id64'");
$req64 = mysql_fetch_object($result64);
$joueur64 = $req64->joueur; $id64=$req64->id;
et
<input type="hidden" name="joueur1" value="<? echo $joueur1; ?>"><input type="hidden" name="id1" value="<? echo $id1; ?>">
<input type="hidden" name="joueur2" value="<? echo $joueur2; ?>"><input type="hidden" name="id2" value="<? echo $id2; ?>">
---
<input type="hidden" name="joueur64" value="<? echo $joueur64; ?>"><input type="hidden" name="id64" value="<? echo $id64; ?>">
---------------------
Merci d'avance

Posté : 17 oct. 2005, 14:32
par zeus
si tu fait
$i = 1;
$joueur{$i} = 2;

echo $joueur1 // affiche 2
tu comprendras que tu peut faire
for($i = 1; $i <= 64; $i++) {
    $result{$i} = mysql_query("SELECT id,joueur from table where id='$id{$i}'");
    $req{$i} = mysql_fetch_object($result{$i});
    $joueur{$i} = $req{$i}->joueur; $id{$i}=$req{$i}->id;
}
for($i = 1; $i <= 64; $i++) {
    echo "<input type='hidden' name='joueur".$i."' value='".$joueur{$i}."'><input type='hidden' name='id".$i."' value='".$id{$i}."'>";
}

Posté : 17 oct. 2005, 14:51
par Domi_d
Merci pour ton aide zeus.

Cependant en regardant la source du code après validation, j'obtiens ceci :
<input type='hidden' name='joueur1' value=''><input type='hidden' name='id1' value=''>
A quoi est-ce dû ?

Posté : 17 oct. 2005, 14:54
par zeus
est-ce tu es sûr que $id1, 2, 64 contient quelquechose ?

Posté : 17 oct. 2005, 15:00
par Domi_d
Oui oui, puisqu'en testant avec req1, req2... écrit en dur sans boucle, ca retourne bien la valeur et l'id du joueur 1, joueur2...

Posté : 17 oct. 2005, 15:02
par zeus
essaye ça pour voir
for($i = 1; $i <= 64; $i++) {
    echo "<input type='hidden' name='joueur".$i."' value='".{$joueur{$i}}."'><input type='hidden' name='id".$i."' value='".{$id{$i}}."'>";
}

Posté : 17 oct. 2005, 15:48
par Domi_d
J'obtiens une erreur :
Parse error: parse error, unexpected '{' in c:\program... sur la ligne
    echo "<input type='hidden' name='joueur".$i."' value='".{$joueur{$i}}."'><input type='hidden' name='id".$i."' value='".{$id{$i}}."'>"; 

Posté : 17 oct. 2005, 15:49
par zeus
Et comme ça ?
$joueur_courant = $joueur{$i};
$id_courant = $id{$i};
echo "<input type='hidden' name='joueur".$i."' value='".$joueur_courant."'><input type='hidden' name='id".$i."' value='".$id_courant."'>"; 

Posté : 17 oct. 2005, 15:54
par Domi_d
Ben non, toujours des value vide ... bizarre

Posté : 17 oct. 2005, 15:56
par zeus
question très bête, est ce que les 2 bouts de script que je t'ai donné sont dans le même fichier ? :?

Posté : 17 oct. 2005, 16:00
par Domi_d
Parfaitement :
<body>
<?
require ('../../../../inc/config.php');
mysql_connect($serveur,$login,$pass);
mysql_select_db ($base);
for($i = 1; $i <= 64; $i++) { 
    $result{$i} = mysql_query("SELECT id,joueur from $table where id='$id{$i}'"); 
    $req{$i} = mysql_fetch_object($result{$i}); 
    $joueur{$i} = $req{$i}->joueur; $id{$i}=$req{$i}->id; 
} 
?>

<input type="hidden" name="table" value="<? echo $table; ?>">
<input type="hidden" name="open" value="<? echo $open; ?>">
<form action="etape3.php?table=<? echo $table; ?>&open=<? echo $open; ?>" method="post">
<?
for($i = 1; $i <= 64; $i++) { 
    echo "<input type='hidden' name='joueur".$i."' value='".$joueur{$i}."'><input type='hidden' name='id".$i."' value='".$id{$i}."'>"; 
}  
?>

Posté : 17 oct. 2005, 16:02
par zeus
Essaye ce code et dit moi si il affiche les echo
<body>
<?
require ('../../../../inc/config.php');
mysql_connect($serveur,$login,$pass);
mysql_select_db ($base);
for($i = 1; $i <= 64; $i++) { 
    $result{$i} = mysql_query("SELECT id,joueur from $table where id='$id{$i}'"); 
    $req{$i} = mysql_fetch_object($result{$i}); 
    $joueur{$i} = $req{$i}->joueur; 
    echo $joueur{$i};
    $id{$i}=$req{$i}->id;
    echo $id{$i}; 
} 
?>

<input type="hidden" name="table" value="<? echo $table; ?>">
<input type="hidden" name="open" value="<? echo $open; ?>">
<form action="etape3.php?table=<? echo $table; ?>&open=<? echo $open; ?>" method="post">
<?
for($i = 1; $i <= 64; $i++) { 
    echo "<input type='hidden' name='joueur".$i."' value='".$joueur{$i}."'><input type='hidden' name='id".$i."' value='".$id{$i}."'>"; 
}  
?>

Posté : 17 oct. 2005, 16:07
par Domi_d
Tiens donc... je n'ai que le premier enregistrement de ma table qui s'affiche, pourtant il y a 180 entrées !

Posté : 17 oct. 2005, 16:14
par zeus
Fait tourner juste ce bout de code et dit moi ce qu'il se passe
for($i = 1; $i <= 64; $i++) {
    $result = "SELECT id,joueur from $table where id='$id{$i}'";
    echo $result;
} 

Posté : 17 oct. 2005, 16:18
par Domi_d
il est écris à l'écran
SELECT id,joueur from top_d2_d1_tc where id='1'

jusqu'à id='64'