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

  FORUM HardWare.fr
  Programmation
  PHP

  Moteur de recherche dans BD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Moteur de recherche dans BD

n°1382795
snp
quand on sait pas, on se tait
Posté le 07-06-2006 à 13:08:46  profilanswer
 

Bonjour,
 
je suis en cours de création d'un outil de recherche dans une base access. En surfant sur le net j'ai trouvé des infos mais mon truc n'est pas encore génial pour l'instant. ça marche mais je suis obligé de taper les mots exacts. Par exemple,  si je veux chercher l'entrée maison en tapant "mai" ou "*son" ou "*iso* il ne me trouve rien. Je pense que c un truc a faire avec LIKE mais j'y arrive pas...
Comment peux t'on aussi faire une recherche avec des "and" et des "or" par exemple : "maison and papa" ?
 
ATTENTION ! je débute....mais pouvez vous critiquer mon code ci-dessous pour le simplifier et voir ce qui ne va pas ?
Merci d'avance

Code :
  1. <?php
  2. $search=$_POST['search'];
  3. include '../../include/connexion_base.php';
  4. $result = odbc_exec($cnx, "SELECT * FROM devis WHERE date_creation='$search' OR designation='$search' OR
  5. client='$search' OR filiale='$search' OR etude='$search'
  6. OR descriptif='$search' OR keyword1='$search' OR keyword2='$search' ORDER BY num_devis" );
  7. echo '<table border>';
  8. echo "<tr><td>DEVIS</td><td>DATE</td><td>DESIGNATION</td><td>CLIENT</td><td>FILIALE</td><td>ETUDE
  9. </td><td>DESCRIPTIF</td></tr>";
  10. while ($donnees = odbc_fetch_array($result) )
  11. {
  12. echo "<tr>";
  13. echo "<td>".$donnees['num_devis']."</td>";
  14. echo "<td>".$donnees['date_creation']."</td>";
  15. echo "<td>".$donnees['designation']."</td>";
  16. echo "<td>".$donnees['client']."</td>";
  17. echo "<td>".$donnees['filiale']."</td>";
  18. echo "<td>".$donnees['etude']."</td>";
  19. echo "<td>".$donnees['descriptif']."</td>";
  20. echo "</tr>";
  21.   }
  22. odbc_close($cnx);
  23. ?>

mood
Publicité
Posté le 07-06-2006 à 13:08:46  profilanswer
 

n°1382799
snp
quand on sait pas, on se tait
Posté le 07-06-2006 à 13:11:41  profilanswer
 

ah oui au fait....mon champ "num_devis" est en auto_increment. comment je peux faire pour faire une recherche dessus ? apparemment mon code ne passe pas quand je le rajoute au WHERE (num_devis='$search' OR...)

n°1382805
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-06-2006 à 13:16:48  profilanswer
 

utilise plutot match against que des likes dans tous les sens ( surtout que la pattern est la même sur toutes les colonnes):
http://dev.mysql.com/doc/refman/5. [...] earch.html
 
Quand a ton num_devis, cela doit être un entier vu qu'il est en auto-increment, donc tu n'as pas besoin des quotes autour de search.
 
Un truc encore tu dois echapper les caractères particuliers qui sont dans ton $search.
 

n°1382818
snp
quand on sait pas, on se tait
Posté le 07-06-2006 à 13:36:38  profilanswer
 

Merci pour les infos, je modifie ça tout de suite !!
ça te semble pas trop délirant comme truc ?
 
Sinon, j'affiche mon fichier de traitement sur le bas de mon formulaire mais du coup à l'affichage de la page j'ai ça : Notice: Undefined index: search in formulaire_search_devis.php on line 48 (à savoir $search=$_POST['search'];)

n°1382825
snp
quand on sait pas, on se tait
Posté le 07-06-2006 à 13:42:25  profilanswer
 

anapajari a écrit :


Un truc encore tu dois echapper les caractères particuliers qui sont dans ton $search.


Qu'est ce que tu entends par là ?

n°1383418
snp
quand on sait pas, on se tait
Posté le 08-06-2006 à 09:05:12  profilanswer
 

le MATCH AGAINST, bah j'arrive pas a le faire fonctionner. idem pour ma valeur en auto_increment , que ce soit avec LIKE avec quotes ou sans. Du coup je fais avec ce code qui marche bof-bof (pas de recherche du style * + ):

Code :
  1. <?php
  2. include '../../include/connexion_base.php';
  3. $search=$_POST['search'];
  4. $result = odbc_exec($cnx, "SELECT * FROM devis WHERE date_creation='$search' OR designation='$search'
  5. OR client='$search' OR filiale='$search' OR etude='$search'
  6. OR descriptif='$search' OR keyword1='$search' OR keyword2='$search' " );
  7. //$result = odbc_exec($cnx, "SELECT * FROM devis WHERE  
  8. 'MATCH(date_creation,designation,client,filiale,etude,descriptif,keyword1,keyword2)
  9. AGAINST ($search)'" );
  10. echo '<table border>';
  11. echo "<tr><td><strong>DEVIS</strong></td><td><strong>DATE</strong></td><td><strong>DESIGNATION</strong></td>
  12. <td><strong>CLIENT</strong></td><td><strong>FILIALE</strong></td><td><strong>ETUDE</strong></td>
  13. <td><strong>DESCRIPTIF</strong></td></tr>";
  14. while ($donnees = odbc_fetch_array($result) )
  15. {
  16. echo "<tr>";
  17. echo "<td>".$donnees['num_devis']."</td>";
  18. echo "<td>".$donnees['date_creation']."</td>";
  19. echo "<td>".$donnees['designation']."</td>";
  20. echo "<td>".$donnees['client']."</td>";
  21. echo "<td>".$donnees['filiale']."</td>";
  22. echo "<td>".$donnees['etude']."</td>";
  23. echo "<td>".$donnees['descriptif']."</td>";
  24. echo "</tr>";
  25.   }
  26. odbc_close($cnx);
  27. ?>


Message édité par snp le 08-06-2006 à 09:07:54

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Moteur de recherche dans BD

 

Sujets relatifs
Moteur de recherche dans zipRecherche programmeur php, css et xhtml
mise en page texte de resultat de recherche propre[PHP] [URL Rewriting] Faire une recherche dans une DB ?
un engin de recherchemysql -> recherche plus rapide sur ID automatiquement ???
Créer un moteur de recherche ! 
Plus de sujets relatifs à : Moteur de recherche dans BD


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