Mini moteur en PHP

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

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

Code:
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 .
 
WRInaute accro
Code:
$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.
 
WRInaute impliqué
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
 
WRInaute impliqué
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...
 
WRInaute impliqué
Bonjour
Merci pour vos réponses
Zim' a dit:
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:
 
WRInaute passionné
amazigh25 a dit:
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.
 
Discussions similaires
Haut