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 :

deux résultats avec une requête pdo [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut deux résultats avec une requête pdo
    Bonjour.

    Je tente de faire deux résultats dans une même requête.
    Le deuxième résultat, c'est d'avoir une liste de catégories
    pour en faire un menu.

    J'ai fais deux requêtes pour obtenir ce résultat.

    Voici mon image et le 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
    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
     
    <?php
     
        $dbh = new PDO("mysql:host=localhost;dbname=philgalerie", 'root', '');
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
     
     
        $formulaire = $dbh->query("SELECT categorie FROM categorie");
        $formresultat = $formulaire->fetchAll();
        echo '<ul>';
        foreach($formresultat as $rowform)
        {
          echo '<li style="float:left;margin-left:30px"><a href="?catalog='.$rowform['categorie'].'">'.$rowform['categorie'].'</a></li>';
        }
      echo '</ul><br><br><br>';
     
      $categorie = isset($_GET['catalog']) ? $_GET['catalog'] : 'peinture' ;
     
        $stmt = $dbh->prepare('
                                                    SELECT
                                                        categorie.categorie,
                              users.id,
                                                        users.firstname,
                                                        users.lastname
                                                    FROM
                                                        categorie
                                                    INNER JOIN images ON categorie.id = images.categorieid
                                                    INNER JOIN users ON images.usersid = users.id
                                                    WHERE
                              categorie = :categorie
                                                    ORDER BY
                                                        categorie.id DESC,
                                                        users.id DESC
                           ');
     
      $stmt->bindValue(':categorie', $categorie, PDO::PARAM_STR);
      $stmt->execute();
     
      if (!$stmt->rowCount() == 0)
      {
     
          echo 'Total des enregistrements trouvés selon votre critère : '.$stmt->rowCount();
     
                $cat = "";
     
                while ($row = $stmt->fetchObject())
                {
                        if($row->categorie != $cat)
                        {
                            $cat = $row->categorie;
                            echo '<br><strong>'.$cat.'</strong>';
     
                        }
                        echo '<br>'.$row->firstname.' '.$row->lastname;
                }
      }
      else
      {
          echo 'Aucun enregistrement trouvé correspondant à votre requête.';
      }
    ?>
    Je suis bloqué à ce stade. C'est possible d'utiliser une seule requête?

    Ma prochaine étape serait de faire une pagination alors, je vais avoir
    à faire soit encore une requête ou un autre résultat.
    Images attachées Images attachées  

  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
    Ou es-tu "bloqué" exactement je ne comprends pas ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    J'ai deux requêtes. Je me demandais si je pouvais utiliser qu'une seule.

  4. #4
    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
    Si tu utilises la deuxième sans la condition WHERE tu auras toutes les infos non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    J'ai vraiment besoin d'afficher les catégories et leurs contenus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE  categorie = :categorie
    Si je supprime, ça affiche tout mais je ne pourrai pas avoir par
    catégorie seul. J'ai testé. A moins qu'il y ait une autre façon.

    L'avantage tel qu’il est écrit, c'est que je peux ajouter d'autres détails.
    Comme vérifier s'il y a des catégories..

    Je tenais à savoir si c'était possible.

  6. #6
    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
    mais je ne pourrai pas avoir par
    catégorie seul
    Que veux-tu faire exactement ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Combiner mes deux requêtes pour en faire une seule.

    Mais, je vais mettre en AJAX la requête de donnée du contenu des
    catégories. Et par la suite paginer. Alors, j'aurais surement besoin
    de faire d'autres requêtes.

    Je voulais savoir si c'était possible de ne faire qu'une requête si je le voulais.

    Je tente de mettre en AJAX.

    Merci des réponses, c'est appréciés.

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    J'ai trouvé quelque chose qui fonctionne et que j'ai légèrement modifié.
    Ça fonctionne bien avec un formulaire mais je souhaite plus avoir des
    liens créé dynamiquement.

    J'ai créé un lien (ligne 47) mais je ne sais pas comment le faire pour remplacer le formulaire.


    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
    64
    65
    66
    67
    68
     
    <html>
    <head>
    <script>
            function showUser(str)
            {
            if (str=="")
            {
                document.getElementById("txtHint").innerHTML="";
                return;
            }
            if (window.XMLHttpRequest)
            { // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            { // code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                }
            }
            xmlhttp.open("GET","pratique4.php?catalog="+str,true);
            xmlhttp.send();
            }
    </script>
    </head>
    <body>
     
    <?php
        $dbh = new PDO("mysql:host=localhost;dbname=philgalerie", 'root', '');
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
     
        $formulaire = $dbh->query("SELECT categorie FROM categorie");
        $formresultat = $formulaire->fetchAll();
     
      if (!$formulaire->rowCount() == 0)
      {
                echo '<ul>';
                foreach($formresultat as $rowform)
                {
                    echo '<li style="float:left;margin-left:30px"><a href="JavaScript:ShowUser(this.value)">'.ucfirst($rowform['categorie']).'</a></li>';
                }
                echo '</ul><br>';
      }
      else
      {
          echo 'Aucune catégorie trouvée.';
      }
     
    ?>
     
    <form>
    <select name="users" onchange="showUser(this.value)">
    <option value="peinture">peinture</option>
    <option value="dessin">dessin</option>
    </select>
    </form>
    <br>
    <div id="txtHint"><b>Person info will be listed here.</b></div>
     
    </body>
    </html>

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Bonjour. J'ai besoin d'un avis éclairé.

    Que pensez-vous de 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
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php session_start();
     
        $dbh = new PDO("mysql:host=localhost;dbname=asdf", 'root', '');
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
     
      $categorie = isset($_GET['catalog']) ? $_GET['catalog'] : 'peinture' ;
     
        $lenombre = $dbh->prepare("
                                                    SELECT
                                                        categorie.categorie,
                              users.id,
                                                        users.firstname,
                                                        users.lastname,
                                                        COUNT(*) AS nb
                                                    FROM
                                                        categorie
                                                    INNER JOIN images ON categorie.id = images.categorieid
                                                    INNER JOIN users ON images.usersid = users.id
                                                    WHERE
                              categorie = :categorie
                                                    ORDER BY
                                                        categorie.id DESC,
                                                        users.id DESC
                           ");
     
      $lenombre->bindValue(':categorie', $categorie, PDO::PARAM_STR);
      $lenombre->execute();
      while ($compte = $lenombre->fetchObject())
      { $_SESSION['compte'] = $compte->nb; } 
     
        $stmt = $dbh->prepare("
                                                    SELECT
                                                        categorie.categorie,
                              users.id,
                                                        users.firstname,
                                                        users.lastname
                                                    FROM
                                                        categorie
                                                    INNER JOIN images ON categorie.id = images.categorieid
                                                    INNER JOIN users ON images.usersid = users.id
                                                    WHERE
                              categorie = :categorie
                                                    ORDER BY
                                                        categorie.id DESC,
                                                        users.id DESC
                           ");
     
      $stmt->bindValue(':categorie', $categorie, PDO::PARAM_STR);
      $stmt->execute();
     
      if (!$stmt->rowCount() == 0)
      {
                $cat = "";
     
                while ($row = $stmt->fetchObject())
                { 
                        if($row->categorie != $cat)
                        {
                            $cat = $row->categorie;
                            echo 'Dans la catégorie «<strong>'.ucfirst($cat).'</strong>», il y en a <strong>'.$_SESSION['compte'].'</strong> :';
     
                        }
                        echo '<hr>'.$row->firstname.' '.$row->lastname;
                }
                echo '<hr>';
      }
      else
      {
          echo 'Aucun enregistrement trouvé correspondant à votre requête.';
      }
    ?>
    Je me suis senti obligé de faire deux requêtes préparées, le premier
    pour le nombre pour déterminer combien d'items au total dans la catégorie en question.

    Ici, je incertain mais ça marche bien. J'utilise une requête préparée
    pour une question de sécurité de la variable.

    La requête deux, c'est pour faire ressortir le résultat des requête en fonction des catégories.

    Mon fichier Ajax appelle le contenu de ce fichier. Et je me demande lors que je mettrai des liens pour la pagination, si ça va fonctionner.

    Merci d'avance pour vos avis.

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

Discussions similaires

  1. [MySQL] Résultat insuffisant pour la différence deux dates avec une requête mysql
    Par onesat dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/08/2014, 13h14
  2. [PHP 5.3] Faire une classe avec une requête PDO
    Par dancom5 dans le forum Langage
    Réponses: 15
    Dernier message: 19/03/2014, 05h44
  3. Pb résultats d'une requête avec ou sans Recordset
    Par fredeau dans le forum Access
    Réponses: 3
    Dernier message: 24/04/2006, 14h07
  4. [MySQL] problème de résultat avec une requête
    Par jexl dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/03/2006, 23h23
  5. [SQL] Problème de résultat avec une requête
    Par raptorman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/01/2006, 17h16

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