Problème avec moteur de recherche.

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 : Problème avec moteur de recherche.

Re: Problème avec moteur de recherche.

par Skikit » 17 mars 2010, 15:18

Visiblement tu ne sais pas ce qu'est une jointure donc je t'invite à lire la doc Sql.
Tu dois avoir un champ commun entre tes tables "membre" et "articles".
Exemple de jointure conditionnelle (dans le where) dans ton cas :
SELECT articles.titre,articles.contenu,membre.pseudo FROM membre,articles WHERE membre.id=articles.id_membre AND ...
Tu peux aussi utiliser un LEFT JOIN.

Re: Problème avec moteur de recherche.

par JeanJean » 17 mars 2010, 14:24

Après renseignements, j'ai fais quelque chose comme ça, mais j'ai toujours le même problème. :/
		$lecture = mysql_query("SELECT articles.titre,articles.contenu,membre.pseudo FROM membre,articles WHERE membre.pseudo LIKE '%$recherche%' OR articles.titre LIKE '%$recherche%' OR articles.contenu LIKE '%$recherche%'") or die('Erreur :'.mysql_error());

Re: Problème avec moteur de recherche.

par JeanJean » 17 mars 2010, 13:30

Tu pourrais m'en dire plus sur le type de jointure qui correspond à ma requête SQL ?

Merci. ;)

Re: Problème avec moteur de recherche.

par Skikit » 17 mars 2010, 12:04

Salut,

C'est ta requête Sql qui pose problème.
En effet, à partir du moment où tu as plusieurs tables, si tu ne fais pas de jointure, tu obtiens un produit cartésien.

Problème avec moteur de recherche.

par JeanJean » 17 mars 2010, 11:46

Bonjour,

Je commence un petit script pour un moteur de recherche.
Ce dernier doit être en mesure de recherche le terme voulu dans plusieurs BDD. Ainsi quand un membre décidera de faire une recherche, il tombera sur les pseudos, titres et contenus d'articles qui correspondent à sa recherche.

J'ai fais un premier jet mais je rencontre un problème avec la boucle.
<?php
session_start();
if(isset($_POST['submit'])){
	if(empty($_POST['recherche'])){
		$erreur = 'Le champ recherche est vide';
	}
	else{
		require 'config.php';
		$connexion_sql = mysql_connect(DB_HOST,DB_LOGIN,DB_PASS); 
		$connexion_bdd = mysql_select_db(DB_BDD);
		
		$recherche = mysql_real_escape_string($_POST['recherche']);
		
		$lecture = mysql_query("SELECT titre,contenu,pseudo FROM membre,articles WHERE pseudo LIKE '%$recherche%' OR titre LIKE '%$recherche%' OR nom LIKE '%$recherche%' OR prenom LIKE '%$recherche%'") or die('Erreur :'.mysql_error());
		while($retour = mysql_fetch_array($lecture)){
			if(isset($retour['pseudo']) && $retour['pseudo'] !== null){
				echo 'Résultat de la recherche pour les pseudo : 
				<br /><br />
				'.$retour['pseudo'].
				'<br /><br />';
			}
		}
	}
}
?>
<form method="post">
	<input type="text" name="recherche">
	<input type="submit" name="submit">
</form> 
Dans ma BDD, j'ai trois membre : Jean, JeanJean et Test.

Quand j'enlève le while et que je cherche le mot clé Jean, j'ai le résultat qui s'affiche.
Ensuite, pour afficher plusieurs pseudo, j'ai ajouté une boucle.

Toujours en faisant une recherche sur Jean, voilà son résultat :

R
ésultat de la recherche pour les pseudo :

Jean

Résultat de la recherche pour les pseudo :

JeanJean

Résultat de la recherche pour les pseudo :

Jean

Résultat de la recherche pour les pseudo :

JeanJean

Résultat de la recherche pour les pseudo :

Jean

Résultat de la recherche pour les pseudo :

JeanJean

Résultat de la recherche pour les pseudo :

Jean

Résultat de la recherche pour les pseudo :

JeanJean

Résultat de la recherche pour les pseudo :

Jean

Résultat de la recherche pour les pseudo :

JeanJean

Résultat de la recherche pour les pseudo :

Jean

Résultat de la recherche pour les pseudo :

JeanJean

Résultat de la recherche pour les pseudo :

Jean

Résultat de la recherche pour les pseudo :

JeanJean

Résultat de la recherche pour les pseudo :

Jean

Résultat de la recherche pour les pseudo :

JeanJean
C'est moi où j'ai raté quelque chose ?

Merci. ;)