Champ recherche

Champ recherche - SQL/NoSQL - Programmation

Marsh Posté le 20-12-2007 à 10:18:39    

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. ?>

Reply

Marsh Posté le 20-12-2007 à 10:18:39   

Reply

Marsh Posté le 20-12-2007 à 10:35:07    

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

Reply

Marsh Posté le 20-12-2007 à 11:20:21    

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.

Reply

Marsh Posté le 20-12-2007 à 11:30:53    

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

Reply

Marsh Posté le 20-12-2007 à 12:47:16    

[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

Reply

Marsh Posté le 20-12-2007 à 13:14:18    

remplace join par full outer join

Reply

Marsh Posté le 20-12-2007 à 14:24:05    

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 :(

Reply

Marsh Posté le 24-12-2007 à 09:56:19    

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

Reply

Sujets relatifs:

Leave a Replay

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