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
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/>';