[PHP] Crée une fonction de recherche sur une base MySQL

Crée une fonction de recherche sur une base MySQL [PHP] - Programmation

Marsh Posté le 04-10-2001 à 06:39:44    

Je une base de donné avec des news dedans, je voudrais crée un script PHP pour chercher dans un champ de ma table news, comment je peut crée ca, avec une requete SQL..
 
P-e exist-il une funtion style "SELECT * FORM news WHERE corps='*$mot*' ??

Reply

Marsh Posté le 04-10-2001 à 06:39:44   

Reply

Marsh Posté le 04-10-2001 à 07:53:13    

WHERE corps LIKE '%$mot%' si je ne m'abuse (il est tot :D )

Reply

Marsh Posté le 04-10-2001 à 09:51:16    

__Lolo__ a écrit a écrit :

WHERE corps LIKE '%$mot%' si je ne m'abuse (il est tot :D )  




 
je confirme

Reply

Marsh Posté le 04-10-2001 à 10:28:04    

C'est bien ça.
Pour un ensemble de news, faire un like est assez rapide.
Pour des forums, (ou le nombre d'enregistrement est très important), il vaut mieux utiliser des méthodes un poil plus complexes et qui prennent plus de place dans la base de donée mais qui sont beaucoup plus rapide à l'arrivé.
 
Si vous avez besoin, je peux vous dire comment on a fait là ou je travailles pour avoir des réponses en quelques secondes sur une table comportant plus de 20000 enregistrements. (heu, juste la méthode utilisé en fait ;) ).

Reply

Marsh Posté le 04-10-2001 à 13:29:33    

c'est beaucoup non quelques secondes ?
 
 
Il me semble que quand on fait une recherche ici, ca met moins d'une seconde.
 
 
Mais dis toujours ta méthode. Ca m'intéresse, parce que j'ai pas appris :na:

Reply

Marsh Posté le 04-10-2001 à 15:28:54    

En gros, pour chaque message, on découpe le message en série de mots de 6 lettres.
On insére tout les mots de cette série là dans une table avec une colone qui indique dans quel message il ce trouve.
pour la recherche, on découpe le texte de la recherche de la même manière.
Ensuite, il sufit de rechercher les mot >=mot de la recherche et <= mot de la recherche (après incrémentation de la dernière lettre du mot)
Les messages à retourner sont ceux pour lesquels il existe l'ensemble des mots recherché ou un seul selon les options que tu veux.
J'ai pas sous les yeux un exemple de la requête qui fait ça.
 
pour le temps de recherche au boulot, il fuat avouer que c'est une bdd qui est très utilisé avec plus de 100 personnes constamment dessus entrain de faire des traitements bien plus complexe que ceux nécéssaire à un forum.

Reply

Marsh Posté le 04-10-2001 à 15:29:53    

PS : ce type de recherche est beaucoup plus rapide à exécuter qu'un like tout simple.

Reply

Marsh Posté le 04-10-2001 à 20:46:35    

Merci, j'avais moi même penser à crée un table du style
 
id | mot | newsid
 
ou la colone mot contien les mot de toutes les news, et newsid le ID de la news qui le contien...Mais sa mavais parut pas un très bonne idée...mais j'avais  au moin la bonne direction  :sol:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed