(31-01-2011, 03:27 PM)niahoo a écrit :
$requeteALL = mysql_query('SELECT id,village,posx,posy,skin FROM users WHERE id != '.$_SESSION['userid'].'');
while ($downALL = mysql_fetch_array($requeteALL)) {
$posXall = $downALL['posx'];
$posYall = $downALL['posy'];
printf('<a href="profile.php?id=%d">'.
'<img src="default/images/Jeu/icon%s.png" '.
'style="position:absolute;top:%s;left:%d"/>'.'</a>',
$downALL['id'],
$downALL['skin'],
$posYall,
$posXall);
}
@niahoo : Je me suis permis de reprendre ton indentation. Et de corriger le code qui lui génère l'erreur.
Donc Déjà "$downAll++" Comme Ter Rowan le fait remarquer, A quoi sert-il ?
A mon avis à rien, Car $downAll est un tableau à 1 dimension. C'est comme si tu essayer d'ajouter "1" à ton enregistrement sql, cela n'as aucun sens.
Ensuite le mysql_fetch_array soit tu l'utilise une fois comme test dans le while ( Si mysql_fetch_array ne trouve plus de lignes non-traitées à renvoyer dans la variable le test renvois "Faux")
Soit avec le for tu l'utilise comme dans ton 1er code en fin de boucle puisque tu l'appel déjà une fois avant le for. ( Le While dans ce cas est beaucoup mieux car cela t'évite de faire une requête sql pour avoir le maximum de la boucle for )
Pour finir il est normal que tu ai des notices d'index puisque comme il t'as été expliqué précédemment , tu veut utiliser une case inexistante.
Le probléme vient de tes $downALL[$posYall] et $downALL[$posXall] car $posYall et $posXall contiennent la valeur des champs posy et posx de l'enregistrement sql que tu traite à ce tour de boucle. Hors tu souhaite afficher un champs/case de ton tableau $downALL qui porterait comme "nom" la valeur de ces variables.
[ironie gentille ]donc je t'incite à vérifier dans ta base de donnée que tu n'as pas de champs nommé "186" ou "32" ^^ [/ironie gentille ]
Donc le code que j'ai corrigé devrait t'éviter ces erreurs, et en soucis d'optimisation tu pourrais retirer :
$posXall = $downALL['posx'];
$posYall = $downALL['posy'];
et dans ton printf mettre directement :
$downALL['posx'],
$downALL['posy']);
Voila. Bonne chance.