Pb script PHP

Pb script PHP - PHP - Programmation

Marsh Posté le 24-11-2008 à 18:51:17    

Bonjour,
 
je suis débutant en PHP et j'ai un petit pb concernant un script permettant d'afficher une liste d'artistes en fonction de la requête du visiteur. J'ai donc récupéré un bout de code ressemblant à ça :
 

Code :
  1. <?
  2. $liste = array("Abba", "Barbra Streisand", "Calogero", "Django Reinhardt", "Edith Piaf", "Fiona Apple", "Geri Halliwell", "Hugues Aufray", "Iggy Pop", "James Brown", "Kate Bush", "Leonard Cohen" ); //etc...
  3. $saisie = $_REQUEST['artistes'];
  4. if ($saisie != "" ) {
  5. echo "<ul>";
  6. foreach($liste as $artiste) {
  7.  if (substr($artiste,0,strlen($saisie)) == strtolower(stripslashes($saisie))) {
  8.   echo "<li>".($artiste)."</li>";
  9.  }
  10. }
  11. echo "</ul>";
  12. }
  13. ?>


 
Ainsi, lorsque l'internaute tape uniquement la letrre A dans mon formulaire, ça lui retourne automatiquement "Abba".
 
Jusqu'ici tout est OK mais les problèmes arrivent lorsque je tente de passer par ma base de données. J'ai adapté le code comme suis mais ça ne fonctionne pas :
 

Code :
  1. <?
  2. include("connection.inc.php" );
  3. $saisie = $_REQUEST['artistes'];
  4. if ($saisie != "" ) {
  5. echo "<ul>\n";
  6. $sql = "SELECT id, nom FROM artistes ORDER BY nom";
  7. $resultat = mysql_query($sql);
  8. while($tab = mysql_fetch_array ($resultat)) {
  9.  $artiste = $tab['nom'];
  10.  if (substr($artiste,0,strlen($saisie)) == strtolower(stripslashes($saisie))) {
  11.   echo "<li>".($artiste)."</li>\n";
  12.  }
  13. }
  14. echo "</ul>\n";
  15. }
  16. ?>


 
Si quelqu'un avait l'extrême amabilité de me dire où j'ai planté, je lui serait fort reconnaissant ;)
 
Merci d'avance.

Reply

Marsh Posté le 24-11-2008 à 18:51:17   

Reply

Marsh Posté le 24-11-2008 à 18:59:03    

plus propre que de recuperer tous les artiste , filtrer directement dans la requete sql

Code :
  1. $saisie = mysql_real_escape_string($_REQUEST['artistes'] ); //pour eviter qu'une requete bien construite n'explose ta base de données
  2. $sql = "SELECT id, nom FROM artistes WHERE nom LIKE '$saisie%' ORDER BY nom"; //LIKE 'pwet%' retourne les resultats qui commencent par pwet  , LIKE '%pwet' ceux qui terminent pas pwet, et '%pwet%' ceux qui contiennent pwet
  3. while($tab = mysql_fetch_array ($resultat)) {
  4. $artiste = $tab['nom'];
  5.     echo "<li>".($artiste)."</li>\n";
  6. }


---------------

Reply

Marsh Posté le 24-11-2008 à 19:10:30    

Ca marche !
 
effectivement c'est plus propre de filtrer au niveau de la base plutôt que l'imbroglio de manip' de chaînes de caractères.
 
Merci Flo  :)  :)  :)  

Reply

Sujets relatifs:

Leave a Replay

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