utilisation de LIKE

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : utilisation de LIKE

par Berzemus » 10 déc. 2007, 23:50

Et pourquoi ne pas étudier les possibilités de recherche fulltext de mysql ?
Sur un nom et/ou prénom... pas vraiment utile :-k
Ah si, même sur les booléens, si on veut.. enfin.. presque, hein.. :roll:
(note, avec certains noms, c'est toujours pratique)

par Truc » 10 déc. 2007, 23:34

Et pourquoi ne pas étudier les possibilités de recherche fulltext de mysql ?
Sur un nom et/ou prénom... pas vraiment utile :-k

par Berzemus » 10 déc. 2007, 23:29

Et pourquoi ne pas étudier les possibilités de recherche fulltext de mysql ?

par gadgino » 10 déc. 2007, 23:12

escuser moi mais j'ai pas l'abitude de pondre des regex c'est le prems en fait.
vois si cette condition la te va mais sa devient beaucoup de bidouille.
$search_like = mysql_real_escape_string (str_replace (' ', '|', $search)); 
$sql = "SELECT *
FROM user
WHERE name REGEX '.*(".$search_like.").*'
OR username REGEX '.*(".$search_like.").*'
OR firstname REGEX '.*(".$search_like.").*'";
bien entendut s'il y a plus d'un espace ça se complique.

par gadgino » 10 déc. 2007, 22:18

j'ai peur que la recherche avec %james%bond% marche pas mieu??

Re: utilisation de LIKE

par Victor BRITO » 10 déc. 2007, 21:54

Modifie ta requête comme suit :
$search_like = mysql_real_escape_string (str_replace (' ', '%', $search));
$sql = "SELECT *
FROM user
WHERE name LIKE '%".$search_like."%'
OR username LIKE '%".$search_like."%'
OR firstname LIKE '%".$search_like."%'";

par Invité » 10 déc. 2007, 21:08

couper en 2 avec php ou mysql?
je pensais que LIKE renvoyait tout ce "qui ressemble à", en considérant que la chaine "james" est incluse dans la chaine 'james bond"...bref.

si j'ai bien compris, cette recherche est impossible sans séparation de la chaine en 2?

par gadgino » 10 déc. 2007, 20:41

normale, parce que sa m'etonerait que tu est un nom ou un prenom qui ressemble a %james bond%
tu devrais couper ton "james bond" en deux mots.

utilisation de LIKE

par Invité » 10 déc. 2007, 20:27

bonjour,
j'ai des utilisateurs dans une table user.
Ma table:

Code : Tout sélectionner

CREATE TABLE `user` ( `id` INT( 10 ) NOT NULL , `name` VARCHAR( 255 ) NOT NULL , `firstname` VARCHAR( 255 ) NOT NULL , `username` VARCHAR( 255 ) NOT NULL , PRIMARY KEY ( `id` ) );
J'utilise ensuite LIKE dans une requete sql pour afficher les résultats d'une requete.
La recherche peut se faire par nom ou prénom . La valeur envoyée par le formulaire de recherche est dans une variable php $search.

Ma requete:
$sql = "SELECT * FROM user WHERE name LIKE '%$search%' OR username LIKE '%$search%' OR firstname LIKE '%$search%'";
Supposons que je cherche une personne nommée james bond.
Si je tape "james" pour la recherche, j'ai le résultat =>ok
Si je tape "bond" pour la recherche, j'ai le résultat =>ok
Si je tape "james bond", la recherche ne me retourne aucun résultat.

Est-ce normal? comment puis-je éventuellement contourner ce pb?
Merci pour vos réponses.