Script inventaire qui bug

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Script inventaire qui bug

par @rthur » 13 juil. 2006, 21:57

ça peut être ce genre d'incohérence qui donne ton résultat inattendu.
+1

A chaque fois que tu fais une redirection via les header, ajoute une commande exit() ou die() derrière
...
  header('location: ...');
  die();
  ...
}

par goeb » 13 juil. 2006, 13:12

salut,
il y a un truc incohérent dans ton script :
while (... mysql_fetch_array ...) {
  ...
  header('location: ...');
  ...
}
ça veut dire que tu envoies plusieurs headers de location, alors que finalement un seul sera pris en compte !!
est-ce que tu as vraiment prévu que ce soit comme ça ?

ça peut être ce genre d'incohérence qui donne ton résultat inattendu.

Script inventaire qui bug

par dededick » 12 juil. 2006, 18:16

Bonsoir à tous, j'ai (encore) un script qui plante:
Voici le code:
<?php
session_start();
$base = mysql_connect("localhost", "******", "*******"); 
mysql_select_db("******", $base);
$sql = "SELECT * FROM siteweb WHERE pseudo='".$pseudo."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
$pseudo=$data['pseudo'];
$gallions=$data['gallions'];
$humeur=$data['humeur'];
$sante=$data['sante'];
$envie=$data['envie'];
$robes=$data['robes'];
$chat=$data['chat'];
$hibou=$data['hibou'];
$crapaud=$data['crapaud'];
$chaudron=$data['chaudron'];
$fiole=$data['fiole'];
$telescope=$data['telescope'];
$balance=$data['balance'];
$ensemble=$data['ensemble'];
$baguette=$data['baguette'];
$baguetteun=$data['baguetteun'];
$baguettedeux=$data['baguettedeux'];
$bierraubeure=$data['bierraubeure'];
$theun=$data['theun'];
$chocolat=$data['chocolat'];
$objet=$data['objet'];
$objetun=$data['objetun'];
$objetdeux=$data['objetdeux'];
$objettrois=$data['objettrois'];
$objetquatre=$data['objetquatre'];
$objetcinq=$data['objetcinq'];
$choco=$data['choco'];
$bulles=$data['bulles'];
$plume=$data['plume'];
$livres=$data['livres'];
$cafe=$data['cafe'];
$the=$data['the'];
$purfeu=$data['purfeu'];
$reponse = mysql_query("SELECT cafe FROM ****** WHERE pseudo='$pseudo'");
while ($donnees = mysql_fetch_array($reponse) ) 
{
?>
<?php
if ($donnees['cafe'] == "oui")
{
echo 'Vous avez déjà un café dans votre inventaire! Veuillez l\'utiliser avant d\'en acheter un autre.';
echo '<a href="*******.php"> Retour </a>';
}

// si la variable est vide
elseif ($_GET['cafe'] == "")
{
header('location: *******.php');
}
// si la variable vaut 1, il achète les livres
elseif ($_GET['cafe'] =="1")
{
// vérification de ses sous
if ($gallions - 5 < 0)
{
// si non, on redirige vers une erreur
header('erreur3.php');
}
else
{
$sql = 'UPDATE `********` SET `gallions` = "'.$gallions.'" - 5, `cafe` = "oui" WHERE `pseudo` = "'.$pseudo.'"' ;
$req = mysql_query($sql) or die('Une erreur est survenue, veuillez réssayer. !<br>'.$sql.'<br>'.mysql_error());
// Puis on redirige vers l'acceuil
header('location: arrivee.php');

echo ('Vous achetez un café, à bientôt sur poudlard');
}}}?>  
<?php
$reponseun = mysql_query("SELECT purfeu FROM ****** WHERE pseudo='$pseudo'");
while ($donneesun = mysql_fetch_array($reponseun) ) 
{
?>
<?php
if ($donneesun['purfeu'] == "oui")
{
echo 'Vous avez déjà un whisky pur feu dans votre inventaire, veuillez le boire avant de vous re-saouler.';
echo '<a href="*******.php"> Retour </a>';
}
elseif ($_GET['purfeu'] == "")
{
header('location: piedodu.php');
}
// si la variable vaut 2, il achète les livres
elseif ($_GET['purfeu'] =="2")
{
// vérification de ses sous
if ($gallions - 15 < 0)
{
// si non, on redirige vers une erreur
header('erreur3.php');
}
else
{
$sql = 'UPDATE `********` SET `gallions` = "'.$gallions.'" - 15, `purfeu`= "oui" WHERE `pseudo` = "'.$pseudo.'"' ;
$req = mysql_query($sql) or die('Une erreur est survenue, veuillez réssayer. !<br>'.$sql.'<br>'.mysql_error());
// Puis on redirige vers l'acceuil
header('location: arrivee.php');

echo ('Profitez bien de votre whisky, à bientôt sur poudlard');
}} } 
?>
<?php
$reponsedeux = mysql_query("SELECT the FROM ****** WHERE pseudo='$pseudo'");
while ($donneesdeux = mysql_fetch_array($reponsedeux) ) 
{
?>
<?php
if ($donneesdeux['the'] == "oui")
{
echo 'Vous avez déjà un thé dans votre inventaire, veuillez l\'utiliser.';
echo '<a href="********.php"> Retour </a>';
}
elseif ($_GET['the'] == "")
{
header('location: *********.php');
}
// si la variable vaut 1, il achète les livres
elseif ($_GET['the'] =="3")
{
// vérification de ses sous
if ($gallions - 3 < 0)
{
// si non, on redirige vers une erreur
header('erreur3.php');
}
else
{
$sql = 'UPDATE `********` SET `gallions` = "'.$gallions.'" - 3, `the`= "oui" WHERE `pseudo` = "'.$pseudo.'"' ;
$req = mysql_query($sql) or die('Une erreur est survenue, veuillez réssayer. !<br>'.$sql.'<br>'.mysql_error());
// Puis on redirige vers l'acceuil
header('location: *********.php');

echo ('Vous prenez votre tasse de thé, à bientôt sur poudlard');
}} } 
mysql_close(); 
?><br/>
<a href="arrivee.php"> Quitter le chemin de traverse </a>
Voilà, le problème est que, lorsque je fais un test, et que j'ai les trois objets, deux, ou un seul, il m'affiche:

Code : Tout sélectionner

Vous avez déjà un café dans votre inventaire! Veuillez l'utiliser avant d'en acheter un autre. Retour Vous avez déjà un whisky pur feu dans votre inventaire, veuillez le boire avant de vous re-saouler. Retour Vous avez déjà un thé dans votre inventaire, veuillez l'utiliser. Retour Quitter le chemin de traverse
Pourquoi? Merci :)