Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1836 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Rechercher dans une table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Rechercher dans une table

n°1153512
AlphaZone
Posté le 19-07-2005 à 11:52:25  profilanswer
 

Bonjour,
 
Je compte mettre en place un formulaire de recherche, cependant je vous voudrais que cette recherche se porte sur tout les champs d'une table. Et je ne sais ni par quoi, ni comment je dois procéder.
 
Quel syntaxe me proposez-vous ?
 
Mreci d'avance.

mood
Publicité
Posté le 19-07-2005 à 11:52:25  profilanswer
 

n°1153528
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-07-2005 à 12:01:13  profilanswer
 

Y'a pas de solution miracle.
 
Mettons que ta table soit :
 
Article
-------
id
title
stitle
summary
body
author
 
Critères possibles :
 
like sur title
like sur stitle
like sur summary
like sur body
= sur author
 
La requête miracle :
 

Code :
  1. select id
  2. from article
  3. where ('$title' = '' or title like '%$title%')
  4. and ('$stitle' = '' or stitle like '%$stitle%')
  5. and ('$summary' = '' or summary like '%$summay%')
  6. and ('$body' = '' or body like '%$body')
  7. and ('$author' = '' or author = '$author')


 
=> Comme ça, la recherche porte sur tous les champs du formulaire qui sont remplis.

n°1153623
AlphaZone
Posté le 19-07-2005 à 13:27:41  profilanswer
 

et si je fais une syntaxe de ce genre :
SELECT id
FROM article
WHERE title LIKE '%$title%'
OR stitle LIKE ...
OR ... LIKE ...
 
Ca fonctionne ?
 
En tout cas merci pour l'astuce :)

n°1153726
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-07-2005 à 14:31:30  profilanswer
 

ouais, ça fonctionne aussi, mais faire des "OR" entre chaque critère, c'est moyen, parceque plus tu fait une recherche précise, et plus tu as de résultats...

n°1153737
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-07-2005 à 14:39:49  profilanswer
 

Par exemple, tu recherches un livres :
 
titre : le horla
=> Tu récupère 1 ligne
 
titre : le horla
auteur : guy de maupassant
 
=> tu te retrouve avec toute la bibliographie de la guitoune

n°1153844
AlphaZone
Posté le 19-07-2005 à 16:24:47  profilanswer
 

Ah ok, je comprend mieu. Merci beaucoup pour ton aide ;)

n°1153878
AlphaZone
Posté le 19-07-2005 à 16:51:04  profilanswer
 

J'ai oublié de préciser :
Je n'ai qu'un champ de recherche comme Google. C'est-à-dire que avec un mot clé, je regarde dans tout les champs s'il existe et j'affiche.
 
Je reprend toujours la même méthode que tu m'as proposé ou bien cela change quelque chose à ma syntaxe ?

n°1153920
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-07-2005 à 17:08:30  profilanswer
 

Ben là, t'es obligé de mettre un OR.
 
Seulement, là, c'est mal barré, parceque si je tapes :
 
"le horla maupassant"
 
=> Ben j'aurai aucune ligne. Il faut donc découper la chaîne en petits bouts, et comparer chaque mot dans chaque champ.
 
A ce moment, je te conseille d'utiliser les fonction de recherche sur texte intégral FREETEXT et CONTAINS, qui te permettront de faire des recherches plus rapides, et surtout pondérées en fonction du nombre d'occurrence de chaque mot trouvés.
 
Ainsi, tu auras un moteur de recherche réellement comparable avec celui de Google, puisqu'il sait même manger les mots mal orthographiés.

n°1154126
AlphaZone
Posté le 19-07-2005 à 22:19:33  profilanswer
 

Je te remerci beaucoup Arjuna de ton aide.
 
Si je vois que l'utilisation de FREETEXT et CONTAINS ne sont pas chiant, je les utiliserais. Sinon je prendrais la méthode un peu plus barbare avec les OR.
 
 
En tout cas merci encore, tu m'as bien aidé dans mon travail :)

n°1154135
AlphaZone
Posté le 19-07-2005 à 22:29:00  profilanswer
 

J'voudrais t'embêter encore une fois si cela ne t'ennui pas.
 
J'aurais voulu savoir comment on se sert de FULLTEXT et CONTAINS ?? J'suis totalement dépassé par les évènements... :(

mood
Publicité
Posté le 19-07-2005 à 22:29:00  profilanswer
 

n°1154618
Arjuna
Aircraft Ident.: F-MBSD
Posté le 20-07-2005 à 12:31:57  profilanswer
 

Ben je ne connais pas du tout MySQL. Avec SQL Server c'est tout bête, je pense qu'avec MySQL aussi. Mais dans tous les cas, c'est différent :spamafote:
 
Faudrait que les gens qui connaissent MySQL se décident à répondre aux questions de temps en temps... Y'a que des réponses sur des trucs basics, ou alors pour d'autres SGBD en ce moment, ça me saoule de laisser dans la merde quelqu'un qui a repris espoir alors que j'ai commencé à l'aider :/

n°1154647
AlphaZone
Posté le 20-07-2005 à 13:14:11  profilanswer
 

Je trouverais bien un jour ou l'autre.
 
Les requêtes SQL server sont pareils que celles de MySQL ?
Sinon, si ca t'ennui pas, montre-moi quelle requête tu aurais fait sous SQL Server ?
 
Je te remerci d'avance :)


Message édité par AlphaZone le 20-07-2005 à 13:15:35
n°1154718
Arjuna
Aircraft Ident.: F-MBSD
Posté le 20-07-2005 à 14:12:13  profilanswer
 

Nan, ça ne marche pas du tout pareil, bien que les fonctions soient les mêmes.
 
Deplus, avec SQL Server, les fonctions "CONTAINS" et "FREETEXT" ne sont pas pratiques à utiliser, car ne retourne pas de pondération. Il faut utiliser les fonction "CONTAINSTABLE" et "FREETEXTTABLE", qui sont utilisables comme des tables. Mais elles n'existent pas du tout sous MySQL.
 
Je pense que tu peux faire une recherche sur ces fonctions dans la doc de MySQL, tu devrais avoir des infos précises et des exemples

n°1154738
AlphaZone
Posté le 20-07-2005 à 14:20:00  profilanswer
 

Ok j'vais voir ca. Merci encore :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Rechercher dans une table

 

Sujets relatifs
wordwrap dans un <table>Problème espace table
rechercher dans un tableauVérifier l'existance d'une table
faire une copie d'une table de ma BD[jdbc] tester existence d'une table
Variable qui compte le nombre d'enregistrements d'une table [RESOLU][SQL/ACCESS] Rechercher si un nombre est dans une table
Rechercher les doublons dans une table?Rechercher un enregistrement dans une table avec VB6 (j'ai trouver)
Plus de sujets relatifs à : Rechercher dans une table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR