Comment séparer les mots saisis dans un input type text ?

Eléphanteau du PHP | 19 Messages

03 nov. 2014, 02:58

Bonjour à tous & toutes

Je travaille sur un formulaire avec Bootstrap.
Avc le formulaire les utilisateurs peuvent tapper un ou plusieurs mot-clé.
//voilà mon formulaire
    <div class="container">
        <form class="navbar-form navbar-left" role="search">

          <div class="form-group">
                <input type="text" name="motCle" class="form-control" placeholder="Rechercher">
          </div>
          <button type="submit" class="btn btn-default">Envoyer</button>
        </form>
    </div>
Admettons que l’utilisateur rentre "soucis logiciel"

Pour ma requête je voudrait faire une requête du genre
SELECT   id, nom, solution
FROM	 problemes
WHERE    (nom LIKE '%soucis%' or solution LIKE '%soucis%')
AND 	 (nom LIKE '%logiciel%' or solution LIKE '%logiciel%')
Je pense que je dois recupéere les différents mots apparemment mais je ne sais pas comment m'y prendre.
Pouvez-vous m'aider s'il vous plaît ?

Merci d'avance.

Eléphant du PHP | 67 Messages

03 nov. 2014, 12:15

Personnellement je passerais plutôt par du PHP (ou autre) avant pour séparer mes valeurs:
http://fr2.php.net/manual/fr/function.explode.php

Sinon il est possible de créer une fonction MySQL pour faire ça mais le PHP me paraît plus simple à faire:
http://blog.fedecarg.com/2009/02/22/mys ... -function/

Eléphanteau du PHP | 19 Messages

03 nov. 2014, 22:37

Bonjour Furax

je vais essayez vos solutions
Merci et @+

Eléphanteau du PHP | 19 Messages

11 nov. 2014, 02:09

Bonjour

j'ai réussi à faire ce que je voulais en utilisant la function php explode

Ci-dessous le code utilisé
<?php

$idcategorie = trim($_GET["idcategorie"]);
$motcle = trim($_GET["motcle"]);

// aucun mot clé => affichage de tous les résultats
                if ($motcle == "") { 
                    $sqlCount = " SELECT count(id_probleme)
                       FROM problemes
                       WHERE id_categorie = $idcategorie ";

                    $sqlDetail = " SELECT id_probleme, id_categorie, nom, solution
                       FROM problemes
                       WHERE id_categorie = $idcategorie";
                } else { // mot clé saisi => recherche
                    $arrMotcle = explode(" ",$motcle);
                    $strMotCle = ""; $separateur = "";
                    foreach ($arrMotcle as $itemMotcle) {
                        $strMotCle = $strMotCle . $separateur . " nom LIKE \"%".$itemMotcle."%\" OR solution LIKE \"%".$itemMotcle."%\" ";
                        $separateur = " OR ";
                    }
                  

                    $sqlDetail = " SELECT id_probleme, id_categorie, nom, solution
                       FROM problemes
                       WHERE id_categorie = $idcategorie
                       AND (".utf8_decode($strMotCle).") ";
                       //die($sqlDetail);
                }

?>