Problème sur réquête avec jointure et recherche (LIKE)
Posté : 25 mars 2008, 21:06
Bonjour,
Je me met doucement aux jointures SQL et là je rencontre une difficulté dansu n cas particulier sans doute du à une mauvaise compréhension...
Tout allé bien jusqu'à que je décide de faire un mini moteur de recherche à l'aide de LIKE et OR.
Je vais essayer d'expliquer ma requête ou plutôt le résultat recherché.
Je recherche les données d'une table appartenant l'utilisateur identifié ( {$_SESSION['utilisateur']} ).
Et j'ajoute une condition si la variable recherche est envoyé qui est de récupérer seulement les lignes ou le champ spécifié contient au moins un des mots clés du tableau.
Seulement j'ai été obligé de faire une boucle sur la partie recherche de la requête et d'utiliser OR.
Au final, je ne sais expliquer pourquoi car j'ai surement mal comprit quelque chose, mais j'obtiens des résultat dont l'id utilisateur ne correspond plus à l'utilisateur identifié mais à tout le monde.
Si quelqun pouvais me mettre sur une piste ça m'aiderait beaucoup...
Je me met doucement aux jointures SQL et là je rencontre une difficulté dansu n cas particulier sans doute du à une mauvaise compréhension...
Tout allé bien jusqu'à que je décide de faire un mini moteur de recherche à l'aide de LIKE et OR.
Je vais essayer d'expliquer ma requête ou plutôt le résultat recherché.
Je recherche les données d'une table appartenant l'utilisateur identifié ( {$_SESSION['utilisateur']} ).
Et j'ajoute une condition si la variable recherche est envoyé qui est de récupérer seulement les lignes ou le champ spécifié contient au moins un des mots clés du tableau.
Seulement j'ai été obligé de faire une boucle sur la partie recherche de la requête et d'utiliser OR.
Au final, je ne sais expliquer pourquoi car j'ai surement mal comprit quelque chose, mais j'obtiens des résultat dont l'id utilisateur ne correspond plus à l'utilisateur identifié mais à tout le monde.
Si quelqun pouvais me mettre sur une piste ça m'aiderait beaucoup...
if ( isset( $_POST['recherche'] ) ) // Recherche
{
$mots = strtolower( $_POST['recherche'] ); //Minuscule
$tab_mots = explode( ' ', $mots ); // création tableau de mots-clé
$nb_mots = count( $tab_mots ); // On compte le nombre de mots dans le tableau
$recherche = 'AND ipi3_notes_texte LIKE \'%'.$tab_mots[0].'%\'';
for ( $i = 1; $i < $nb_mots; $i++ ) // On boucles tous les mots et on les ajoutent à la requête
{
$recherche .= 'OR ipi3_notes_texte LIKE \'%'.$tab_mots[$i].'%\'';
}
}
else
{
$recherche = NULL;
}
$req_notes = "SELECT *
FROM ipi3_notes, ipi3_libelles
WHERE ipi3_notes_gens_id = {$_SESSION['utilisateur']}
AND ipi3_notes_etat = 1
$recherche
AND ipi3_libelles_id = ipi3_notes_libelles_id
{$_SESSION['pref_ordrenotes']}";
$result_notes = mysql_query( $req_notes ) or die( mysql_error() );
echo $req_notes;