JeuWeb - Crée ton jeu par navigateur
Gestion données de mes objets - 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 : Gestion données de mes objets (/showthread.php?tid=1085)

Pages : 1 2 3 4


RE: Gestion données de mes objets - arnaudrou - 27-06-2007

heu je ne te comprends pas nemesis_elite j'ai bien dans ma requête fait: objets.description, objets.espace, d'ailleurs ca marche bien pour la description et ca m'affiche la description de mes deux objets, pour l'espace par contre il ne fait pas le total des objets et ne prends que le premier, comment faire pour que les valeurs s'ajoutent??


RE: Gestion données de mes objets - arnaudrou - 28-06-2007

UP svp...


RE: Gestion données de mes objets - arnaudrou - 28-06-2007

j'ai finalement trouvé la requête qui me permet ceci!

Code PHP :
<?php 
$reponse
= mysql_query("SELECT membres.pseudo, membres.casier, objets.nom, objets.description, SUM(objets.espace) AS espace FROM objets JOIN membres_objets ON membres_objets.idobjet = objets.id JOIN membres ON membres.id = membres_objets.idpseudo WHERE membres.pseudo ='$pseudo' GROUP BY membres.pseudo") or die(mysql_error());


while (
$donnees = mysql_fetch_array($reponse) )
{
echo
$donnees['description'] ;
$espaceoccupe = $donnees['espace'] ;

}

Mais maintenant problème inverse ca ne m'affiche plus que la description du premier objet :mauvais: :pleure2:


RE: Gestion données de mes objets - Roworll - 29-06-2007

Normal. Tu fais un GROUP BY sur membre.pseudo.
Cela signifie que toutes les fonctions d'aggrégation (comme SUM, AVG, etc) vous être regroupées par pseudo.
Au résultat, tu n'auras qu'une ligne par pseudo car c'est le champ que tu utilises pour grouper.

A moins d'utiliser des requêtes imbriquées, tu ne peux pas avoir sur la même ligne l'espace individuel d'un objet et l'espace total de tous les objets du joueur.
Et encore, utiliser une requête imbriquée dans ce cas, ce serait un gachis de ressources.

Pour avoir à la fois la liste des objets ET le poids total, tu as trois solutions :
1) - Faire une requête imbriquée si ta version de MySQL le permet (déconseillé donc)
2) - Faire deux requêtes (la première ramène la liste, la 2e le total)
3) - Faire une requête pour ramener la liste d'objets et calculer le total lors de l'affichage.

Pour l'option 2 ça donnerait à vue de nez
Code PHP :
<?php 
$liste
= mysql_query("
SELECT membres.pseudo, membres.casier, objets.nom, objets.description, objets.espace
FROM objets JOIN membres_objets ON membres_objets.idobjet = objets.id
JOIN membres ON membres.id = membres_objets.idpseudo
WHERE membres.pseudo ='
$pseudo'
"
) or die(mysql_error());

$total = mysql_query("
SELECT SUM(objets.espace) AS totespace
FROM objets JOIN membres_objets ON membres_objets.idobjet = objets.id
JOIN membres ON membres.id = membres_objets.idpseudo
WHERE membres.pseudo ='
$pseudo'
"
) or die(mysql_error());

while (
$donnees = mysql_fetch_assoc($liste) ){
echo
$donnees['description'] . ' ' . $donnees['espace'] ;
}

$donnees = mysql_fetch_assoc($total) ){
echo
'Espace Total' . $donnees['totespace'] ;
}

Pour l'option 3 Ce serait plutôt du genre
Code PHP :
<?php 
$liste
= mysql_query("
SELECT membres.pseudo, membres.casier, objets.nom, objets.description, objets.espace
FROM objets JOIN membres_objets ON membres_objets.idobjet = objets.id
JOIN membres ON membres.id = membres_objets.idpseudo
WHERE membres.pseudo ='
$pseudo'") or die(mysql_error());

$total=0;
while (
$donnees = mysql_fetch_assoc($liste) ){
echo
$donnees['description'] . ' ' . $donnees['espace'] .'<br/>';
$total+=$donnees['espace'];
}
echo
'Espace Total' . $total .'<br/>';



RE: Gestion données de mes objets - arnaudrou - 29-06-2007

Merci beaucoup Roworll pour ta réponse détaillé, j'ai testé la 2eme méthode ca marche impec!! merci