Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/05/2011, 22h08   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 13
Points : 13
Par défaut Problème sur mon moteur de recherche

Bonjour à toutes et tous, j'ai un petit problème et peut être que vous, amis développeurs, vous trouvez une solution pour m'aider.
Je suis en train de développer un site internet qui utilise un moteur de recherche de ma création que vous trouverez en pièce jointe.

Mon moteur de recherche est rédigé en PHP et il a pour but de rechercher dans une base de données appelé: liste_carte. Pour l'instant, cette base ne comportait qu'une seul table appelé "liste_carte" (je sais que cela ne doit pas être pratique d'avoir appelé la table du même nom que la base mais bon ^^).

Tout marche parfaitement mais je viens de rajouter une nouvelle table dans ma base appelé "reedition" et je voulais savoir comment faire pour que mon moteur de recherche puisse cherché dans les deux tables et en extraire les réponses correspondantes.

Merci d'avance pour votre aide et j'attends vos réponses.
Cordialement,
Clairetj
Fichiers attachés
Type de fichier : php PTtestRecherche4.php (8,5 Ko, 6 affichages)
clairetj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 19h04   #2
Invité de passage
 
Femme
Développeur Web
Inscription : avril 2011
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : avril 2011
Messages : 31
Points : 2
Points : 2
Bonjour tt le monde,
Moi aussi j'ai le meme problème que vous, je suis entrain de developper un moteur de recherche pour mon site, lorsque je fais le filtrage sur une seule table ça marche très bien,mais une fois j'ajoute une autre table ça marche plus est ce quelqu'un a une idée sur la requete qui permettra de chercher dans plusieurs table d'une base de données
Merci d'avance pour votre aide
me_for_ever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 12h50   #3
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Hello

Vous pouvez toujours utiliser une union en mettant le nom de la table qui à matché dans un champ de résultat.

Voici un exemple avec un recherche fulltext:
Code :
1
2
3
4
5
6
7
8
9
10
 
SELECT 'articles' AS `table`, id, body, MATCH (title,body) AGAINST
('Security implications of running MySQL as root') AS score
FROM articles WHERE MATCH (title,body) AGAINST
('Security implications of running MySQL as root')
UNION
SELECT 'articles_backup' AS `table`, id, body, MATCH (title,body) AGAINST
('Security implications of running MySQL as root') AS score
FROM articles_backup WHERE MATCH (title,body) AGAINST
('Security implications of running MySQL as root');
Produit:
Code :
1
2
3
4
5
6
7
8
9
+-----------------+----+-------------------------------------+------------------+
| table           | id | body                                | score            |
+-----------------+----+-------------------------------------+------------------+
| articles        |  4 | 1. Never run mysqld as root. 2. ... | 1.52192711830139 |
| articles        |  6 | When configured properly, MySQL ... | 1.31140959262848 |
| articles_backup |  4 | 1. Never run mysqld as root. 2. ... | 1.52192711830139 |
| articles_backup |  6 | When configured properly, MySQL ... | 1.31140959262848 |
+-----------------+----+-------------------------------------+------------------+
4 rows in set (0.00 sec)
Je vous mets la procédure en pj et je vous invite à lire l'article de MySQL sur la recherche fulltext ici: http://dev.mysql.com/doc/refman/5.0/...xt-search.html

Je ne garantis pas que cette méthode soit la meilleure.
Fichiers attachés
Type de fichier : txt fulltext.txt (4,2 Ko, 2 affichages)
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2011, 13h50   #4
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 13
Points : 13
Merci pour vos réponses par contre est-ce que je pourrais te demandé quelque chose Benjamin Delespierre: avec mon code joint dans le premier topic est-ce que tu pourrais, si tu en as le temps et la possibilité, m'aidé à le modifié parce que je n'arrive pas à voir où je pourrais appliquer ta solution
Merci d'avance,
Cordialement,
Clairetj
clairetj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2011, 14h16   #5
Invité régulier
 
Homme Hervékovitch Samhorry
Développeur informatique
Inscription : mai 2009
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Hervékovitch Samhorry
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 13
Points : 8
Points : 8
Par défaut je crois que...

Je pense que tu peux lef aire ici :
Code :
1
2
3
4
5
6
7
8
9
$reponse = mysql_query("SELECT 'articles' AS `table`, id, body, MATCH (title,body) AGAINST
('Security implications of running MySQL as root') AS score
FROM articles WHERE MATCH (title,body) AGAINST
('Security implications of running MySQL as root')
UNION
SELECT 'articles_backup' AS `table`, id, body, MATCH (title,body) AGAINST
('Security implications of running MySQL as root') AS score
FROM articles_backup WHERE MATCH (title,body) AGAINST
('Security implications of running MySQL as root')");
samhorry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2011, 18h32   #6
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 13
Points : 13
Donc, si je te suis bien samhorry je remplace 'table' par le nom de ma table, id et body par le nom de mes différents champs et par contre 'articles_backup' je le remplace par le nom de ma base de données ????
clairetj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 18h27   #7
Membre régulier
 
Homme
Développeur Web
Inscription : octobre 2009
Messages : 72
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Vietnam

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2009
Messages : 72
Points : 99
Points : 99
Par défaut Factorisation du traitement du formulaire

Bonjour,
Ayant un peu de tps , J'ai essayé de factoriser un peu le traitement du formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
<?php
mysql_connect("localhost", "root", "");					// Connexion à MySQL
mysql_select_db("liste_carte"); 						// Sélection de la base liste_carte
mysql_query("SET NAMES UTF8");							// Corrige bug d'affichage des accents
 
if (isset($_POST['textnom']))
{
	var_dump($_POST);
 
	$e= array(
		0=>'Veuillez entrer au moins un critère de recherche'
	);
	$error = 0;
	$q = $p = '';
	$op = "OR"; //OPERATEUR SQL
 
 
	foreach ($_POST as $k=>$v)
	{
		$POST[$k] = addslashes($v); //rajoute un / devant les apostrophes, si la recherche en contient
		if($POST[$k] != ""){
			$error ++;
		}
	}
	echo $error;
	if($error == 0){		
		echo $e[0];
	}else{
		echo 'Recherche : ';
		foreach($POST as $k=> $Vs){
			if($k != "selectcolor"){
				$v = explode(" ", $Vs); //séparation des mots
				$v_nb = count($v);
				for($i = 0; $i < $v_nb; $i++)
				{
					$field = str_replace('text','',$k);
					$q.= $op.' `'.$field.'` LIKE \'%' . $v[$i] . '%\' ';
				}
				$q = ltrim($q,$op); //suppression de l'opérateur au début de la boucle
			}
		}
		$q_more = $q;
		echo "<pre>".$q."</pre>";
 
		$q = "SELECT * FROM liste_carte WHERE ".$q_more;
		echo $q;
		$r = mysql_query($q);
 
		$nb = mysql_num_rows($r);
 
		if ($nb == 0){
			$p_debut = 'Aucun résultat ne correspond à votre recherche.';//Affichage si il n'y a aucun résultat
		}elseif ($nb == 1){
			$p_debut = $nb.' résultat :';//si il y a 1 résultat
		}else{
			$p_debut = $nb.' résultats :';						//si il y a plusieurs résultats
		}
 
		while ($d = mysql_fetch_array($r)){
			$p .= '<p>';
			$p .= '<a href="SiteRecherche.php?page=SiteCarte&id='.$d['id'].'"> '.$d['nom']; 
			$p .= '<span class="marge"><span class="marge">	<img src="../image_mana/'.$d['mana'].'.png" /> </br>';
			$p .= '</p>';
		}
		echo $p_debut.'<br/>'.$p;
 
		mysql_close();  
	}
}
?>
matlow est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h28.


 
 
 
 
Partenaires

Hébergement Web