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 :

Calcul en php [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Par défaut Calcul en php
    Bonsoir,

    Je créé une table sql content 2 champ v1 et v2
    quand :
    v1 = 1
    v2 = 0


    et quand
    v1 = 0
    v2 = 1


    et j'aimerais enfaite savoir combien de fois dans v1 il ya la valeur 1 et combien de fois dans V2 il ya la valeur 1, mais le problème c'est que j'ai douze 0 qui s'affiche pour chacune des variables ( soit 24).
    A mon avis les douze 0 sont le nombre d'entrée dans la table mais pourquoi 0 ? et pourquoi il ne calcul pas que quand c'est supérieur a 0 ?

    Voila donc ce que j'ai créé pour le moment,

    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
    <?php
    require("conf.inc.php");
     
            mysql_connect("$host", "$user", "$mdp");
            mysql_select_db("$data");
    $retour = mysql_query("SELECT * FROM br_sondage");
    while ($donnees = mysql_fetch_array($retour))
    {
     
    $requete = mysql_query("SELECT * FROM test") or die (mysql_error());
    $nb = mysql_num_rows($requete);
     
    $total_v1 =  (($v1 > 0)*$nb);
    echo  $total_v1;
     
    $total_v2 =  (($v1 > 0)*$nb);
    echo  $total_v2;
     
     
    }
     mysql_close();
    ?>
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $total_v1 =  (($v1 > 0)*$nb);
    ($v1 > 0) est une expression qui peut renvoyer soit TRUE soit FALSE.
    dans ton cas elle renvoit toujours FALSE puisque $v1 = FALSE n'etant initialisé nul part.
    Et (FALSE * x) = 0.

    Moi si je voulais compter des lignes dans une table j'utiliserais une requete avec count().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Par défaut
    Tu as une table test qui contient 2 champs v1 et v2, et tu voudrais compter le nombre d'enregistrement où v1=1 et v2=1 ?

    Si j'ai bien compris, alors :
    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
    <?php
    require("conf.inc.php");
     
            mysql_connect("$host", "$user", "$mdp");
            mysql_select_db("$data");
    $retour = mysql_query("SELECT * FROM br_sondage");
    while ($donnees = mysql_fetch_array($retour))
    {
     
    $requete = mysql_query("SELECT * FROM test WHERE `v1`=1") or die (mysql_error());
    $total_v1 = mysql_num_rows($requete);
     
    $requete = mysql_query("SELECT * FROM test WHERE `v2`=1") or die (mysql_error());
    $total_v2 = mysql_num_rows($requete);
     
     
    }
     mysql_close();
    ?>
    Ou bien utiliser le SQL avec la fonction SELECT COUNT(*) AS 'nv1' FROM ...

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
      $sql = 'SELECT  \'v1\' AS type, count(v1) AS nombre
              FROM test
              WHERE v1 = 1
              UNION
              SELECT  \'v2\' AS type, count(v2) AS nombre
              FROM test
              WHERE v2 = 1';
      $result = mysql_query($sql);
      while ($item = mysql_fetch_array($result, MYSQL_ASSOC))
      {
        echo $item['type'] . ' => ' . $item['nombre'] . '<br>';
      }
    ?>
    devrait afficher (les valeurs sont des exemples) :
    v1 => 5
    v2 => 3

    Il y a peut-être plus optimisé, mais ça fonctionne.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Par défaut
    je suis bete de pas y avoir pensé sachant que j'en fais un juste avant avec$nb xD.

    Sinon pour vos script

    Belegkarnil, voila ce que sa me fait :
    manqué un echo ^^ cété mieu maissa fesait comme moi voici le résultat obtenu
    848484848484848484848484
    jeca, sa marche super, pourrait tu m'expliqué un peu ta syntaxe SQL et ceci stp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      {
        echo $item['type'] . ' => ' . $item['nombre'] . '<br>';
      }

    Merci de votre aide a tous

  6. #6
    Membre éclairé Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Par défaut
    Alors il faut enlever le while(mysql_fetch... je ne connais pas la structure de tes tables.
    Qu'est-ce que tu ne comprends pas dans la syntaxe de jeca? Il créer deux requêtes pour avoir le nombre de v1 et v2, ensuite il uni les deux requêtes. En résultats, il y aura donc les valeurs pour v1, v2.

  7. #7
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Comme requête sql, il y a encore plus simple puisque v1 et v2 ne contiennent que des 0 ou des 1 (une seule requête et non deux union)...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select sum(v1), sum(v2) from test

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PostgreSQL] Calculs sous PHP ou dans fonctions PostgreSQL
    Par ilalaina dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/09/2008, 08h20
  2. Calcul en PHP sans bdd
    Par jb_du_ferret dans le forum Langage
    Réponses: 4
    Dernier message: 20/05/2008, 16h08
  3. [MySQL] Calculs en PHP / MySQL
    Par pasbonte dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/03/2008, 19h53
  4. [Conception] problème de calcul en php
    Par yannick29 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/10/2007, 08h32
  5. [MySQL] Fonctions calculs SQL/PHP pour projet football
    Par spamyx dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/04/2006, 16h16

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