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 :

Rechercher et compter une occurrence dans la totalité d'une table avec LIKE '%%' [ODBC]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Rechercher et compter une occurrence dans la totalité d'une table avec LIKE '%%'
    Bonsoir ,bah quasi tout est dans le titre ,je souhaite compter le nombre d'occurrence dans une de mes tables mais j'ai un problème avec mon code ,soit il compte l'occurrence sur une ligne ,soit sur une colonne ,je n'ai pas trouver comment lui faire chercher sur la totalité de la table ou aux moins sur la colonne jeu1 ,jeu2 et jeu3 ,mais sur toute les lignes ,et non seulement la première comme mon code le fais pour l'instant ,si quelque a la solution miracle ,voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $res = $bdd->prepare("SELECT count(*) FROM membre WHERE jeu1 LIKE :mot OR jeu2 LIKE :mot OR jeu3 LIKE :mot");
    $res->execute(array( ':mot' => '%The Divison%' ));
    $nb = (int) $res->fetchAll();
    Avec fetchall il me compte sur une ligne ,et avec fetchcolumn ,bah devinez ^^

  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
    Tu ne peux pas avoir plusieurs fois le même paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    res = $bdd->prepare("SELECT count(*) FROM membre WHERE jeu1 LIKE :mot1 OR jeu2 LIKE :mot2 OR jeu3 LIKE :mot3");
    $res->execute(array( ':mot1' => '%The Divison%', ':mot2' => '%The Divison%', ':mot2' => '%The Divison%' ));
    ou plus joliment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    res = $bdd->prepare("SELECT count(*) FROM membre WHERE jeu1 LIKE ? OR jeu2 LIKE ? OR jeu3 LIKE ?");
    $param = array_fill(0, 3, '%The Divison%');
    $res->execute($param);
    Mais une structure horizontale jeu1, jeu2, jeu3 etc. n'est pas bonne.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut un petit pas...
    Hey ,alors mille merci de répondre clairement ,j'ai essayé en corrigeant les deux trois petites erreur que tu as du oublié dans la rapidité mais c'est bizarre ,soit je test avec ton deuxième code et j'obtiens cet erreur en essayant de faire apparaître la valeur avec un "echo $res; " :

    Catchable fatal error: Object of class PDOStatement could not be converted to string in C:\wamp\www\tests\#1\index.php on line 52
    ou bien cet erreur en essayant de faire apparaître la valeur avec echo $param; :

    Array to string conversion in C:\wamp\www\tests\#1\index.php on line 52
    Et en essayant avec le premier code que tu m'as donné bah pas d’erreur mais même problème qu'avant ,soit il m'affiche la dernière ligne de la table soit il m'affiche une colonne (selon fetchall ou fetch column)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $res = $bdd->prepare("SELECT count(*) FROM membre WHERE jeu1 LIKE :mot1 OR jeu2 LIKE :mot2 OR jeu3 LIKE :mot3");
    $res->execute(array( ':mot1' => '%The Divison%', ':mot2' => '%The Divison%', ':mot3' => '%The Divison%' ));
    $nb = (int) $res->fetchAll();
    Rectification ,j'ai retester le deuxième code en ajoutant $nb = (int) $res->fetchAll(); a la fin ,(tester aussi avec fetchColumn) et la encore une fois c'est bien la dernière ligne qu'il compte ,comment puis je sélectionner le résultat du count de toutes les lignes de ma table de base de données ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Victoire
    Alors en fait ,c'est mieux que ce que je voulais ,car il semble qu'il lis bien sur toutes les lignes et colonne avec ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $res = $bdd->prepare("SELECT count(*) FROM membre WHERE jeu1 LIKE ? OR jeu2 LIKE ? OR jeu3 LIKE ? OR jeu4 LIKE ? OR jeu5 LIKE ? OR jeu6 LIKE ? OR jeu7 LIKE ? OR jeu8 LIKE ?");
    $param = array_fill(0, 8, '%The Division%');
    $res->execute($param);
    $nb = (int) $res->fetchColumn();
    Mais je croyais que non car ma table étant comme ceci (pour le test) :

    id Jeu1 jeu2 jeu3 jeu4 ....
    1 The division The division The division The division ....
    2 The division The division The division The division ....


    Il ne m'affichais que 2 occurrence alors que je m'attendais du coup a 8 occurrence ,mais en fait il me compte bien sur la totalité de toutes les lignes ,mais sur une ligne même si il y a plusieurs fois "the division" ,il le compte comme une fois ,ce qui est encore mieux que ce que je voulais donc rien a dire ! Merci a toi sabotage !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  2. compter les occurrences dans une table
    Par Franz_O dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/05/2011, 09h48
  3. Compter les occurrences dans une chaine de caractères
    Par moraze dans le forum Débuter
    Réponses: 2
    Dernier message: 10/04/2011, 10h23
  4. Réponses: 2
    Dernier message: 23/05/2010, 12h45
  5. Réponses: 5
    Dernier message: 29/05/2009, 12h28

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