JeuWeb - Crée ton jeu par navigateur
[Résolu] Souci avec un Array dans une requête - 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ésolu] Souci avec un Array dans une requête (/showthread.php?tid=1987)

Pages : 1 2 3


RE: Souci avec un Array dans une requête - Anthor - 21-04-2008

Quel version de mysql utilises tu ?


RE: Souci avec un Array dans une requête - Yoda54 - 21-04-2008

Je te disais de passer par des variables dynamiques (plus d'explications ici: http://fr2.php.net/manual/fr/language.variables.variable.php).

Dans ton cas, cela reviendrait à ça:

Code PHP :
<?php 
$reponse
= mysql_query('SELECT * FROM inventaire WHERE pseudo = "'.$pseudo_joueur.'" AND id_item IN(22, 24, 25)') or die(mysql_error());
while (
$donnees = mysql_fetch_assoc($reponse))
{
${
$donnees['id_item']}=$donnees['nombre'];
// place le numéro de l'item derrière le signe $ et lui attribue pour valeur le nombre d'objet correspondant à cet item
}

Ainsi, si plus tard dans ton développement tu souhaites ajouter l'objet ayant pour ID 15, la seule modif à faire sera d'écrire IN(22, 24, 25, 15) et la variable $15 sera directement utilisable. Ce qui doit résoudre au moins en partie le problème de souplesse évoqué par Sephi-Chan.
Par contre, question optimisation, je ne sais pas du tout s'il vaut mieux utiliser cette solution ou celle avec le ORDER BY FIELD.


RE: Souci avec un Array dans une requête - Kassak - 21-04-2008

Intéressant ça, mais dans ce cas la ça va, ça va donner une variable du genre $22 = .....

Mais si à la place du 22 j'ai un chiffre inconnu, une variable?


RE: Souci avec un Array dans une requête - Yoda54 - 21-04-2008

Si c'est une variable existante, elle a une valeur qui deviendra le nom de la nouvelle variable, sinon, cela renverra une erreur. Pour le chiffre inconnu, je ne vois pas bien ce que tu veux dire.


RE: Souci avec un Array dans une requête - Anthor - 21-04-2008

ORDER BY FIELD, fonctionne parfaitement sous MySQL 4 et 5.


RE: Souci avec un Array dans une requête - Kassak - 21-04-2008

Ce que je veux dire, si dans le IN j'ai une variable contenant un id pouvant aller de 1 a 5000 à la place du 22, comment récupérer ensuite la variable du même style que $22, puisque je ne connaitrais pas la valeur, tu me suis?

Pour le ORDER BY FIELD, j'ai pourtant la bonne version de Mysql, mais je vais d'abord essayer le méthode de yoda Wink


RE: Souci avec un Array dans une requête - Roworll - 21-04-2008

Et pourquoi ne pas reconstruire tout simplement un tableau associatif avec l'Id de l'objet en clé ?
Ensuite, tu réutilises cette clef pour accèder à la valeur.

Je reprends le cas de ta 2e requête
Code PHP :
<?
$reponse
= mysql_query('SELECT nom FROM item WHERE id_item IN("'.$donnees['ingredient_1'].'","'.$donnees['ingredient_2'].'")') or die(mysql_error());
while (
$donnees_ingredient = mysql_fetch_array($reponse)){
$Array[$donnees_ingredient['id_item']] = $donnees_ingredient['nom'];
}

echo
'<td class="label" align="center">'.$Array[$donnees['ingredient_1']].' et '.$Array[$donnees['ingredient_2']].' </td>';
?>

[Edit] Corrections diverses


RE: Souci avec un Array dans une requête - Yoda54 - 21-04-2008

Tu veux dire quelque chose comme ça?

Code PHP :
<?php 
$var1
=12;
$var2=32;
$var3=425;
$query=mysql_query("SELECT * FROM table WHERE id=$id_joueur AND id_item IN($var1, $var2, $var3)");

Dans ce cas, ceux sont les objets 12, 32 et 425 qui seront comptabilisés.

@Anthor: Tu as un lien vers la doc pour ORDER BY FIELD, je ne connaissais pas et ne trouve pas de référence sur le site mysql.com.


RE: Souci avec un Array dans une requête - Belsion - 21-04-2008

Je te rassures Anthor, ça marche très bien chez moi Wink

Peut-être la syntaxe de la requête qui n'a pas été comprise. Parfois un exemple en dur ça peut aider Wink
Citation : mysql_query('SELECT * FROM inventaire WHERE pseudo = "Belsion" AND id_item IN(22, 24, 25) ORDER BY FIELD(id_item, 22, 24, 25)')

Edit: pour une aide un peu plus détaillée: http://case.oncle-tom.net/2007/08/21/mysql-tri-personnalises-aleatoires/


RE: Souci avec un Array dans une requête - Kassak - 21-04-2008

Oki merci à tous, je vais me débrouiller avec tout ça, et tester un peu chaque méthode pour voir ce que ça donne Wink

A plush