Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1850 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  moteur de rcherche php: comment sélectionner 3 tables?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

moteur de rcherche php: comment sélectionner 3 tables?

n°1996327
farized
Posté le 26-05-2010 à 23:59:31  profilanswer
 

salut j'ai fais un moteur de recherche interne pour mon site web, j'ai trouvé un script qui fonctionne bien mais je veux sélectionner 3tables au lieu d'une seule. j'ai éssayé mais je reçois tjrs un message(erreur de syntax) voila le code:  
 
<?  
if(isset($_POST['requete']) && $_POST['requete'] != NULL){  
mysql_connect('localhost','root','');  
mysql_select_db('parc');  
$requete = htmlspecialchars($_POST['requete']);  
$query = mysql_query("SELECT * FROM news WHERE nom LIKE '%$requete%' ORDER BY id DESC" ) or die (mysql_error());..............................................................................  
...........................................................  
 
 
voila je veuw ajouter 2 autres tables faune et flore:  
j'ai fait:  
SELECT * FROM news,faune,flore WHERE nom LIKE.....  
 
est ce que vous pouvez m'aider?

mood
Publicité
Posté le 26-05-2010 à 23:59:31  profilanswer
 

n°1996366
flo850
moi je
Posté le 27-05-2010 à 09:43:30  profilanswer
 

SELECT id,nom,'news' as type FROM news WHERE nom LIKE '%requete%' UNION
SELECT id,nom,'faune' as type FROM fauneWHERE nom LIKE '%requete%'
...

 

ce n'est pas htmlspecialchars qu'il faut utiliser mais mysql_real_escape_string
il vaut peut ter mieux utiliser MATCH AGAINST plutot que LIKE


Message édité par flo850 le 27-05-2010 à 09:44:27
n°1996418
farized
Posté le 27-05-2010 à 12:51:09  profilanswer
 

slt merci pour la réponse! pour le code ça ne m'a donné aucunne érreur de syntax mais il ne trouve aucune page!
les table sont trés différentes il ya que le champ nom et id qui existe ds les memes tables mais le nom n'est pas le meme!
comment faire?

n°1996498
flo850
moi je
Posté le 27-05-2010 à 16:21:02  profilanswer
 

- refaire les choses un peu plus proprement en homogénéisant tout ça  
- lancer 3 recherches différentes dans tes 3 tables

n°1996507
deliriumtr​emens
sic transit intestinal...
Posté le 27-05-2010 à 16:42:02  profilanswer
 

Comme l'a montré flo, le plus simple est de faire des UNION.
 
Mais dans entre les différents UNION, tous les champs retournés doivent être identiques (dans chaque requête UNION, tu dois avoir le même nombre de "colonnes", portant le même nom, et du même type).
 
Tu peux gérer cela sans trop de problème en utilisant des alias (AS)
 
donc
 

Code :
  1. SELECT id_faune AS id, nom_faune AS nom, NULL as attribut1, 'faune' as type_table from faune UNION
  2. SELECT id_news AS id, nom_news AS nom, date_news AS attribut1,  'news' as type_table from news UNION
  3. SELECT id_yyy AS id, nom_yyy AS id, NULL as attribut1, 'yyy' as type_table from yyy


 
Edit : si je ne dis pas d'âneries MATCH AGAINST est pas mal pour faire des recherches FULL TEXT, mais demande un index full text sur les champs sur lesquels tu veux faire des recherches, et ne fonctionne que sur du MyIsam.


Message édité par deliriumtremens le 27-05-2010 à 16:45:33

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  moteur de rcherche php: comment sélectionner 3 tables?

 

Sujets relatifs
[UNIX/KSH] Tester l'existence de tables ! Erreur louche ! - RESOLU -Liste déroulante de Tables
Comment supprimer des enregistrements dans deux tables liéesPWM sur moteur à courant continu avec Arduino
Aide pour modèle objet. moteur d'ordre?requete mysql order by sur 2 tables
pb de liaison de nombreuses tables lors de l'import d'un .csvSelection et tri sur plusieurs tables avec memes colonnes
[Résolu] Jointure entre deux tables[SQL Server 2008]Lié des tables entre 2 Bases - possible ?
Plus de sujets relatifs à : moteur de rcherche php: comment sélectionner 3 tables?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR