IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PHP Statistique Déchet pour un parc à conteneur


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 5
    Points
    5
    Par défaut PHP Statistique Déchet pour un parc à conteneur
    Bon voilà en fait je dois faire une statistique des déchets des utilisateurs d'un parc à conteneur alors on entre son ID d'utilisateur dans la page HTML avec le code pour pouvoir mettre le mettre dans phpMyAdmin et puis on appuie sur OK et il doit faire la moyenne des déchets de l'ID utilisateur qu'on a encodé genre le numéro 1 et la ca affiche genre 20% de déchet vert 15% de dechet verre etc.... mais là quand je met l'ID utilisateur 1 il me fait la moyenne de tous les déchets encodés il prend pas en compte l'ID utilisateur 1 car il prend tous les déchets même ceux de l'ID utilisateur 2.

    Pouvez vous m'aider ?

    Voilà le code du fichier PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <?
    $o='0';
    $pass=$_POST['motpasse'];
    $id=$_POST['n_util'];
    $link=mysql_connect("192.168.0.125","normcy",$pass) or die ("Impossible");
    mysql_select_db("normcy_db") or die ("pas de base de donnees");
     
     
     
    $requete="select count(vert) from passages where vert like 'X'";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $vert=$tab[0];
     
    $requete="select count(verre) from passages where verre like 'X'";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $verre=$tab[0];
     
    $requete="select count(encombrant) from passages where encombrant like 'X'";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $encombrant=$tab[0];
     
    $requete="select count(metaux) from passages where metaux like 'X'";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $metaux=$tab[0];
     
    $requete="select count(bois) from passages where bois like 'X'";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $bois=$tab[0];
     
    $requete="select count(papier) from passages where papier like 'X'";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $papier=$tab[0];
     
     
     
    $total=$vert+$verre+$encombrant+$metaux+$bois+$papier;
    echo "<FONT class=normal face=Arial color='green' SIZE=3>Utilisateur $id</FONT><p>";
    echo "<FONT class=normal face=Arial color='green' SIZE=3>Total de tous les d&eacute;chets amen&eacute;s par <br>cette personne est de $total quantit&eacute;s</FONT><p>";
    $totals=$total/100;
    $verts=$vert/$totals;
    $verres=$verre/$totals;
    $encombrants=$encombrant/$totals;
    $metauxs=$metaux/$totals;
    $boiss=$bois/$totals;
    $papiers=$papier/$totals;
    echo "<table border>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Vert</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$verts %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Verre</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$verres %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Encombrant</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$encombrants %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Metaux</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$metauxs %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Bois</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$boiss %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Papier</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$papiers %</FONT></td>
    	</tr>";
    echo "</table>";
    ?>
    Merci de bien vouloir m'aider au plus vite merci encore

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    comment veux tu qu'on t'aide sans avoir la structure de ta table. au fait quand tu fais like "X" ça veut dire quoi

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Tien voilà la table de la base de donnée c'est ca que tu voulais ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATE TABLE `passages` (
      `id_passage` int(11) NOT NULL auto_increment,
      `date` date NOT NULL default '0000-00-00',
      `vert` varchar(100) NOT NULL default '',
      `verre` varchar(100) NOT NULL default '',
      `encombrant` varchar(100) NOT NULL default '',
      `metaux` varchar(100) NOT NULL default '',
      `bois` varchar(100) NOT NULL default '',
      `papier` varchar(100) NOT NULL default '',
      `n_util` int(11) NOT NULL default '0',
      PRIMARY KEY  (`id_passage`)
    ) 
     
    CREATE TABLE `utilisateurs` (
      `id_util` int(11) NOT NULL auto_increment,
      `nom` varchar(100) NOT NULL default '',
      `prenom` varchar(100) NOT NULL default '',
      `rue` varchar(100) NOT NULL default '',
      `numero` int(4) NOT NULL default '0',
      `cp` int(4) NOT NULL default '0',
      `ville` varchar(100) NOT NULL default '',
      `telephone` varchar(15) NOT NULL default '',
      PRIMARY KEY  (`id_util`)
    )
    Et X = un déchet encodé si tu veux et 0 = pas de déchet encodé

    Tu comprends mnt ?

  4. #4
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    je ne vois pas dans tes requetes où tu prends en compte l'utilisateur ?
    tu connais le SQL ou pas ?
    il faut faire une jointure il me semble si j'ai bien compris ton problème (utilisateurs.id_util=passages.n_util)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    J'apprends le SQL pour ca que je sais pas et la jointure je devrais la mettre ou dans le code tu serais m'aider stp ??

  6. #6
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    select count(vert) from passages where vert like 'X' and utilisateurs.id_util=passages.n_util

    cette requete va avoir pr effet de récuperer le nombre de lignes correspondant aux conditions :
    vert like x et là où l'id utilisateurs existe ds la table utilisateurs et dans la table passages

    exemple :

    passage utilisateur
    id_pass id_utilisateur vert id_utilisateur
    1 1 oui 1
    2 2 oui 2
    3 1 oui
    4 1 oui
    5 1 non

    ça te raménera donc : 4 (4 oui)
    mnt si tu veux que ce soit sur un utilisateur en particulier tu ajoutes en plus à la requete que je t'ai écrite :
    AND utilisateur.id_utilisateur=1 (pour l'utilisateur 1 par exemple)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Voilà j'ai testé et ca marche toujours pas j'ai peu etre fait une erreur vous pouvez me dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <?
     
    $o='0';
    $pass=$_POST['motpasse'];
    $id=$_POST['n_util'];
    $link=mysql_connect("127.0.0.1","root",$pass) or die ("Impossible");
    mysql_select_db("mysql") or die ("pas de base de donnees");
     
    $requete="select count(vert) from passages where vert like 'X' and utilisateurs.id_util=passages.n_util";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $vert=$tab[0];
     
    $requete="select count(verre) from passages where verre like 'X' and utilisateurs.id_util=passages.n_util";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $verre=$tab[0];
     
    $requete="select count(encombrant) from passages where encombrant like 'X' and utilisateurs.id_util=passages.n_util";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $encombrant=$tab[0];
     
    $requete="select count(metaux) from passages where metaux like 'X' and utilisateurs.id_util=passages.n_util";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $metaux=$tab[0];
     
    $requete="select count(bois) from passages where bois like 'X' and utilisateurs.id_util=passages.n_util";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $bois=$tab[0];
     
    $requete="select count(papier) from passages where papier like 'X' and utilisateurs.id_util=passages.n_util";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
     
    $papier=$tab[0];
     
     
     
    $total=$vert+$verre+$encombrant+$metaux+$bois+$papier;
    echo "<FONT class=normal face=Arial color='green' SIZE=3>Utilisateur $id</FONT><p>";
    echo "<FONT class=normal face=Arial color='green' SIZE=3>Total de tous les d&eacute;chets amen&eacute;s par <br>cette personne est de $total 
    
    quantit&eacute;s</FONT><p>";
    $totals=$total/100;
    $verts=$vert/$totals;
    $verres=$verre/$totals;
    $encombrants=$encombrant/$totals;
    $metauxs=$metaux/$totals;
    $boiss=$bois/$totals;
    $papiers=$papier/$totals;
    echo "<table border>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Vert</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$verts %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Verre</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$verres %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Encombrant</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$encombrants 
    
    %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Metaux</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$metauxs 
    
    %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Bois</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$boiss %</FONT></td>
    	</tr>
    	<tr>
    	<td><FONT class=normal face=Arial color='green' SIZE=3>Papier</FONT></td><td><FONT class=normal face=Arial color='green' SIZE=3>$papiers 
    
    %</FONT></td>
    	</tr>";
    echo "</table>";
    ?>

  8. #8
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    fait un While pour lire les réponses.
    et ajoute un Alias à tes requêtes =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete="select count(vert) AS total from passages where vert like 'X' and utilisateurs.id_util=passages.n_util";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    While($tab=mysql_fetch_array($resultat))
    {
          echo $vert=$tab['total']; 
    }

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Tu serais pas le remettre dans le script stp car je sais pas ou le mettre à chaque fois j'ai query failed :s

  10. #10
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    bah par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $requete="select count(vert) AS total from passages where vert like 'X' and utilisateurs.id_util=passages.n_util";
    $resultat=mysql_query($requete) or die("query failed");
    $tab=mysql_fetch_array($resultat);
    While($tab=mysql_fetch_array($resultat))
    {
          echo $vert=$tab['total'];
    }
    comme ça pour chaque requête

    mais quand tu bug sur le SQL, pense toujours à vérifier tes requêtes sans passer par le php, en allant directement sur ta base MySQL (avec phpMyAdmin)

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    si tu veux le resultat par utilisateur n'oublie pas de faire un group by.
    au fait tu parles de faire la moyenne alors q je ne vois q des count. sache q count ne permet pas de faire une moyenne.

  12. #12
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    pour la moyenne faut utiliser à la place de COUNT : AVG

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Oui mais je sais pas comment on fait avec AVG vous pouvez pas le mettre dans le code car je sais pas comment faire ??

    Merci d'avance de votre aide

  14. #14
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    1- groggy on est pas là pour faire ton boulot
    cherche un peu !!

    2- tu es sur le mauvais forum pour poser une question sur le SQL

    3- je t'ai dis remplace count par avg ... c'est dur à comprendre ???

    COUNT devient AVG

    select AVG(vert)...

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Oui mais la je dois rien changer


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $total=$vert+$verre+$encombrant+$metaux+$bois+$papier;
    echo "<FONT class=normal face=Arial color='green' SIZE=3>Utilisateur $id</FONT><p>";
    echo "<FONT class=normal face=Arial color='green' SIZE=3>Total de tous les d&eacute;chets amen&eacute;s par <br>cette personne est de $total
     
    quantit&eacute;s</FONT><p>";
    $totals=$total/100;
    $verts=$vert/$totals;
    $verres=$verre/$totals;
    $encombrants=$encombrant/$totals;
    $metauxs=$metaux/$totals;
    $boiss=$bois/$totals;
    $papiers=$papier/$totals;

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    il suffit de remplacer ton count() par avg dans chacun des occurences. au fait n'oublie pas de faire un group by.
    AVG est une fonction de group

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Justement je sais pas ou mettre ton group by on peut pas me faire un exemple dans cette requete ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete="select count(vert) AS total from passages where vert like 'X' and utilisateurs.id_util=passages.n_util";
    Et aussi je dois pas supprimer ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $total=$vert+$verre+$encombrant+$metaux+$bois+$papier;
    echo "<FONT class=normal face=Arial color='green' SIZE=3>Utilisateur $id</FONT><p>";
    echo "<FONT class=normal face=Arial color='green' SIZE=3>Total de tous les d&eacute;chets amen&eacute;s par <br>cette personne est de $total
     
    quantit&eacute;s</FONT><p>";
    $totals=$total/100;
    $verts=$vert/$totals;
    $verres=$verre/$totals;
    $encombrants=$encombrant/$totals;
    $metauxs=$metaux/$totals;
    $boiss=$bois/$totals;
    $papiers=$papier/$totals;

Discussions similaires

  1. Réponses: 11
    Dernier message: 13/04/2006, 15h18
  2. [PHP-JS] conseil pour l'insertion de chekbox
    Par digger dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2006, 10h03
  3. PHP ou Java pour un site associatif ?
    Par Flashball dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 02/03/2006, 19h56
  4. [mysql - php] plusieurs tables pour un select ORDER BY
    Par sanosuke85 dans le forum Requêtes
    Réponses: 9
    Dernier message: 06/12/2005, 19h25
  5. PHP - statistique
    Par xopos dans le forum Langage
    Réponses: 5
    Dernier message: 07/11/2005, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo