Extraire des données de mysql

Eléphanteau du PHP | 14 Messages

07 nov. 2005, 23:50

Bonjour ! J'ai fait un petit site avec une base de données consultables en ligne, le script pour entrer les données marche nickel, mais par contre celui pour les recherches...:(
En fait, j'ai un champ de texte (name), associé à une liste déroulante (choice), qui représente un champ, et dans mon script qui suit, je voudrais que ça affiche tous les enregistrements où le champ choice vaut name... mais évidemment ça marche pas...
  <?php
  $name=$_POST['name'];
  $choice=$_POST['choice']; 
   if ($choice ="Nom de joueur")
   {
  	$request="nplayer";
  	$sql="SELECT * FROM espions WHERE '$request'=".$name.";";
  }
  elseif($choice="Nom de plan&egrave;te")
  {
  	$request="nplanete";
	$sql="SELECT * FROM espions WHERE '$request'=".$name.";";
  }
  elseif($choice="Ally")
  {
  	$request="nally";;
	$sql="SELECT * FROM espions WHERE '$request'=".$name.";";
  }
  $result = mysql_query($sql, $connect);
  //définit la boucle : tant qu'il y a des messages dans la BDD
while($val=mysql_fetch_array($result))
{
    // Affiche le pseudo du joueur 
echo  '<font color=\"#ffffff\" face=\"verdana, arial\">Le joueur'.$val['nplayer'].'de la planète'.$val['nplanete'].'a sondé'.$val['name'].'le'.$val['date'].'.</font>';  
 }	
  ?>
Bon voilà est-ce que quelqu'un pourrait m'expliquer ce qui cloche dans ce code, et pourquoi je n'obtiens aucune sortie ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 nov. 2005, 00:15

Salut,tu t'enmèle un peu avec les requetes, par exemple la premiere:
$sql="SELECT * FROM espions WHERE '$request'=".$name.";"; 
devrai etre:
$sql="SELECT * FROM espions WHERE ".$request."=".$name.";";
sans les apostrophes tu aura certainement plus de chances.

Sinon il y a moyen plus rapide et facile pour faire ce que tu veut. Tu as une liste et je suppose que tu as un attribut value dans les balises <option> dans lesquels tu met "Nom de joueur", "Ally" .... donc tu peut mettre en value "nplayer", "nally" ce qui évitera tous ces tests que tu fait, tu aurai donc quelque chose comme ça:
$name=$_POST['name'];
$choice=$_POST['choice']; 
$sql="SELECT * FROM espions WHERE ".$request".=".$name;
$result = mysql_query($sql, $connect); 
...

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

08 nov. 2005, 23:35

Ben en remplaçant la requête SQL ça marche toujours pas, et pour les values, j'arrive pas à les rajouter avec Dreamweaver, et je connais pas la syntaxe pour les mettre directement dans le code...

ViPHP
ViPHP | 656 Messages

09 nov. 2005, 19:51

T'es vraiment sûr que la cellule contiendra name et seulement name? Elle ne risque pas de contenire autre chose avant ou après?

Si il contient par exemple "Salut name" ba ça marchera pas un WHERE... = name