recherche dans un forum

Répondre
os2
le 06/08/2004 à 05:03
os2
salut

je désire faire une recherche selon le nom de l'auteur ou du texte rentré par un usager

j'utilise mysql

CREATE TABLE `reponse` (
`REP_NOREPONSE` int(11) NOT NULL auto_increment,
`MES_NOMESSAGE` int(11) NOT NULL default '0',
`MEM_NOMEMBRE` int(11) NOT NULL default '0',
`REP_REPONSE` text,
`REP_DATE` timestamp(14) NOT NULL,
PRIMARY KEY (`REP_NOREPONSE`)
) TYPE=MyISAM AUTO_INCREMENT=22 ;


CREATE TABLE `message` (
`MES_NOMESSAGE` int(11) NOT NULL auto_increment,
`SEC_NOSECTION` int(11) NOT NULL default '0',
`MEM_NOMEMBRE` int(11) NOT NULL default '0',
`MES_MESSAGE` text,
`MES_DATE` timestamp(14) NOT NULL,
`MES_TITRE` varchar(100) default NULL,
PRIMARY KEY (`MES_NOMESSAGE`)
) TYPE=MyISAM AUTO_INCREMENT=34 ;

CREATE TABLE `membre` (
`MEM_NOMEMBRE` int(11) NOT NULL auto_increment,
`MEM_NOM` varchar(30) NOT NULL default '',
`MEM_PRENOM` varchar(30) NOT NULL default '',
`MEM_NOMUSAGER` varchar(30) NOT NULL default '',
`MEM_MOTPASSE` varchar(30) NOT NULL default '',
`MEM_COURRIEL` varchar(30) NOT NULL default '',
`MEM_TYPE` int(11) NOT NULL default '0',
`MEM_SITEWEB` varchar(100) default NULL,
`MEM_SIGNATURE` varchar(50) default NULL,
`MEM_NBMESSAGE` int(11) default '0',
PRIMARY KEY (`MEM_NOMEMBRE`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;

lors d'une requete j'obtient en paramètre soit un nom d'auteur soit un texte sois les deux

je veux faire une recherche full text (match AGAINST) sur les champs mes_message (table message) et rep_reponse (table reponse)

l'usager pourrait aussi choisir la section voulue... (ce qui j'ai pas mis dans la requete ci-jointe)

étant donné qu'il peut avoir que auteur ou le texte peut être vide, je sais pas si c'est faisable en une seul requete? et si ça serait mieux de le faire en une seul requete ou plusieurs...

si un element reponse concorde, on envois le message qui lui est lié ...

j'avais codé ça

SELECT mes_titre, sec_nomsection, rep_reponse, mem_nomusager
FROM message mes
INNER JOIN section s ON s.sec_nosection = mes.sec_nosection
INNER JOIN reponse rep ON mes.mes_nomessage = rep.mes_nomessage
INNER JOIN membre mem ON mem.mem_nomembre = mes_mem_nomembre
WHERE MATCH ( mes_message, rep_reponse )
AGAINST ( 'allo' ) OR MEM_NOMUSAGER = 'paul'

mais MySQL me dit Wrong arguments to MATCH

de plus je sais pas si je devrais mettre:

INNER JOIN membre mem1 ON mem1.mem_nomembre = rep_mem_nomembre

des suggestions, idée?


merci
--
La boîte à prog http://www.laboiteaprog.com
http://www.laboiteaprog.com
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours