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 :

nombre possible de LIKE [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut nombre possible de LIKE
    Bonjour,
    J'ai dans chaque data de ma table un champ de 1000 octets,
    je dois extraire de ma base toutes les datas ayant dans ce champ
    "truc" et "machin"

    mais les visiteurs peuvent aller jusque 5 couples de recherche
    "truc" et "machin"
    "autretruc" et "autremachin" etc ...
    je ferais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $req="SELECT * from Matable (IF(laChaine LIKE '%$laVal1%'
     AND laChaine LIKE '%$laVal2%' AND laChaine LIKE '%$laVal3%'
     AND laChaine LIKE '%$laVal4%' AND laChaine LIKE '%$laVal5%', '5', '0')
     
      OR IF (laChaine LIKE '%$laVal1%' AND laChaine LIKE '%$laVal2%'
       AND laChaine LIKE '%$laVal3%' AND laChaine LIKE '%$laVal4%', '4', '0')
     
      OR IF (laChaine LIKE '%$laVal1%' AND laChaine LIKE '%$laVal2%'
       AND laChaine LIKE '%$laVal3%' AND laChaine LIKE '%$laVal5%', '4', '0')
     
      OR IF (laChaine LIKE '%$laVal2%' AND laChaine LIKE '%$laVal3%'
       AND laChaine LIKE '%$laVal4%' AND laChaine LIKE '%$laVal5%', '4', '0')
    qu'en pensez vous ?
    merci d'avance
    Christele
    Dernière modification par Torgar ; 22/03/2013 à 15h41.

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    j'en pense que je ne vois pas de where.
    J'ai l'impression que ta requete essaie de classer les résultats en fonction du nombre de critère satisfait.

    Je crois qu'il faut faire plus simple.

    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
    $resultat = array();
    $criteres = array( '...','...', '....' );
    $stmt = $pdo->prepare( 'SELECT id, champ FROM table WHERE champ LIKE ?' );
    Foreach( $criteres as $critere ){
     $res = $stmt -> execute ( array( $critere ) );//node fetch associatif...
     foreach ( $res as $couple  ){
        if ( isset( $resultat[$couple['id']] ){
          $resultat[$couple['id']]['note']++;
        }
        else {
          $resultat[$couple['id']]=array( 'note' => 0, 'champ' => $couple['champ'], 'id' => $couple['id'] );
        }
     }//$res inter
     unset($res);
    }//critere
     
    function customSort($a,$b){
      return $a['note'] - $b['note']; //verifier le sens 
    }
     
    ursort( $resultat, 'customSort' );
    du php des familles

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci a toi, oui oui, la piste PDO et tes ARRAY c'est extra
    je vais m'en sortir ainsi !

    Des familles dis-tu oui, mais efficace

    Encore merci.

    A++
    Christele

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

Discussions similaires

  1. Perl et la génération de nombres, possible ?
    Par cooljojo dans le forum Langage
    Réponses: 6
    Dernier message: 01/04/2010, 16h36
  2. [VBA-Excel] - nombre de cas possibles
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/01/2007, 10h53
  3. Réponses: 1
    Dernier message: 26/01/2007, 09h38
  4. Plus grand nombre possible
    Par lia dans le forum C++
    Réponses: 2
    Dernier message: 30/08/2006, 11h22
  5. Réponses: 12
    Dernier message: 10/06/2006, 23h16

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