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 :

SQL_CALC_FOUND_ROWS avec PDO [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut SQL_CALC_FOUND_ROWS avec PDO
    Bonjour. J'ai quelques problèmes avec

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL_CALC_FOUND_ROWS
    et
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT FOUND_ROWS() AS total
    Je dois tenir compte des requêtes préparées et je ne trouve aucun ex.
    Sauf celles que j'ai vu dans certains forums mais qui ne marche pas
    pour moi. Besoin d'aide pour solutionner mon problème svp. Merci.

    Mon code test:

    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
      $result=$dbh->prepare("
          SELECT
            SQL_CALC_FOUND_ROWS      
            cl.id clid,
            cl.pren clpren,
            cl.nom clnom,
            cl.descp cldescp,
            cl.actif clactif,
            cl.forfait clforfait,
            im.id imid,
            im.img imimg,
            im.descp imdescp,
            im.clid imclid,
            im.catid imcatid,
            ca.id caid,
            ca.cat cacat
          FROM
            client cl
          JOIN image im ON cl.id = im.clid
          JOIN categorie ca ON ca.id = im.catid
      ");
      $result=$dbh->prepare("SELECT FOUND_ROWS() AS total");
     
      $result->execute();
     
      echo '<table>';
        echo '<tr>';
          echo '<th>clid</th>';
          echo '<th>clpren</th>';
          echo '<th>clnom</th>';
          echo '<th>cldescp</th>';
          echo '<th>clactif</th>';
          echo '<th>clforfait</th>';
          echo '<th>imid</th>';
          echo '<th>imimg</th>';
          echo '<th>imdescp</th>';
          echo '<th>imclid</th>';
          echo '<th>imcatid</th>';
          echo '<th>caid</th>';
          echo '<th>cacat</th>';
        echo '</tr>';
     
       while( $row = $result->fetch() )
      {
        echo '<tr>';
          echo '<td>'. $row['clid'] .' </td>';
          echo '<td>'. $row['clpren'] .' </td>';
          echo '<td>'. $row['clnom'] .' </td>';
          echo '<td>'. $row['cldescp'] .' </td>';
          echo '<td>'. $row['clactif'] .' </td>';
          echo '<td>'. $row['clforfait'] .' </td>';
          echo '<td>'. $row['imid'] .' </td>';
          echo '<td>'. $row['imimg'] .' </td>';
          echo '<td>'. $row['imdescp'] .' </td>';
          echo '<td>'. $row['imclid'] .' </td>';
          echo '<td>'. $row['imcatid'] .' </td>';
          echo '<td>'. $row['caid'] .' </td>';
          echo '<td>'. $row['cacat'] .' </td>';
        echo '</tr>';
      }
      echo '</table>';
     
    echo $row['total'];
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi est-ce que tu veux préparer ces requêtes ?
    Il faut dans tous les cas executer l'une puis l'autre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    J'ai des variables qui font parties de mes requêtes, c'est pour ça.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  4. #4
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    J'ai fini par trouver cela qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $count_result = $dbh->prepare("SELECT FOUND_ROWS() as FOUND_ROWS" );
    $count_result->execute();
    $count  = $count_result->fetch(PDO::FETCH_OBJ)->FOUND_ROWS;
    Mais, sans trop savoir pourquoi ça fonctionne. Si on peut m'expliquer :-)
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  5. #5
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai des variables qui font parties de mes requêtes, c'est pour ça.
    Elles ne sont pas dans les requêtes que tu nous a montré.

    Mais, sans trop savoir pourquoi ça fonctionne. Si on peut m'expliquer :-)
    Pour t'expliquer la différence avec ce que tu faisais avant, il aurait fallu savoir ce que tu faisais avant.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    des requêtes du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    $result=$dbh->prepare("SELECT id,cat FROM categorie LIMIT :start, :limit");
                    $result->bindParam(':start', $start, PDO::PARAM_INT, 11);
                    $result->bindParam(':limit', $limit, PDO::PARAM_INT, 11);
                    $result->execute();
     
                    while( $row = $result->fetch() )
    J'ai du faire une autre requêtes avec count() pour connaître le nombre total. Et c'est pour cela que je voulais essayer une autre méthode.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  7. #7
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    C'est plutôt la notion de ceci que je n'arrive pas à assimiler:

    La définition dans PHP.NET me dit absolument pas grand chose pour moi.
    J'ai besoin d'explication avec exemples.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  8. #8
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il existe plusieurs mode de recuperation des données.
    Par exemple PDO::FETCH_ASSOC donne un tableau associatif array(colonneA=>valeurA, colonneB=>valeurB);PDO:FETCH_NUM donne un tableau indexé numériquement : array(0=>valeurA, 1=>valeurB);PDO::FETCH_OBJ donne un objet avec les noms de colonnes en propriétés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $obj->colonneA = valeurA;
    $obj->colonneB = valeurB;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Alors, un array et un objet c'est presque la même chose.

    Un array produit un tableau comme de petites cases dans lesquelles
    il y a une valeur.

    Un objet ? la valeur est une propriété, c'est bien ça... c'est un peut
    comme dire :

    Une voiture a des roues
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau = array("voiture"->"4 roues")
    et

    On oublie souvent la simplicité ou la base dans la vie: Maslow

  10. #10
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    La propriété "voiture" de l'objet vaut '4roues'.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    ok. Merci pour l'info.

    Dans ce cas-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $count_result = $dbh->prepare("SELECT FOUND_ROWS() as FOUND_ROWS" );
    $count_result->execute();
    $count  = $count_result->fetch(PDO::FETCH_OBJ)->FOUND_ROWS;
    Fait ressortir la propriété qui est le nombre de lignes trouvées.
    donne un objet avec les noms de colonnes en propriétés
    ici, les noms de colonnes c'est ? Si je fais un var_dump, je vais le voir.

    Ça me donne 2 puisque j'ai seulement deux enregistrements.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  12. #12
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Le nom de ta colonne ici c'est "FOUND_ROWS"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Je crois que c'est plus clair.

    Merci des précisions sabotage.

    Ma grande faiblesse ce sont les Class PHP et c'est de l'Objet.

    Si je connaitrait plus dans la matière, je ferais des classes pour
    les requêtes SQL en PDO. Je suis débutant sur ça.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

Discussions similaires

  1. [PDO] requête sql avec PDO impossible
    Par HALOMOTO dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/03/2009, 00h17
  2. [PDO] Insertion de données avec PDO
    Par pakkun dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 09/02/2008, 01h33
  3. [PDO] Connaître les champs d'une table avec PDO
    Par Yadutaf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/02/2008, 13h37
  4. [PDO] Probleme avec PDO / PHP5
    Par anjin dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/08/2007, 07h33
  5. [PDO] Pb instanciation $statement avec PDO sous PHP
    Par tigunn dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/02/2007, 20h45

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