Mini moteur en PHP

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

amazigh25
WRInaute passionné
WRInaute passionné
 
Messages: 996
Inscription: Sam Juin 04, 2005 12:53

Mini moteur en PHP

Message le Lun Mai 15, 2006 23:15

Bonsoir,
Je vais essayer de vous expliquer mon problème.

J'ai une table dont la structure est la suivante :

Code: Tout sélectionner
CREATE TABLE `cartouches` (
  `id` int(11) NOT NULL auto_increment,
  `imprimante` varchar(255) NOT NULL default '',
  `reference` varchar(255) NOT NULL default '',
  `marque` varchar(255) NOT NULL default '',
  `fournisseur` varchar(255) NOT NULL default '',
  `urlfournisseur` varchar(255) NOT NULL default '',
  `description` text NOT NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 ;


Je voudrais créer un mini moteur de recherche, qui cherche dans toute la table ou bien dans certains champs.

Qu'es ce que vous me conseillez ?

Merci d'avance

Ps: J'ai pas mal fouillé sur wri mais j'ai pas bien compris comme ça marchait .


dmathieu
Modérateur
Modérateur
 
Messages: 6910
Inscription: Ven Jan 09, 2004 16:21

Message le Lun Mai 15, 2006 23:33

Code: Tout sélectionner
$sql = 'SELECT `id`
FROM `cartouches`
WHERE `imprimante` LIKE "%'.$q.'%"
OR `description` LIKE "%'.$q.'%";';

Comme cela par exemple.

Après, tu n'a plus qu'à adapter les champs selon tes choix.

amazigh25
WRInaute passionné
WRInaute passionné
 
Messages: 996
Inscription: Sam Juin 04, 2005 12:53

Message le Mar Mai 16, 2006 0:01

Bonsoir

Merci pour ta réponse.

$q est le mot recherché ?

Pour l'affichage des résultats je fais une boucle comme pour n'importe quelle requette ?

Merci

Zim'
WRInaute passionné
WRInaute passionné
 
Messages: 804
Inscription: Jeu Avr 27, 2006 2:08

Message le Mar Mai 16, 2006 0:53

oui, pour l'affichage il suffit de mettre le résultat dans un tableau et de boucler sur chacun des éléments, comme pour une requete avec des "WHERE"s

toutefois, je te suggères quelques optimisation, tel que des champs enum quand cela est possible, est des champs char(x) quand tu connais assez précisément la taille de ton champ...


spout
WRInaute accro
WRInaute accro
 
Messages: 1254
Inscription: Mer Mai 14, 2003 11:05

Message le Mar Mai 16, 2006 5:17

Oui mais là c'est juste pour rechercher 1 seul mot clef.
Si tu veux une meilleure recherche, il te faut une recherche fulltext:
http://dev.mysql.com/doc/refman/5.0/en/ ... earch.html

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Mar Mai 16, 2006 7:49

laisse tomber les LIKE %qqchose%, en terme de performance tu risques d'avoir des soucis.
suis le conseil de spout et va faire un petit tour du côté des index fulltext.

va aussi faire un petit tour sur ce post :
http://www.webrankinfo.com/forums/viewtopic_41650.htm

amazigh25
WRInaute passionné
WRInaute passionné
 
Messages: 996
Inscription: Sam Juin 04, 2005 12:53

Message le Mar Mai 16, 2006 11:35

Bonjour
Merci pour vos réponses
Zim' a écrit:toutefois, je te suggères quelques optimisation, tel que des champs enum quand cela est possible, est des champs char(x) quand tu connais assez précisément la taille de ton champ...


Es ce possible de bien detailler ? que veux tu dire par char(x) ?

fulltext me fait un peu peur :? surtout que ma table ne contiendra que peu de données . Y'a t'il un bon tutos pour savoir comment utiliser fulltext :?:

Merci :wink:

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Mar Mai 16, 2006 11:48

amazigh25 a écrit:fulltext me fait un peu peur :? surtout que ma table ne contiendra que peu de données . Y'a t'il un bon tutos pour savoir comment utiliser fulltext :?:

Merci :wink:


Si FullText te fait peur, et que tu as peu de données, commence avec des requêtes de type LIKE si tu veux. Il faut juste être conscient des limites en terme de perf.

Pour optimiser tes LIKE :
1. Indexe les champs sur lesquels tu veux faire tes requêtes.
2. dans le mesure du possible évite le joker % en début de comparaison. Ce qui n'est pas vraiment évident en production.

Il n' a pas de raison d'avoir peur de FULLTEXT, va voir la doc, inspire toi des exemples, et ça devrait rouler tout seul. En terme de perf, cela reste la meilleure solution.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Mini



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité