Problème de SELECT

Résolu/Fermé
valentin358 Messages postés 15 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 20 juillet 2010 - 6 mai 2009 à 02:31
valentin358 Messages postés 15 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 20 juillet 2010 - 6 mai 2009 à 17:47
Bonjour, j''ai un problème avec un code et je ne trouve pas l'erreur :
if(isset($_POST['outil']))
{
include("mysql_bdd.php");

$donnee1=mysql_query("SELECT * FROM magasin WHERE mag_designation='".$_POST['outil']."'");//on sélectionne les info de l'objet sélectionné.
$reponse1=mysql_fetch_array($donnee1);

$donnee2=mysql_query("SELECT * FROM marchandises WHERE march_pseudo='".$_SESSION['pseudo']."'");//On sélectionne les objets qu'a déja en sa possession l'acheteur
$reponse2=mysql_fetch_array($donnee2);
echo 'DEBUT <br />';
echo $_POST['outil'].'<br />';
echo $reponse2['march_designation'].'<br />';
	if(!isset($reponse2['march_designation']) OR !isset($_POST['outil']))
	{
	echo 'Une erreur c\'est produite. Veuillez contacter le webmasteur. <br />';
	}
	elseif($_POST['outil']=$reponse2['march_designation'])//on vérifié que l'acheteur ne possède pas cette objet
	{
	echo 'Vous possédez déjà cette objet : '.$reponse1['mag_designation'];
	}
	elseif($_POST['outil']!=$reponse2['march_designation'])//On enregistre les info de l'objet acheté dans la table "marchandise" avec le pseudo de l'acheteur
	{
	$donnee3=mysql_query("INSERT INTO marchandises VALUES ('','".$_SESSION['pseudo']."','".$reponse1['mag_designation']."','".$reponse1['mag_prix']."','".$reponse1['mag_type']."')");
	echo 'Vous venez d\'acheté un '.$reponse1['mag_designation'].' au prix de '.$reponse1['mag_prix'].'€';
	}
echo 'FIN <br />';
}
else
{
echo 'Vous devez choisir une marchandise.';
}


?>

Le problème c'est que j'ai l'impression que $reponse2['march_designation'] est vide car j'ai le message "Une erreur c'est produite. Veuillez contacter le webmasteur. <br />" qui s'affiche donc l'erreur vient surement du $donne2 et $reponse2 car l'echo $reponse2['march_designation'] n'affiche rien contrairement à l'echo $_$_POST['outil'].

4 réponses

BloodyAngel Messages postés 1479 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 401
6 mai 2009 à 04:28
Hello,
as-tu bien spécifié session_start(); au début de ton code ?
J'imagine que oui mais on sait jamais :o)
0
valentin358 Messages postés 15 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 20 juillet 2010 2
6 mai 2009 à 09:44
oui je l'es mis
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 mai 2009 à 09:51
voir commentaires:

if(isset($_POST['outil']))
{
include("mysql_bdd.php");

$donnee1=mysql_query("SELECT * FROM magasin WHERE mag_designation='".$_POST['outil']."'");//on sélectionne les info de l'objet sélectionné.
$reponse1=mysql_fetch_array($donnee1); //en opérant ainsi tu n'aura qu'une seule ligne de ta table, hors tu parles d'infos au pluriel ??

$donnee2=mysql_query("SELECT * FROM marchandises WHERE march_pseudo='".$_SESSION['pseudo']."'");//On sélectionne les objets qu'a déja en sa possession l'acheteur
$reponse2=mysql_fetch_array($donnee2); //en opérant ainsi tu n'aura qu'une seule ligne de ta table, hors tu parles d'objets au pluriel ??

//pour les deux remarques ci dessus il faut faire une boucle while pour le mysql_fetch_array

echo 'DEBUT <br />';
echo $_POST['outil'].'<br />';
echo $reponse2['march_designation'].'<br />';
	if(!isset($reponse2['march_designation']) OR !isset($_POST['outil']))
	//ce test n'est pas valable isset veut dire si la variable existe, pour détecter une errue de requette c'est pas bon
	//fais plutot if($donnee2)  si la requette marche pas c'est false
	{
	echo 'Une erreur c\'est produite. Veuillez contacter le webmasteur. <br />';
	}
	elseif($_POST['outil']=$reponse2['march_designation'])//on vérifié que l'acheteur ne possède pas cette objet
	{
	echo 'Vous possédez déjà cette objet : '.$reponse1['mag_designation'];
	}
	elseif($_POST['outil']!=$reponse2['march_designation'])//On enregistre les info de l'objet acheté dans la table "marchandise" avec le pseudo de l'acheteur
	{
	$donnee3=mysql_query("INSERT INTO marchandises VALUES ('','".$_SESSION['pseudo']."','".$reponse1['mag_designation']."','".$reponse1['mag_prix']."','".$reponse1['mag_type']."')");
	echo 'Vous venez d\'acheté un '.$reponse1['mag_designation'].' au prix de '.$reponse1['mag_prix'].'€';
	}
echo 'FIN <br />';
}
else
{
echo 'Vous devez choisir une marchandise.';
}


?>
0
valentin358 Messages postés 15 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 20 juillet 2010 2
6 mai 2009 à 17:47
J'ai réussi. J'ai rajouté une condition dans $donnee2 :
$donnee2=mysql_query("SELECT * FROM marchandises WHERE march_pseudo='".$_SESSION['pseudo']."' AND march_designation='".$_POST['outil']."'") or die('Erreur SQL !<br />'.$donnee2.'<br />'.mysql_error());//On sélectionne les objets qu'a déja en sa possession l'acheteur
$reponse2=mysql_fetch_array($donnee2);
0