Mysql_query LIKE
Utilisateur anonyme
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,
je fais mon moteur de recherche sur mon site
et j'ai un problême avec les LIKE de la requete mysql....
Voila mon script
_______________________________________________________________________
donc j'ai deux variable GET qui m'arrive direct depuis l'URl
$_GET['recherche'] = valeur entré par l'utilisateur
$_GET['rechercher'] = le bouton submit
<?php
if($_GET['rechercher'] == 'ok')
{
$recherche_separ = explode(' ', $_GET['recherche']);
$nb_recherche = count($recherche_separ);
$critere = ' LIKE "%'.$recherche_separ[0].'%"';
$nb_recherche = count($recherche_separ);
$z=1;
while($z<$nb_recherche)
{
$critere .=' OR LIKE "%'.$recherche_separ[$z].'%"';
$z++;
}
echo $critere;
$sql = 'SELECT * FROM news '.$critere.'';
$req = mysql_query($sql) or die (mysql_error());
echo '<h1>' . count($req) . ' résultat(s)</h1>';
while($data = mysql_fetch_array($req))
{
?>
<h1><?php echo $data['titre']; ?></h1>
<?php
}
}
else
{
echo '<p>Vous n\'avez pas précisez de critère de recherche!</p>';
}
________________________________________________________________________
voila et quand je fais mon script sa me fais sa
LIKE "%news%"Erreur de syntaxe près de 'LIKE "%news%"' à la ligne 1
j'ai regarder plusieur tuto sur le LIKE mysql mais ma sintaxe et juste :S
Pourriez vous m'aidez?
je fais mon moteur de recherche sur mon site
et j'ai un problême avec les LIKE de la requete mysql....
Voila mon script
_______________________________________________________________________
donc j'ai deux variable GET qui m'arrive direct depuis l'URl
$_GET['recherche'] = valeur entré par l'utilisateur
$_GET['rechercher'] = le bouton submit
<?php
if($_GET['rechercher'] == 'ok')
{
$recherche_separ = explode(' ', $_GET['recherche']);
$nb_recherche = count($recherche_separ);
$critere = ' LIKE "%'.$recherche_separ[0].'%"';
$nb_recherche = count($recherche_separ);
$z=1;
while($z<$nb_recherche)
{
$critere .=' OR LIKE "%'.$recherche_separ[$z].'%"';
$z++;
}
echo $critere;
$sql = 'SELECT * FROM news '.$critere.'';
$req = mysql_query($sql) or die (mysql_error());
echo '<h1>' . count($req) . ' résultat(s)</h1>';
while($data = mysql_fetch_array($req))
{
?>
<h1><?php echo $data['titre']; ?></h1>
<?php
}
}
else
{
echo '<p>Vous n\'avez pas précisez de critère de recherche!</p>';
}
________________________________________________________________________
voila et quand je fais mon script sa me fais sa
LIKE "%news%"Erreur de syntaxe près de 'LIKE "%news%"' à la ligne 1
j'ai regarder plusieur tuto sur le LIKE mysql mais ma sintaxe et juste :S
Pourriez vous m'aidez?
A voir également:
- Mysql_query LIKE
- Like instagram - Guide
- Wawacity like - Accueil - Outils
- Like par erreur instagram - Forum Instagram
- Coco-like - Accueil - Réseaux sociaux
9 réponses
il te manque le WHERE et le nom du champ à comparer par LIKE
je t'ai mis nom_champ remplaces par celui qui te concerne
je t'ai mis nom_champ remplaces par celui qui te concerne
$critere = 'nom_champ LIKE "%'.$recherche_separ[0].'%"';
$nb_recherche = count($recherche_separ);//pourquoi tu mets 2 fois cette ligne ?
$z=1;
while($z<$nb_recherche)
{
$critere .=' OR nom_champ LIKE "%'.$recherche_separ[$z].'%"';
$z++;
}
echo $critere;
$sql = 'SELECT * FROM news WHERE '.$critere.'';
$req = mysql_query($sql) or die (mysql_error());
je mets deux fois car je voudrais par exemple que . quand le mek tape [news point]
que sa me cherche dans une table tout les entrées qui ont news ou qui ont point....
donc je vais essayer avec WHERE mais si je voudrais que sa recherche sur tout les champs de ma table je devrais mettre quoi ?
que sa me cherche dans une table tout les entrées qui ont news ou qui ont point....
donc je vais essayer avec WHERE mais si je voudrais que sa recherche sur tout les champs de ma table je devrais mettre quoi ?
$nb_recherche = count($recherche_separ);
te renvoie la taille de l'array $recherche_separ donc le nombre de mots tapés, ça ne sert à rien de mettre plusieurs fois la même fonction
tu peux mettre dix fois la ligne tu auras toujours $nb_recherche=2 dans ton cas
pour recherche sur plusieurs champs il faut
te renvoie la taille de l'array $recherche_separ donc le nombre de mots tapés, ça ne sert à rien de mettre plusieurs fois la même fonction
tu peux mettre dix fois la ligne tu auras toujours $nb_recherche=2 dans ton cas
pour recherche sur plusieurs champs il faut
$critere = 'nom_champ1 LIKE "%'.$recherche_separ[0].'%" OR nom_champ2 LIKE "%'.$recherche_separ[0].'%" OR nom_champ3 LIKE "%'.$recherche_separ[0].'%"'; //et plus bas dans la boucle pareil $critere .=' OR nom_champ1 LIKE "%'.$recherche_separ[$z].'%" OR OR nom_champ2 LIKE "%'.$recherche_separ[$z].'%" OR OR nom_champ3 LIKE "%'.$recherche_separ[$z].'%"';
oui mais ma variable get et écrite avec un formulaire donc peut être que le mec va taper + de mot donc si il y en aurai 4 mot bain sa fera 4 like ??? non ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et bien si il tape 4 mots $nb_recherche = count($recherche_separ); va etre = 4
et ta boucle fera 3 pas (de 1 à <4) ce qui avec la première condition (celle qui est hors de la boucle) ça fait bien 4 LIKE
et ta boucle fera 3 pas (de 1 à <4) ce qui avec la première condition (celle qui est hors de la boucle) ça fait bien 4 LIKE