Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1339 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  compter des résultats dans une table [ résolu ]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

compter des résultats dans une table [ résolu ]

n°277713
mecano1
Posté le 30-12-2002 à 23:07:07  profilanswer
 

salut à tous,
Cela fait quelques heures que je me casse la tête pour pouvoir compter le nombre de chaps dans ma table.
Je vais essayer d'être clair:
Je fait un classement de pilote de rallye, je récupère de la part de chaque membre son nom, sa fonction, ainsi que son classement pour chaque rallyes.
J'ai donc crée une table comportant 3 champs:"nom_pilote","fonction","resultat"
 
ensuite j'ai écrit ce bout de code pour afficher les résultats:
 
$query_pilote="select * from $table WHERE fonction='pilote' GROUP BY nom_pilote";
$result_pilote=mysql_query($query_pilote);
 
while ($classement_pilote = mysql_fetch_row($result_pilote))
{
 
// compte le nombre de courses pour chaque pilote
 
$nb_course_pilote = mysql_query("select count (*) FROM 'classementSAP' where nom_pilote like '$tableauclassement[0]'" );
 
// affichage du classement général après calcul
 
echo "$nb_course
<font face='Arial' size='5'>
 <center>
  <TABLE CELLPADDING=4 CELLSPACING=0 width='60%'>
   <TR BGCOLOR='#454545'>
         <TD width='3%' >
     <b><FONT COLOR='#5BFF79'>$chiffre_pilote</FONT></b></font>
    </TD>
          <TD width='25%' >
     <b><FONT COLOR='#FFFFFF'>$classement_pilote[0]</FONT></b></font>
    </TD>
    <TD width='25%'>
     <b><FONT COLOR='#FFFFFF'>$classement_pilote[1]</FONT></b></font>
    </TD'>
    <TD width='12%'>
     <b><FONT COLOR='#FFFFFF'>$nb_course_pilote</FONT></b></font>
    </TD>
       </TR>
  </table>
 </center>
</font>
";
}
-----------------------------------------------------
donc ca fonctionne, les pilotes sont affichés avec leur fonction mais pas le nombre de courses qu'ils ont fait.
je me doute bien que le problème est là:
 
$nb_course_pilote = mysql_query("select count (*) FROM 'classementSAP' where nom_pilote like '$tableauclassement[0]'" );
 
mais je n'arrive pas à le regler, un peut d'aide serait la bien venue, merci


Message édité par mecano1 le 02-01-2003 à 00:12:41
mood
Publicité
Posté le 30-12-2002 à 23:07:07  profilanswer
 

n°277730
mrbebert
Posté le 31-12-2002 à 00:42:41  profilanswer
 

Elle sort d'où la variable $tableauclassement :??:

n°277731
sielfried
Posté le 31-12-2002 à 00:42:42  profilanswer
 

Premièrement, je ne vois pas très bien ce que vient faire le GROUP BY dans :

$query_pilote="select * from $table WHERE fonction='pilote' GROUP BY nom_pilote";


 
J'aurais plutôt vu :

$query_pilote = "SELECT * FROM $table WHERE fonction='pilote' ORDER BY resultat";


 
(puisque résultat correspond au classement).
 
[Edit : SELECT nom_pilote, resultat plutôt]
 
Sinon au niveau de :

$nb_course_pilote = mysql_query("select count (*) FROM 'classementSAP' where nom_pilote like '$tableauclassement[0]'" );


 
Qu'est-ce que $tableauclassement ? Tu ne voulais pas plutôt écrire $result_pilote[0] ?
 
Enfin ici :

<b><FONT COLOR='#5BFF79'>$chiffre_pilote</FONT></b></font>


 
... j'aurais pensé à $result_pilote[2] pour afficher le classement du pilote devant son nom.
 
Dernier truc : puisque tu cherches uniquement les pilotes dans ta table, pourquoi afficher la fonction (qui sera toujours "pilote" dans ton tableau) ?


Message édité par sielfried le 31-12-2002 à 01:50:02

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°277732
mrbebert
Posté le 31-12-2002 à 00:45:18  profilanswer
 

