PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 03-11-2014 01:52:19

Delphine
Membre
Inscription : 21-10-2014
Messages : 18

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

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'utlisateur 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 séparemment mais je ne sais pas comment m'y prendre.
Pouvez-vous m'aider s'il vous plaît ?

Merci d'avance.


Hors ligne

#2 03-11-2014 07:25:29

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Comment séparer les mots récupérés dans un input type text ?

Saluton,

En première analyse je te dirigerais vers les fonctions PHP explode() ou split().

Mais je pressens des difficultés à venir liées à la non-unicité et non universalité potentielles de l'espace comme caractère de séparation et aux articles et autres conjonctions de coordination.

En effet, commet traiteras-tu, par exemple : "soucis de   logiciel"

@mike


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 03-11-2014 21:45:59

Delphine
Membre
Inscription : 21-10-2014
Messages : 18

Re : Comment séparer les mots récupérés dans un input type text ?

Bonjour Maljuna Kris

je vais essayer avec les fonctions PHP explode() ou split().

Je vous tiens au courant
Merci et @+

Hors ligne

#4 11-11-2014 00:58:43

Delphine
Membre
Inscription : 21-10-2014
Messages : 18

Re : Comment séparer les mots récupérés dans un input type text ?

Bonjour

j'ai réussi à faire ce que je voulais.

Je mets ci-dessous la solution

<?php
//ici je récupère les variables envoyées par un formulaire
// utilisation de trim pour enlever les espaces inutiles qui risqueraient de poser problèmes

$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";

                 //je recupère les différents mots entrer dans la variable motcle
                } 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 ";
                    }

                    // .utf8_decode pour prendre en compte les accents du motcle
                    $sqlDetail = " SELECT id_probleme, id_categorie, nom, solution
                       FROM problemes
                       WHERE id_categorie = $idcategorie
                       AND (".utf8_decode($strMotCle).") ";
                       //die($sqlDetail);
                }

?>

Hors ligne

Pied de page des forums