JeuWeb - Crée ton jeu par navigateur
Addition champs table - 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 : Addition champs table (/showthread.php?tid=2219)



Addition champs table - Eluox - 31-12-2007

Salut a tous,

je fait actuellement un classement par alliance,
J'ai donc ma table membres qui contient le nombre de points du joueur et son alliance,

Je fait donc un while pour afficher classement, nom alliance ect,

Mais voila, je tombe sur un probleme, comment additioner tout les champs points de la table membres WHERE ally_nom='$ally_nom'

Je pensai faire sa dans un for(){} mais je seche un peu,

Merci a ceux qui pourront m'aider

Cordialement


RE: Addition champs table - Sephi-Chan - 31-12-2007

Peux-tu nous montrer la structure de tes tables que l'on puisse t'aider à résoudre ça ?


RE: Addition champs table - Eluox - 31-12-2007

Est-ce que foreach n'irait pas mieux ?

Code PHP :
<?php 
$requete
= mysql_query("SELECT * FROM c_membres WHERE ally_nom='$ally_nom'") or die (mysql_error());
$assoc = mysql_fetch_assoc($requete);
$points_alliance = 0;
foreach(
$assoc['points'] as $points_courant)
{
$points_alliance += $points_courant;
}
tout sa dans mon while
?


RE: Addition champs table - Sephi-Chan - 31-12-2007

Pas si tu peux faire une opération avec SQL.


RE: Addition champs table - Eluox - 31-12-2007

Effectivement, ma table membre est comme sa :

je ne donne qui ce qui est utile Wink


pseudo varchar(20)
points int(15)
ally_nom varchar(40)


Et je veux additioner tout les points des joueurs de l'alliance $ally_nom


RE: Addition champs table - Sephi-Chan - 31-12-2007

Tu peux faire :
Code PHP :
<?php 
$query
= sprintf("
SELECT ally_nom, SUM(points) AS cumul_points
FROM membres
WHERE ally_nom = '%s'
GROUP BY ally_nom;"
,
$all_nom
);
$sql = mysql_query($query);

Ça fonctionne. Smile

Tu peux si tu veux omettre la clause WHERE, ça te permet alors d'afficher pour chaque alliance un couple nom de l'alliance ; points cumulés par les membre de cette alliance.

Par contre je te conseille de raisonner avec une table alliance externe et à laquelle tu fais référence par un identifiant.


Sephi-Chan


RE: Addition champs table - Eluox - 31-12-2007

J'ai fait un mysql_fetch_asso de la requete, e j'affiche $tablo['cumul_points']; dans mon while,

Mais a affiche le même resultat a toute les alliance Confused


RE: Addition champs table - Sephi-Chan - 31-12-2007

C'est pas comme ça qu'on s'y prend pour traiter une requête ! :O

Essaye ça, ça devrait marcher (je l'ai testé) :
Code PHP :
<?php 
$query
= sprintf("
SELECT ally_nom, SUM(points) AS cumul_points
FROM membres
WHERE ally_nom = '%s'
GROUP BY ally_nom;"
,
$ally_nom
);
$query = mysql_query($query);

$output = '<ul>';
while(
$sql = mysq_query($query)){
$output .= "<li>Les membres de l'alliance ".$sql['ally_nom']." ont accumulé ".$sql['cumul_points']." points.</li>";
}
$output .= '</ul>';

echo
$output;


Sephi-Chan


RE: Addition champs table - Eluox - 31-12-2007

Desolé, j'utlise rarement ce genre de requete
Merci, je teste sa Wink


RE: Addition champs table - Sephi-Chan - 31-12-2007

D'ailleurs tu avais pas donné une bonne solution. Smile