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 :

fonction pour obtenir le nombre d'enregistrement d'une table avec php


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Points : 164
    Points
    164
    Par défaut fonction pour obtenir le nombre d'enregistrement d'une table avec php
    Bonjour,
    j'aimerai savoir dans chacune de mes tables combien il y a d'enregistrement.ma base est sous Oracle.
    actuellement j'utilise cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      select count(*) from &name;
    en ligne de commande. cela marche très bien mais j'ai 300 tables et c'est très long trop.
    donc je me demandais s'il n'y avait pas un moyen en php avec une fonction pour obtenir la même chose sans récrire a chaque fois la commande.
    merci par avance.

  2. #2
    Membre habitué
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Points : 164
    Points
    164
    Par défaut
    j'ai eu ma réponse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select TABLE_NAME, NUM_ROWS from ALL_TABLES

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Mais ce n'est pas la même chose, parce que la valeur de NUM_ROWS change uniquement lors de la mise à jour des statistiques sur la table en question, alors que le count(*) renvoie toujours la valeur exacte à l'instant où il est exécuté.

  4. #4
    Membre habitué
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Points : 164
    Points
    164
    Par défaut
    Bonjour,
    effectivement j'ai rajouté le champs LAST_ANALYZED et certain résultat date de 2009 voire plus loin.
    donc le résultat du select count(*) from matable correspond a la minute ou on le fait. mais j'ai 200 tables faire cela à la mains risque d'être long et risque aussi de faire des erreurs. comment rendre cela automatique je dirais?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    As-tu considéré le fait de faire une boucle sur le résultat de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select table_name from all_tables
    (personnellement je prendrais plutôt le contenu de user_tables plutôt que all_tables mais à toi de voir)

    Pour chaque résultat, tu lances une autre requête qui est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from la_table_en_question

  6. #6
    Membre habitué
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Points : 164
    Points
    164
    Par défaut
    bonjour et merci pour ta réponse. voila comment j'ai fait:
    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
     
    <?php
     //nom des tables
    $sql="select table_name from user_tables";
       try {
           $req=$dbo->query($sql);
           while ($tab=$req->fetch(PDO::FETCH_OBJ)) 
           {
               $sql1="select count(*) as nb from'.$tab->TABLE_NAME.'";
               try {
                      $req1=$dbo->query($sql1);
                       // Récupération des résultats dans un tableau d'objets
                       while ($d=$req1->fetch(PDO::FETCH_OBJ)) {
                                 echo ($tab->TABLE_NAME);
                                  echo($d->NB);
     
                            }
                        }
                        catch (PDOException $e) {
                            echo "<br>";
                            print 'Erreurs ! : '.$e->getMessage().'<br/>';
                            echo 'N° : '.$e->getCode();
                            echo "<br>";
                            echo 'N° : '.$e->getLine();
                        }
                    }
                }
                catch (PDOException $e) {
                    echo "<br>";
                    print 'Erreur ! : '.$e->getMessage().'<br/>';
                    echo 'N° : '.$e->getCode();
                    echo "<br>";
                    echo 'N° : '.$e->getLine();
                }
    mon problème concerne la deuxième requête il m'affiche se message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Erreurs ! : SQLSTATE[HY000]: General error: 903 OCIStmtExecute: ORA-00903: nom de table non valide (/usr/local/src/php-5.3.2/ext/pdo_oci/oci_statement.c:146)
    N° : HY000
    N° : 96
    donc $tab->TABLE_NAME n'est pas reconnu. je ne vois pas comment faire.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Il ne faut pas mettre pas d'apostrophes dans la requête. Essaie comme ça plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql1="select count(*) as nb from $tab->TABLE_NAME";

  8. #8
    Membre habitué
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Points : 164
    Points
    164
    Par défaut
    je te remercie cela fonctionne. j'avais tout essayé sauf cela.
    merci.

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

Discussions similaires

  1. fonction pour compter le nombre de personne dans une tranche d'age
    Par djo007 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/02/2012, 00h03
  2. [SQL] Problème avec nombre d'enregistrements dans une table
    Par zana74 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/08/2006, 13h28
  3. [DB] Nombre d'enregistrements d'une table
    Par Mister Nono dans le forum Bases de données
    Réponses: 26
    Dernier message: 09/05/2006, 09h51
  4. [SQL] nombre d enregistrement d une table
    Par sharpeye dans le forum Access
    Réponses: 1
    Dernier message: 03/11/2005, 18h46
  5. Nombre d'enregistrement dans une table MySQL
    Par tom06440 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/10/2005, 19h07

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