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 :

afficher le nombre total d'enregistrements


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Points : 55
    Points
    55
    Par défaut afficher le nombre total d'enregistrements
    Bonjour a tous,

    J'ai la requete suivante qui me renvoir tous les enregistrements de mes tables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = 'SELECT * FROM gite JOIN descriptif ON gite.id=descriptif.id 
     JOIN vue ON gite.id=vue.id JOIN exterieur ON gite.id=exterieur.id  JOIN menagers ON gite.id=menagers.id JOIN multimedia ON gite.id=multimedia.id
     JOIN particularites ON gite.id=particularites.id JOIN tarifs ON gite.id=tarifs.id ORDER BY gite.id  ';
    Je voudrais faire une requete qui compte le nombre d'enregistrements au total et qui me renvoie le chiffre total des enregistrements

    ex: Il y a __ enregistrements dans ma table

    Je ne sais plus comment faire cette requete

    Merci de votre aide

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    count(*)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Points : 55
    Points
    55
    Par défaut
    Merci donc la requete dooit etre comme celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = 'SELECT count(*) FROM gite JOIN descriptif ON gite.id=descriptif.id 
     JOIN vue ON gite.id=vue.id JOIN exterieur ON gite.id=exterieur.id  JOIN menagers ON gite.id=menagers.id JOIN multimedia ON gite.id=multimedia.id 
     JOIN particularites ON gite.id=particularites.id JOIN tarifs ON gite.id=tarifs.id ORDER BY gite.id  ';
    Et ensuite pour renvoyer le nombre d'enregistrements en php?
    Sais tu comment faire?

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql = 'SELECT count(*) as total FROM gite JOIN descriptif ON gite.id=descriptif.id
     JOIN vue ON gite.id=vue.id JOIN exterieur ON gite.id=exterieur.id  JOIN menagers ON gite.id=menagers.id JOIN multimedia ON gite.id=multimedia.id
     JOIN particularites ON gite.id=particularites.id JOIN tarifs ON gite.id=tarifs.id ORDER BY gite.id  ';
     
    et apres il faut faire un row['total']

  5. #5
    Membre actif Avatar de leodi
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 224
    Points
    224
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = 'SELECT count(*) AS nbre_entrees FROM gite JOIN descriptif ON gite.id=descriptif.id
     JOIN vue ON gite.id=vue.id JOIN exterieur ON gite.id=exterieur.id  JOIN menagers ON gite.id=menagers.id JOIN multimedia ON gite.id=multimedia.id
     JOIN particularites ON gite.id=particularites.id JOIN tarifs ON gite.id=tarifs.id ORDER BY gite.id  ';
    $donnees = mysql_fetch_array($sql);
    $nb_enr = $donnees['nbre_entrees'];

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $donnees = mysql_fetch_array($sql);
    $nb_enr = $donnees['nbre_entrees'];
    je plus partant pour un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $donnees = mysql_fetch_row($sql);
    $nb_enr = $donnees['nbre_entrees'];

  7. #7
    Membre actif Avatar de leodi
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 224
    Points
    224
    Par défaut
    Comme tu veux... résolu ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Points : 55
    Points
    55
    Par défaut
    Désolé je suis vraiment débutant et je n'y arrive pas

    Voici mon code

    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
    <?php
     
    $base = mysql_connect ('', , );
    mysql_select_db (, $base);
     
     
     
        $sql = 'SELECT count(*) as total FROM gite JOIN descriptif ON gite.id=descriptif.id 
     JOIN vue ON gite.id=vue.id JOIN exterieur ON gite.id=exterieur.id  JOIN menagers ON gite.id=menagers.id JOIN multimedia ON gite.id=multimedia.id 
     JOIN particularites ON gite.id=particularites.id JOIN tarifs ON gite.id=tarifs.id ORDER BY gite.id  ';
    $donnees = mysql_fetch_row($sql); 
    $nb_enr = $donnees['nbre_entrees']; 
     
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
     
     
    echo '$row['nb_enr']'; 
     
        mysql_free_result ($req); 
     
     
    mysql_close (); 
    ?>
    Merci de votre aide

  9. #9
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    tu peux aussi faire ainsi sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = 'SELECT * as total FROM gite JOIN descriptif ON gite.id=descriptif.id
     JOIN vue ON gite.id=vue.id JOIN exterieur ON gite.id=exterieur.id  JOIN menagers ON gite.id=menagers.id JOIN multimedia ON gite.id=multimedia.id
     JOIN particularites ON gite.id=particularites.id JOIN tarifs ON gite.id=tarifs.id ORDER BY gite.id  ';
    $req = mysql_query($sql)
    $nb_enr = mysql_num_rows($req);
    sinon je pense que ton erreur viens du fait que tu fais
    $req = mysql_query($sql)
    après
    $donnees = mysql_fetch_row($sql);
    qui doit normalement être de cette forme :
    $req = mysql_query($sql);
    $donnees = mysql_fetch_row($req); // et non $sql

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Points : 55
    Points
    55
    Par défaut
    J'ai toujours une erreur

    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
    <?php
     
    $base = mysql_connect (, , );
    mysql_select_db (, $base);
     
     
     
        $sql = 'SELECT count(*) as total FROM gite JOIN descriptif ON gite.id=descriptif.id 
     JOIN vue ON gite.id=vue.id JOIN exterieur ON gite.id=exterieur.id  JOIN menagers ON gite.id=menagers.id JOIN multimedia ON gite.id=multimedia.id 
     JOIN particularites ON gite.id=particularites.id JOIN tarifs ON gite.id=tarifs.id ORDER BY gite.id  ';
     
    $req = mysql_query($sql); 
    $nb_enr = $donnees['nbre_entrees']; 
    $donnees = mysql_fetch_row($req); 
     
     
    echo '.$row['nb_enr'].'; 
     
        mysql_free_result ($req); 
     
     
    mysql_close (); 
    ?>
     
    Je pense que ca viens de ctte ligne
    [code]echo '.$row['nb_enr'].'; [/code]
    Car j'ai un message d'erreur qui correspond a cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /var/www/free.fr/3/f/pod1978/annuaire/nbre_enregi.php on line 21
    Merci de ton aide

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Points : 55
    Points
    55
    Par défaut
    j'ai remplacé

    par

    Je n'ai plus de message d'erreurs mais rien n'apparaît sur ma page?

    Alors qu'il y a 18 enregistrements dans mes tables

  12. #12
    Membre expérimenté
    Homme Profil pro
    /
    Inscrit en
    Février 2003
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : /

    Informations forums :
    Inscription : Février 2003
    Messages : 433
    Points : 1 607
    Points
    1 607
    Par défaut
    Bon, repronons tout dans l'ordre:


    Pour ma part, je te conseille d'utilisé de manière générale mysql_fetch_array à mysql_fetch_row. Ton code sera plus facile à relire quand tu n'aura plus la structure de ta base parfaitement en tête; d'autre part si un jour tu devait inserer un nouveau champs au milieu de ta table, tu n'aura pas à modifier tes index dans tes fichiers PHP.

    [Un peu HS]
    Je me pose une question. D'après moi, les requetes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) as total FROM gite JOIN descriptif ON gite.id=descriptif.id JOIN vue ON gite.id=vue.id JOIN exterieur ON gite.id=exterieur.id  JOIN menagers ON gite.id=menagers.id JOIN multimedia ON gite.id=multimedia.id JOIN particularites ON gite.id=particularites.id JOIN tarifs ON gite.id=tarifs.id ORDER BY gite.id
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) as total FROM gite
    donnent un résultat équivalent, la deuxième étant plus légère (et donc plus rapide) pour le serveur MySQL.
    Je me trompe ou pas?
    [/Un peu HS]

  13. #13
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    la fonction mysql_num_rows($result); retourne le nombre de ligne que la requête à retournée. Innutile de faire une requêtre de compte en plus. (c'est d'ailleurs stupide de faire 2 requêtes pour 1 seule chose)

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par FMaz
    la fonction mysql_num_rows($result); retourne le nombre de ligne que la requête à retournée. Innutile de faire une requêtre de compte en plus. (c'est d'ailleurs stupide de faire 2 requêtes pour 1 seule chose)
    ca dépend... Si tu veux juste le compte des lignes, autant faire un count(*) plutot que selectionner toutes les lignes dans la base de données sans t'en servir...

    Après, si ces lignes vont te servir, il vaut mieux effectivement utiliser mysql_num_rows()


  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Faisons simple. 2 solutions :
    1) Avec COUNT() (le plus optimisé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $requete='SELECT COUNT(*) AS total [...]';
    $resultat=mysql_query($requete);
     
    // ne pas oublier :
    $valeur=mysql_fetch_array($resultat);
     
    echo 'Total = '.$valeur['total'];
    2) En comptant le nombre de lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $requete='SELECT * [...]';
    $resultat=mysql_query($requete);
     
    echo 'Total = '.mysql_num_rows($resultat);

  16. #16
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Citation Envoyé par pod1978
    J'ai toujours une erreur

    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
    <?php
     
    $base = mysql_connect (, , );
    mysql_select_db (, $base);
     
     
     
        $sql = 'SELECT count(*) as total FROM gite JOIN descriptif ON gite.id=descriptif.id 
     JOIN vue ON gite.id=vue.id JOIN exterieur ON gite.id=exterieur.id  JOIN menagers ON gite.id=menagers.id JOIN multimedia ON gite.id=multimedia.id 
     JOIN particularites ON gite.id=particularites.id JOIN tarifs ON gite.id=tarifs.id ORDER BY gite.id  ';
     
    $req = mysql_query($sql); 
    $nb_enr = $donnees['nbre_entrees']; 
    $donnees = mysql_fetch_row($req); 
     
     
    echo '.$row['nb_enr'].'; 
     
        mysql_free_result ($req); 
     
     
    mysql_close (); 
    ?>
     
    Je pense que ca viens de ctte ligne
    [code]echo '.$row['nb_enr'].'; [/code]
    Car j'ai un message d'erreur qui correspond a cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /var/www/free.fr/3/f/pod1978/annuaire/nbre_enregi.php on line 21
    Merci de ton aide
    Ci tu as ton code ainsi c'est sur que tu n'auras rien d'afficher car tu récupère ton total avant meme la récupération des lignes par mysql_fetch...

    Donc je dirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $req = mysql_query($sql); 
    $donnees = mysql_fetch_row($req); 
    echo $donnees['total'];
    De plus ton row n'existait pas donc toujours rien à afficher.
    Mais là ca devrait aller

  17. #17
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Effectivement, si il n'a pas besoin d'utiliser les données, innutile de faire extraire toutes les lignes, un simple count(*) suffit et sera beaucoup plus optimisé.

  18. #18
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Au passage, c'est ce que je dis depuis la 1ère réponse...

Discussions similaires

  1. Stored Procedure, afficher le nombre total d'enregistrements
    Par DotNetMatt dans le forum Développement
    Réponses: 2
    Dernier message: 25/03/2010, 17h14
  2. Nombre total d'enregistrement dans un Form
    Par pleasewait dans le forum Access
    Réponses: 2
    Dernier message: 28/12/2006, 16h53
  3. [MySQL] afficher le nombre total de message
    Par blastmanu dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 17/02/2006, 19h44
  4. [MySQL] LIMIT et nombre total d'enregistrements
    Par titoumimi dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/01/2006, 11h40
  5. Nombre Total d'Enregistrements d'une Requête d'Union
    Par sqlnet dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/12/2003, 17h12

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