De toute façon, ne serait-ce pas plus simple de ne faire qu'une seule requête :
 
SELECT $table.*, count(*) AS Total
FROM $table, classementSAP
WHERE fonction='pilote'
   AND $table.nom_pilote = classementSAP.nom_pilote
GROUP BY $table.nom_pilote


Message édité par mrbebert le 31-12-2002 à 00:45:34
n°277736
mecano1
Posté le 31-12-2002 à 01:08:39  profilanswer
 

bon en fait effectivement je me suis lourdé c'est pas $tableauclassement, mais $classement_pilote.
 
pour répondre à sielfried, je ne peux pas ecrire:
 

Citation :

$query_pilote = "SELECT * FROM $table WHERE fonction='pilote' ORDER BY resultat";  

 
car au fur et a mesure des entrée je me retrouve par exemple avec 3 fois le pilote nicolas qui a fait 3 rallyes différents, et comme je ne veux qu'il ne soit affiché qu'une seule fois j'ai fait un GROUP BY nom_pilote.
Ensuite j'ai donné une fonction parceque mon script que vous voyez n'est pas complet, il y a aussi des copilotes que je met dans le même style de tableau et il y a pire encore j'ai des pilotes qui deviennent copilote desfois.
Enfin bon mon affichage est bon mais je n'arrive pas à compter le nombre de rallyes pour le pilote nicolas par exemple.
c'est sur que j'ai oublié des trucs pour pas faire un post hyper lourd, mais comme vous me le demandez si gentillement je vous met le script complet pour mieux comprendre:
 

Citation :

<html>
 <HEAD>
                <TITLE>enregistrement des classements</TITLE>
        </HEAD>
<BODY onload="javascript:{if(parent.frames[0]&&parent.frames['navigation'].Go)parent.frames['navigation'].Go()}" BACKGROUND="../gifs/violet1.jpg" TEXT="white">
 
 
<?
echo "<font face='Arial' size='5'>
  <center>Classement SAP par résultat de Classe</center>
  <br>
   <center>
    <TABLE CELLPADDING=4 CELLSPACING=0 width='60%'>
         <TR BGCOLOR='#454545'>
      <TD width='3%'>
       <b><FONT COLOR='yellow'>Cl</FONT></b></font>
      </TD>
            <TD width='25%'>
       <b><FONT COLOR='yellow'>Nom</FONT></b></font>
      </TD>
      <TD width='25%'>
       <b><FONT COLOR='yellow'>Fonction</FONT></b></font>
      </TD>
      <TD width='12%'>
       <b><FONT COLOR='yellow'>Nb de courses</FONT></b></font>
      </TD>
         </TR>
    </TABLE>
   </center>
  </font>
";
 
include("conf.php" );
$table="classementSAP";
 
// connection à la base
 
MYSQL_CONNECT($serveur,$login,$pass);
mysql_select_db("$base" );
 
// selectionne toutes les entrées de la table classementSAP quand la fonction est pilote
 
$query_pilote="select * from $table WHERE fonction='pilote' GROUP BY nom_pilote";
$result_pilote=mysql_query($query_pilote);
 
// selectionne toutes les entrées de la table classementSAP quand la fonction est 'copilote'
 
$query_copilote="select * from $table WHERE fonction='copilote' GROUP BY nom_pilote";
$result_copilote=mysql_query($query_copilote);
 
/////////////////
// classement pilote //
/////////////////
 
// met la variable chiffre_pilote à 0 pour le classement des pilotes
 
$chiffre_pilote=0;
 
// affiche ligne par ligne les résultats jusqu'à la fin du tableau 'pilote'
 
while ($classement_pilote = mysql_fetch_row($result_pilote))
{
 
// compte le nombre de courses pour chaque pilote
 
$nb_course_pilote = mysql_query("select count (*) FROM 'classementSAP' where nom_pilote like '$classement_pilote[0]'" );
 
// augmente la variable chiffre_pilote de 1 pour le classement pilote
 
$chiffre_pilote=$chiffre_pilote+1;
 
// affichage du classement général après calcul
 
echo "$nb_course
<font face='Arial' size='5'>
 <center>
  <TABLE CELLPADDING=4 CELLSPACING=0 width='60%'>
   <TR BGCOLOR='#454545'>
         <TD width='3%' >
     <b><FONT COLOR='#5BFF79'>$chiffre_pilote</FONT></b></font>
    </TD>
          <TD width='25%' >
     <b><FONT COLOR='#FFFFFF'>$classement_pilote[0]</FONT></b></font>
    </TD>
    <TD width='25%'>
     <b><FONT COLOR='#FFFFFF'>$classement_pilote[1]</FONT></b></font>
    </TD'>
    <TD width='12%'>
     <b><FONT COLOR='#FFFFFF'>$nb_course_pilote</FONT></b></font>
    </TD>
       </TR>
  </table>
 </center>
</font>
";
}
///////////////////
// classement copilote //
///////////////////
 
// met la variable chiffre_copilote à 0 pour le classement des copilotes
 
$chiffre_copilote=0;
 
// affiche ligne par ligne les résultats jusqu'à la fin du tableau 'copilote'
 
while ($classement_copilote = mysql_fetch_row($result_copilote))
{
 
// compte le nombre de courses pour chaque pilote
 
$nb_course_copilote = mysql_query("select count (*) FROM 'classementSAP' where nom_pilote like '$classement_copilote[0]'" );
 
// augmente la variable chiffre_copilote de 1 pour le classement copilote
 
$chiffre_copilote=$chiffre_copilote+1;
 
// affichage du classement général après calcul
echo "$nb_course
<font face='Arial' size='5'>
 <center>
  <TABLE CELLPADDING=4 CELLSPACING=0 width='60%'>
   <TR BGCOLOR='#454545'>
          <TD width='3%' >
     <b><FONT COLOR='red'>$chiffre_copilote</FONT></b></font>
    </TD>
    <TD width='25%' >
     <b><FONT COLOR='#FFFFFF'>$classement_copilote[0]</FONT></b></font>
    </TD>
    <TD width='25%'>
     <b><FONT COLOR='#FFFFFF'>$classement_copilote[1]</FONT></b></font>
    </TD'>
    <TD width='12%'>
     <b><FONT COLOR='#FFFFFF'>$nb_course_copilote</FONT></b></font>
    </TD>
       </TR>
  </table>
 </center>
</font>
";
}
 
MYSQL_CLOSE();  
?>
 
 
</BODY>
</HTML>


Message édité par mecano1 le 31-12-2002 à 01:09:44
n°277744
sielfried
Posté le 31-12-2002 à 01:53:09  profilanswer
 

Ce serait pas mal que tu montres quelques exemples d'enregistrement pour ta table avec ce que t'aimerais obtenir, car y'a pas mal de trucs que je parviens pas à comprendre, là, comme ça (par rapport à ce que tu veux faire).


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°278089
mecano1
Posté le 01-01-2003 à 17:56:45  profilanswer
 

oui je sais c'est pas évident de comprendre ce que je veux obtenir.
Voici les champs de ma table dans l'ordre:
-nom_pilote (je met le nom du pilote ou du copilote en TEXT)
-fonction (2 choix: pilote ou copilote en TEXT)
-type_course (4 choix: rallye,course de cote,slalom et circuit en TEXT)
-nom_course (nom de la course TEXT)
-result_classe (classement à cette course par cylindrée de voiture TINYINT)
-result_groupe (classement à cette course par categorie de voiture TINYINT)
-result_scratch (classement à cette course par résultat général TINYINT).
 
Là en fait ce que je cherche à faire c'est pouvoir ressortir le nombre de courses qu'à éffectué chaque pilotes afin de faire un calcul de moyenne et d'afficher le classement.
Va voir sur ce lien pour voir à quoi ca ressemble pour le moment et ce qu'il me manque, c'est une table d'essai tu peux y entrer un nouvel enregistrement.
http://vassistance2.free.fr/classe [...] sement.php


Message édité par mecano1 le 01-01-2003 à 17:59:00
n°278113
sielfried
Posté le 01-01-2003 à 19:24:30  profilanswer
 

En fait dès le début j'ai pas capté une erreur qui est sûrement à l'origine de ton pb :
 

$nb_course_pilote = mysql_query("select count (*) FROM 'classementSAP' where nom_pilote like '$tableauclassement[0]'" );


 
A la place essaie :
 


$res = mysql_query("select count (*) FROM 'classementSAP' where nom_pilote like '$tableauclassement[0]'" );
$nb_course_pilote = mysql_fetch_row($res);


 
Et à l'affichage tu n'indiques pas $nb_course_pilote mais $nb_course_pilote[0].
 
Dis-moi ce que ça donne.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°278133
mecano1
Posté le 01-01-2003 à 20:21:42  profilanswer
 

J'ai remplacé dans ton bout de code $tableauclassement par $classement_pilote vu que j'ai fait des modifs depuis la 1ere fois et alors là je me tappe un:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/xampp/classement_sap/affiche_classement.php on line 66
 
et la ligne 66 c'est justement ce que je viens de rajouter

n°278135
sielfried
Posté le 01-01-2003 à 20:29:56  profilanswer
 

Oui désolé je voulais dire :
 

$res = mysql_query("select count (*) FROM 'classementSAP' where nom_pilote like '$classement_pilote[0]'" );


 
Ca devrait marcher... Sinon vire les ' autour du nom de la table, je pense pas que ce soit autorisé (` l'est).


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
mood
Publicité
Posté le 01-01-2003 à 20:29:56  profilanswer
 

n°278138
mecano1
Posté le 01-01-2003 à 20:39:48  profilanswer
 

non sielfried toujours pas, c'est exactement le même chose, pourtant j'ai tappé ca:
 
$res = mysql_query("select count (*) FROM $table where nom_pilote like '$classement_pilote[0]'" );
$nb_course_pilote = mysql_fetch_row($res);
 
j'ai exactement le même message d'erreur.

n°278141
mrbebert
Posté le 01-01-2003 à 20:55:57  profilanswer
 

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource  
 
ca veut dire que le résultat passé à la fonction mysql_fetch_row() (qui est le résultat de la fonction mysql_query()) ne correspond pas à un descripteur valide. C'est à dire que la requête de mysql_query n'est pas correcte.
 
Essaie plutot :
$res = mysql_query("select count (*) FROM $table where nom_pilote like '" . addslashes($classement_pilote[0]) . "'" );

n°278145
mecano1
Posté le 01-01-2003 à 21:06:04  profilanswer
 

là j'ai toujours la même erreur, mais à mon avis ca viens du fait qu'on ne peux pas faire un "mysql_fetch_row" si la variable "$classement_pilote[0]" ne contient qu'un seul enregistrement


Message édité par mecano1 le 01-01-2003 à 21:18:57
n°278148
mecano1
Posté le 01-01-2003 à 22:11:43  profilanswer
 

c'est bon ca fonctionne je m'en suis sorti comme ca:
 
$res = mysql_query("select count(result_classe) FROM $table WHERE nom_pilote like '$classement_pilote[0]' and fonction='pilote'" );
$nb_course_pilote = mysql_fetch_row($res);  
 
et j'ai affiché $nb_course_pilote[0]
 
merci pour l'aide que vous m'avez apporté :bounce:
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  compter des résultats dans une table [ résolu ]

 

Sujets relatifs
[ resolu ] JTree, est ce qu'on pe représenter un système de fichier ??[Java] Prob de connection a une base Oracle [Resolu]
[C] Calcul du déterminant d'une matrice [résolu] :sol[Java] Convertir un String en un Object Color [Résolu]
[Java] Rechercher un String dans un autre String [Résolu][Java] Occuper plusieurs cases dans un GridLayout? [Résolu]
[Java] Conversion int,double <-> object est ce possible? [Résolu]probleme de <SELECT> et présélection d'une value [RESOLU]
ident failed for user machin?? d'où ça vient (Postgres inside)[résolu][C] Liste chainée que j'arrive pas à parcourir [resolu]
Plus de sujets relatifs à : compter des résultats dans une table [ résolu ]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR