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 :

compter tous les enregistrements [ODBC]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 124
    Points : 66
    Points
    66
    Par défaut compter tous les enregistrements
    Bonsoir,
    Débutant en php, je souhaite afficher le nombre total d'enregistrement de ma base qui est sous access en php Il y a x enregistrements à ce jour.
    j' arrive à afficher les 20 premiers grâce à ces codes trouvés sur le forum
    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
    $cnx = odbc_connect( $dsn , "", "" );
    $sql = "SELECT TOP 20 * FROM shop ORDER BY [Date], [Heure] desc";
    $requete = odbc_do($cnx, $sql) ;
      <?php while(odbc_fetch_row($requete))
    { 
    $Date = odbc_result($requete,"Date"); $Heure = odbc_result($requete,"Heure"); 
    $Exp = odbc_result($requete,"Exp");
     $Message = odbc_result($requete,"Message");   ?>
    <table width="90%" border="1" align="center">
       <tr> 
        <td bgcolor="#CCCCCC" width="7%"><div align="center"><?php  echo $Date ; ?></td>
        <td bgcolor="#CCCCCC" width="7%"><div align="center"><?php  echo $Heure ; ?></td>
        <td bgcolor="#CCCCCC" width="10%"><div align="center"><?php  echo $Exp ; ?></div></td>
        <td bgcolor="#CCCCCC" width="40%"><div align="center"><?php  echo $Message ; ?></div></td>
      </tr>
    <?php }odbc_close($cnx); ?>
    </table>
    .
    Comment insérer cette instruction:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct count(id) from table
    afin d'avoir l'ensemble de mes enregistrements dans cette page php.
    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    bin essaye déjà de supprimer "TOP 20" ?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 124
    Points : 66
    Points
    66
    Par défaut
    le TOP 20, c'est pour limiter à 20 enregistrements l'affichage.
    Pour le code présenté plus haut, je n'ai aucun problème.
    Mais en plus, j'aimerais pouvoir afficher le nombre d'enregistrement total de ma base de donnée access sur ma page php.
    Merci

  4. #4
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Tu ne fais qu'une seule requête. Tu affiche les 20 premiers et tu compte le nombre de résultats que tu as.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 124
    Points : 66
    Points
    66
    Par défaut
    ...et tu compte le nombre de résultats que tu as
    Comment le faire (Code à inserer dans ma page php ci dessus présentée.)?
    Merci

  6. #6
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342

  7. #7
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    php.net
    . Pour les commandes SELECT, cela PEUT être le nombre de lignes disponibles, mais ce n'est pas certain.

    Note: odbc_num_rows() après un SELECT retournera -1 avec de nombreux pilotes.
    c'est le genre de chose qui rassure.

    Tu peux procéder comme te l'a indiqué nicocsgamer :

    Récupères toute le contenu (donc sans le top 20)
    et tu n'affiches que les 20 premiers.

    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
    $cnx = odbc_connect( $dsn , "", "" );
    $sql = "SELECT * FROM shop ORDER BY [Date], [Heure] desc";
    $requete = odbc_do($cnx, $sql) ;
    $nb_resultat = odbc_num_rows($requete);
    $i=0
    while(odbc_fetch_row($requete))
    {
    if($i < 20) {
    $Date = odbc_result($requete,"Date"); $Heure = odbc_result($requete,"Heure");
    $Exp = odbc_result($requete,"Exp");
    $Message = odbc_result($requete,"Message"); ?>
    <table width="90%" border="1" align="center">
    <tr>
    <td bgcolor="#CCCCCC" width="7%"><div align="center"><?php echo $Date ; ?></td>
    <td bgcolor="#CCCCCC" width="7%"><div align="center"><?php echo $Heure ; ?></td>
    <td bgcolor="#CCCCCC" width="10%"><div align="center"><?php echo $Exp ; ?></div></td>
    <td bgcolor="#CCCCCC" width="40%"><div align="center"><?php echo $Message ;
    } 
    $i++;
    ?></div></td>
    </tr>
    <?php }odbc_close($cnx); ?>
    </table>

    ou bien avec deux requêtes comme tu l'as proposé.

    SELECT count(id) FROM table;

    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
    $cnx = odbc_connect( $dsn , "", "" );
    // je connais pas les champs de ta table 
    $sql = "SELECT count(*) as nb_resultat FROM shop";
    $requete = odbc_do($cnx, $sql) ;
     
    if(odbc_fetch_row($requete))
       $nb_resultat = odbc_result($requete,"nb_resultat");
     
    $sql = "SELECT TOP 20 * FROM shop ORDER BY [Date], [Heure] desc";
    $requete = odbc_do($cnx, $sql) ;
    <?php while(odbc_fetch_row($requete))
    {
    $Date = odbc_result($requete,"Date"); $Heure = odbc_result($requete,"Heure");
    $Exp = odbc_result($requete,"Exp");
    $Message = odbc_result($requete,"Message"); ?>
    <table width="90%" border="1" align="center">
    <tr>
    <td bgcolor="#CCCCCC" width="7%"><div align="center"><?php echo $Date ; ?></td>
    <td bgcolor="#CCCCCC" width="7%"><div align="center"><?php echo $Heure ; ?></td>
    <td bgcolor="#CCCCCC" width="10%"><div align="center"><?php echo $Exp ; ?></div></td>
    <td bgcolor="#CCCCCC" width="40%"><div align="center"><?php echo $Message ; ?></div></td>
    </tr>
    <?php }odbc_close($cnx); ?>
    </table>

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 67
    Points
    67
    Par défaut
    La seconde solution proposé par Gates me semble la plus approprié.

    En effet, récupérer la totalité des enregistrement d'une base de données, juste pour les compter et en afficher que 20, cela me semble assez lourd

  9. #9
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Citation Envoyé par _phoenix_ Voir le message
    La seconde solution proposé par Gates me semble la plus approprié.

    En effet, récupérer la totalité des enregistrement d'une base de données, juste pour les compter et en afficher que 20, cela me semble assez lourd
    Oui.


    Cette solution peut être utile pour le cas de l'affichage d'un aperçu, mais avec un traitement concernant tous les enregistrements . Pour le cas échéants ce n'est pas celle que je conseillerais.

  10. #10
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Il n'y a pas de meilleurs solutions. Si il y a peu d'enregistrements il faut mieux faire une seule requete, et si il y en a bcp en faire deux.

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 124
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    Je vous remercie pour vos idées mais je continue de sécher(débuter c'est pas facile)sur mon code.
    j'ai suivi le conseils deGats et j'ai ajouté ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Il y a ".$nb_resultat."enregistrements";
    dans mon code comme ceci:
    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
    ...
    $cnx = odbc_connect( $dsn , "", "" );
    $sql = "SELECT count(*) as nb_resultat FROM shop";
    
    if (odbc_fetch_row($requete))
    	$nb_resultat = odbc_result($requete,"nb_resultat");
    	echo "Il y a ".$nb_resultat."enregistrements";	
    $sql = "SELECT TOP 20 * FROM shop ";
    $requete = odbc_do($cnx, $sql) ;
    while(odbc_fetch_row($requete))
    {
     $Date = odbc_result($requete,"Date");
     $Heure = odbc_result($requete,"Heure");
     $Exp = odbc_result($requete,"Exp");
     $Message = odbc_result($requete,"Message");
    ...
    .
    Comme resultat, il m'affiche en plus du tableau me presentant les 20 premiers enregistrements cette erreur:Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in C:\wamp\www\monshop\index.php on line 65
    Il y a enregistrements
    .
    Merci de m'aider à comprendre mes erreurs.

  12. #12
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    tu as bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = odbc_do($cnx, $sql) ;
    après la premiere requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT count(*) as nb_resultat FROM shop";

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 124
    Points : 66
    Points
    66
    Par défaut
    salut,
    tu as bien :

    Code :

    $requete = odbc_do($cnx, $sql) ;

    après la premiere requête

    Code :

    $sql = "SELECT count(*) as nb_resultat FROM shop";
    Oui

  14. #14
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Redonne voir ton code (sans enlever de ligne )

  15. #15
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 124
    Points : 66
    Points
    66
    Par défaut
    salut,
    le voici en entier:
    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
    <?php 
    //---------------------------------------------------
    //------- configuration connection à Access -----
    //---------------------------------------------------
    $dsn="monshop"; // identifiant dsn
    $user=""; // login
    $password=""; // password
     
    //$cnx = odbc_connect( $dsn , $user, $password );
    $cnx = odbc_connect( $dsn , "", "" );
    $sql = "SELECT count(*) as nb_resultat FROM shop";
    	echo "Il y a ".$nb_resultat."enregistrements";	
    if (odbc_fetch_row($requete))
    	$nb_resultat = odbc_result($requete,"nb_resultat");
     
    $sql = "SELECT TOP 20 * FROM shop WHERE  [New]=1 ORDER BY [Date], [Heure] desc";
    //exécution de la requête:
    $requete = odbc_do($cnx, $sql) ;
     
    while(odbc_fetch_row($requete))
    {
     $Date = odbc_result($requete,"Date");
     $Heure = odbc_result($requete,"Heure");
     $Exp = odbc_result($requete,"Exp");
     $Message = odbc_result($requete,"Message");
    ?>
      <tr> 
        <td bgcolor="#CCCCCC" width="7%"><div align="center"><?php  echo $Date ; ?></td>
        <td bgcolor="#CCCCCC" width="7%"><div align="center"><?php  echo $Heure ; ?></td>
        <td bgcolor="#CCCCCC" width="10%"><div align="center"><?php  echo $Exp ; ?></div></td>
        <td bgcolor="#CCCCCC" width="40%"><div align="center"><?php  echo $Message ; ?></div></td>
      </tr>
    <?php }odbc_close($cnx); ?>
     
    </table>
     
    </body>
    Merci

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql = "SELECT count(*) as nb_resultat FROM shop";
    $requete = odbc_do($cnx, $sql) ;	
    if (odbc_fetch_row($requete)){
    	$nb_resultat = odbc_result($requete,"nb_resultat");
            echo "Il y a ".$nb_resultat."enregistrements";	
    }
    comme cela plutot

  17. #17
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 124
    Points : 66
    Points
    66
    Par défaut
    salut,
    Citation Envoyé par boo64 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql = "SELECT count(*) as nb_resultat FROM shop";
    $requete = odbc_do($cnx, $sql) ;	
    if (odbc_fetch_row($requete)){
    	$nb_resultat = odbc_result($requete,"nb_resultat");
            echo "Il y a ".$nb_resultat."enregistrements";	
    }
    comme cela plutot
    j'ai ça :
    Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in C:\wamp\www\monshop\index.php on line 65

  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    j'avais oublié une ligne je l'ai rajouté tu n'envoi pas ta requete sql c'est pour cela

    $requete = odbc_do($cnx, $sql) ;

    voila ce qu'il te manque

    comme te l'avais dit gats

    Citation Envoyé par Gats Voir le message
    tu as bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = odbc_do($cnx, $sql) ;
    après la premiere requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT count(*) as nb_resultat FROM shop";

  19. #19
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    oui je comprends pas à chaque fois elle disparait de ton code cette ligne pourtant je te dis te l'utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = odbc_do($cnx, $sql) ;

    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 
    //---------------------------------------------------
    //------- configuration connection à Access -----
    //---------------------------------------------------
    $dsn="monshop"; // identifiant dsn
    $user=""; // login
    $password=""; // password
     
    //$cnx = odbc_connect( $dsn , $user, $password );
    $cnx = odbc_connect( $dsn , "", "" );
    $sql = "SELECT count(*) as nb_resultat FROM shop";
    $REQUETE = ODBC_DO($CNX, $SQL) ; // cette ligne je la vois pas dans ton code <<===
     
    if (odbc_fetch_row($requete))
    	$nb_resultat = odbc_result($requete,"nb_resultat");
    ECHO "IL Y A ".$NB_RESULTAT."ENREGISTREMENTS"; // se place après l'optention du résultat de la requête
    $sql = "SELECT TOP 20 * FROM shop WHERE  [New]=1 ORDER BY [Date], [Heure] desc";
    //exécution de la requête:
    $requete = odbc_do($cnx, $sql) ;

    j'ai UPPER la cast (mi en majuscule) les lignes que j'ai trouvé mal placé et que j'ai replacé au bon endroit.

  20. #20
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 124
    Points : 66
    Points
    66
    Par défaut
    Salut,

    Je ne peux que vous dire merci.
    Ca marche .
    Merci à Gats, Boo64 et à tous ceux qui ont pris un peu de leur temps pour m'aider.
    Encore MERCI
    Bye

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 10h33
  2. Réponses: 3
    Dernier message: 28/10/2005, 15h03
  3. état avec tous les enregistrements d'un formulaire
    Par Arkalys dans le forum Access
    Réponses: 9
    Dernier message: 30/09/2005, 12h45
  4. Afficher tous les enregistrements d'une table
    Par bertrand_declerck dans le forum QuickReport
    Réponses: 2
    Dernier message: 08/07/2005, 09h35
  5. faire somme de tous les enregistrements identiques
    Par Keraccess dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/07/2005, 12h03

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