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 :

rowCount reste à la valeur de 1


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de lesitadom39
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2015
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 112
    Par défaut rowCount reste à la valeur de 1
    Bonjour,
    Pour un moteur de recherche interne, je dois tester le nombre de résultats d'une requête
    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
     
    <?php
        $Mot = $_POST['Mot'];
        if (($Mot == "") || ($Mot == "%")) {
            ?>
            <div class="row">
                <h4 class="bleu blink_me text-center"> Veuillez entrer un mot clé s'il vous plaît!</h4>
            </div>
            <?php
        } else {
    // On selectionne les enregistrements contenant le mot clé
    // dans les keywords ou le titre
            $query = "SELECT distinct count(lien) FROM search
      WHERE MetaKey LIKE \"%$Mot%\"
      OR titre LIKE \"%$Mot%\"
      ";
            $stmt  = $connexion->prepare($query);
            $stmt->execute();
            $count = $stmt->rowCount();
            $Nombre = $count;
    // Si aucun enregistrement n'est retourné,
    // on affiche un message adéquat
            if ($Nombre == "0") {
                echo "
      <h2>Aucun résultat ne correspond à votre recherche</h2>
    
      <p>
    
      ";
            }
     
    // Sinon, on affiche le nombre d'enregistrements correspondant
    // et les résultats eux-mêmes
            else {
                $query = "SELECT distinct lien,MetaKey,titre FROM search
      WHERE MetaKey LIKE \"%$Mot%\"
      OR titre LIKE \"%$Mot%\" ORDER by titre ASC";
                $stmt = $connexion->prepare($query);
                $stmt->execute();
                // Si un seul enregistrement est trouvé, on affiche un message au singulier
                if ($Nombre == "1") {
                    echo "
      <a name=\"#resultat\"><h2>Résultat: Un article trouvé</h2></a>
    
      <p>";
                } // Dans le cas contraire le message est au pluriel...
                else {
                    echo "
      <a name=\"#resultat\"><h2>Résultat: $Nombre articles trouvés</h2></a>
    
      <p>";
                }
                while ($row = $stmt->fetch()) {
                    echo "
        <p>\n
        <b>$row[titre]</b>\n
        <br><a href=\"$row[lien]\">Visualiser l'article</a>\n
        <p>\n
        ";
                }
            }
        }
        // on ferme la base
    Mais mon $Nombre donne toujours un résultat égal à 1
    Où est ce que je me plante SVP et merci d'avance

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    Remplaces rowCount() par fetchColumn() comme c'est montré dans le dernier exemple de la doc

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = "SELECT distinct count(lien) FROM search
      WHERE MetaKey LIKE \"%$Mot%\"
      OR titre LIKE \"%$Mot%\"
    ";
    J'ajoute que le SQL "DISTINCT COUNT(lien)" n'a pas trop de sens (tu n'obtiendras de toute manière qu'un nombre)
    Qu'en SQL on utilise plutôt ' pour délimiter les chaînes, " servant plutôt à délimiter les identificateurs, comme ` avec MySQL
    Qu'il est inutile de préparer une requête sans paramètres et/ou exécutée 1 seule fois => Autant l'exécuter directement
    Et qu'il ne faut pas oublier d'échapper les paramètres (ta requête plante si la recherche contient un ", sans parler des injections)

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql = <<<SQL
        SELECT ALL COUNT(lien)
        FROM search
        WHERE FALSE
            OR MetaKey LIKE CONCAT('%', {$connexion->quote($Mot)}, '%')
            OR titre LIKE CONCAT('%', {$connexion->quote($Mot)}, '%')
        SQL;
    $result = $connexion->query($sql);
    $count = $result->fetchColumn();
    Si tu veux compter le nombre de lien distincts répondant à ta recherche c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ALL COUNT(DISTINCT lien)
    ...

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

Discussions similaires

  1. récupérer la valeur définie par un set rowcount n
    Par sebhuet dans le forum Sybase
    Réponses: 5
    Dernier message: 04/07/2011, 11h09
  2. [AC-2003] [ADO] Valeur Recordcount reste à -1
    Par damsmut dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/04/2009, 09h42
  3. hash comparaison d'une valeur vs le reste
    Par Jasmine80 dans le forum Langage
    Réponses: 4
    Dernier message: 14/11/2008, 08h43
  4. creer un groupe avec le reste des valeurs nulles
    Par aurelie83 dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 03/01/2008, 14h32
  5. Réponses: 11
    Dernier message: 20/09/2007, 13h31

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