Comparer les valeurs de deux tableaux

Comparer les valeurs de deux tableaux - PHP - Programmation

Marsh Posté le 05-03-2006 à 12:43:57    

Bonjours  
 
J'aurais besoin d'aide svp  
 
Je suis en train de créer un site web de vente en ligne, je suis pour cela en train de créer une fonction de recherche qui va interroger ma base de donnée pour par la suite afficher le produit demandé.  
 
Ainsi lorsque l'utilisateur tape par exemple Harry Potter, je coupe sa requete en deux, que j'inscris dans un tableau.  
Par exemple  
$tab_1[1]="Harry";  
$tab_1[2]="Potter";  
 
Je fais de même pour ma base de donnée que je sépare ren mot et que je classe dans un autre tableau. Tout allait bien jusqu'au moment ou j'ai voulu comparer ces deux tableaux.  
 
J'ai ainsi pu voir que si je compare les deux tableaux le langage php compare a la fois les clés et les valeurs.  
 
Je veux comparer seulement les valeur du tableau entre elles savez vous comment je peux proceder.  
 
Je vous remercie d'avance pour votre aide

Reply

Marsh Posté le 05-03-2006 à 12:43:57   

Reply

Marsh Posté le 05-03-2006 à 12:54:01    

Attends, tu veux dire par là que tu recupères toute la base de données et que tu cherches à comparer les tableaux, ca va dans ta tete ou quoi ?  
tu sais qu'en faisant une requete SQL genre WHERE bidule like mahcin ca marche très bien
 
et meme parfaitement
 
attend que quelqu'un de mieux informé que moi arrive :o

Reply

Marsh Posté le 05-03-2006 à 13:01:45    

Non tu ma pas bien compris , en aucun cas je stock toute ma base de donnée dans un tableau, le probleme est que dans ma base de donné il y a inscrit par exemple "Harry Potter", or si l'utilisateur tape Harry et que je lance tel quel la requete cela ne va pas marché, c'est pour cela que le "harry potter", je le coupe et je le place dans une variable temporaire (un tableau) dans lequel je place harry (tab[1]) et Potter (tab[2]).
 
Ma méthode marche mais uniquement lorsque les clés et les valeurs sont les même or je voudrais un systeme qui ne compare que les clé entre elles.
 
Voila, j'espere avoir été le plus clair possible

Reply

Marsh Posté le 05-03-2006 à 13:03:18    

que les valeurs entre elles (dsl de l'erreur du dessus)
 
je reformule : je voudrais un systeme qui ne compare que les valeurs entre elles sans se soucier des clés.  

Reply

Marsh Posté le 05-03-2006 à 13:37:29    

un OR quoi c'est ca ?
 
 
en gros tu voudrais que la requette "harry potter" (sans les guillemets) te retourne tous les articles contenant harry et tous les articles contenant potter ainsi que tous les articles contenant harry et potter ?

Reply

Marsh Posté le 05-03-2006 à 18:40:32    

SELECT col1,col2,... FROM maTable WHERE col1 LIKE '%Harry%' OR col1 LIKE '%potter%'
 
sinon cote php, pour comparer tes tableaux, tu vas t'embeter.
assure toi que tes deux tableaux sont bien triés dans l'ordre croissant
sinon array("harry","potter" ) et array("potter","harry" ) tu vas avoir du mal a les comparer


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 05-03-2006 à 20:21:30    

euh les LIKE c'est super pas propre et a la base, pas adapté aux recherches . tu dois regarder du coté de MATCH AGAINST

Reply

Marsh Posté le 06-03-2006 à 07:38:08    

peux-tu préciser en quoi MATCH AGAINST est mieux que LIKE ? c'est pas super explicite dans la doc

Reply

Marsh Posté le 06-03-2006 à 09:34:09    

fluminis a écrit :

sinon cote php, pour comparer tes tableaux, tu vas t'embeter.


 
Bin non: array_diff [:spamafote]

Reply

Marsh Posté le 06-03-2006 à 10:37:42    

Djebel1 a écrit :

peux-tu préciser en quoi MATCH AGAINST est mieux que LIKE ? c'est pas super explicite dans la doc


 
le MATCH AGAINST fonctionne avec un champ indexé en fulltext. Le LIKE a tendance à n'exploiter aucun index pour sa recherche. Il va donc scanner chaque enregistrement et comparer la valeur du champ avec ton masque.
 
 
Tu devines que le MATCH AGAINST est plus efficace.


---------------
MZP est de retour
Reply

Marsh Posté le 06-03-2006 à 10:37:42   

Reply

Marsh Posté le 06-03-2006 à 16:50:48    

hmm hmm oki merci, je n'utilisais que des like :x

Reply

Sujets relatifs:

Leave a Replay

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