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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Champ recherche

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Champ recherche

n°1660997
sebinfo007
Posté le 20-12-2007 à 10:18:39  profilanswer
 

Bonjour à vous,
 
j'ai fait un script de recherche pour trouver dans une table une liste de personne en tapant le nom. ça fonctionne trés bien. Cependant j'aimerai étendre cette recherche à plusieurs tables. toute mes table ont la même structure :
 

Code :
  1. <?php
  2. //on définit la variable du formulaire de recherche
  3. error_reporting(0);
  4. $recherche = $_POST['nom_rechercher'];
  5. //si $recherche existe exécution du script
  6. if ($recherche){
  7. //on créer un tableau mots qui va contenir chaque mot saisi dans le champ recherche : un mot = un enregistrement du tableau
  8. //explode definit que chaque espace taper dans le champ recherche est un separateur  
  9. $mots = explode(" ",$recherche);
  10. //définition de la requête sql qui s'execute en boucle puisque id ne sera jamais null
  11. $sql = "SELECT * FROM `$bddy`
  12.         join `2008` on `2008`.id=`2007`.id
  13.         WHERE id IS NOT NULL";
  14. //on créer un boucle qui parcours le tableau mots et qui execute la requete pour chaque enregistrement du tableau
  15. for($i=0;$i < count($mots); $i++)
  16. {
  17. $mot = trim($mots[$i]);
  18. $sql .= " AND ( NOM LIKE '%$mot%')";
  19. }
  20. //éxecution de la requête
  21. $req = mysql_query($sql) or die ('Erreur SQL : '.mysql_error());
  22. echo "<h3>Resultat de la recherche</h3>"; ?>
  23. <form method="post" name="modif" action="modif.php">
  24. <?php
  25. //affichage des résultats  
  26. while ($data = mysql_fetch_array($req))
  27. {
  28. $Nom = $data['NOM'];
  29. $Prenom = $data['PRENOM'];
  30. $Numero = $data['NUMERO'];
  31. $id = $data['ID'];
  32. echo"";
  33. echo "<fieldset>";
  34. echo "Nom : $Nom<br/>
  35. Prénom : $Prenom<br/>
  36. Numéro : $Numero <br/>";
  37. echo '<input type="radio" name="selid"  value="', $Numero, '" />';
  38. echo"</fieldset> <br/>";
  39. }
  40. }
  41. ?>

mood
Publicité
Posté le 20-12-2007 à 10:18:39  profilanswer
 

n°1661028
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-12-2007 à 10:35:07  profilanswer
 

rien à faire dans la cat SQL c'est du php :/
 
c'est quoi bddy?

n°1661116
sebinfo007
Posté le 20-12-2007 à 11:20:21  profilanswer
 

c'est une syntaxe sql quand même je veux faire une jointure mais a chaque fois j'ai cette erreur : Erreur SQL : Column 'id' in where clause is ambiguous
 
bddy c'est l'année en cours que j'ai mis en variable pour que ça change automatiquement de bdd lors du changement d'année.

n°1661127
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-12-2007 à 11:30:53  profilanswer
 

je veux bien que ça soit du sql, mais y'a n'importe quoi dans ton php [:spamafote]
regarde:

Code :
  1. $sql = "SELECT * FROM `$bddy`
  2.         join `2008` on `2008`.id=`2007`.id
  3.         WHERE id IS NOT NULL";


j'imagine que bddy est remplacé par 2007 mais pourquoi as-tu encore du 2007 dans la requête à ce moment là?
 
Néanmoins le "ambiguous" tu peux aisement le corriger, il vient de ton where.
A cet endroit il faut que tu lui précises si "id is not null" s'applique à 2008.id ou 2007.id

n°1661181
sebinfo007
Posté le 20-12-2007 à 12:47:16  profilanswer
 

[Ah okey, merci ! donc j'ai fait ça :  
 

Code :
  1. //définition de la requête sql qui s'execute en boucle puisque id ne sera jamais null
  2. $sql = "SELECT * FROM `$bddy`
  3.         join `2008` on `2008`.id=`2007`.id
  4.         WHERE ";
  5. //on créer un boucle qui parcours le tableau mots et qui execute la requete pour chaque enregistrement du tableau
  6. for($i=0;$i < count($mots); $i++)
  7. {
  8. $mot = trim($mots[$i]);
  9. $sql .= " (`2007`.NOM LIKE '%$mot%')
  10. OR (`2008`.NOM LIKE '%$mot%')";
  11. }


 
mais la il ne parcours que la table 2008 :/
 
Alors que je lui précise que je veux qu'il regarde si le nom est dans 2007 OU 2008. Si tu vois mon erreur...
 
En tout cas merci beaucoup pour ton aide.
 
Sébastien

n°1661188
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-12-2007 à 13:14:18  profilanswer
 

remplace join par full outer join

n°1661225
sebinfo007
Posté le 20-12-2007 à 14:24:05  profilanswer
 

anapajari a écrit :

remplace join par full outer join


 
Lorsque je met full outer join, j'ai une erreur SQL, et j'ia éssayé left outer join, j'ai pas d'érreur mais ça ne donne rien :(

n°1662738
sebinfo007
Posté le 24-12-2007 à 09:56:19  profilanswer
 

personne n'a une idée pour faire une requete multi table ? :(


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

  Champ recherche

 

Sujets relatifs
algorithme:arbre binaire de rechercheRecherche pilote ODBC pour base de donnée POET
Recherche emulateur Fortran[SqlServer] Splitter un champ et rendre en 2 lignes
[MySql] Split d'un champ vers un autrerecherche multicritere dans un seul champ?
[PHP Mysql] Champ de recherche[SQLServer]recherche sur un champ date indépendante du format
Recherche d'un champ sur une base de données OracleFaire une recherche sur un champ avec une certaine tolérance
Plus de sujets relatifs à : Champ recherche


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