UPDATE : new problème

dededik
Invité n'ayant pas de compte PHPfrance

27 juil. 2006, 14:44

Hello à tous, j'ai un nouveau problème semblable à celui récemment posté.

Mon code précédent marchant, j'ai décidé de copier-coller le code sur les autres pages magasins, en modifiant juste ce qu'il fallait. Ce qui me donne :

achatchampion.php :
<?
// Récuperation des variables
// Le Pseudonyme
$pseudo = $_GET["pseudo"];
// L'Argent
$gallions = $_GET["gallions"];
// La faim
$envie = $_GET["envie"];
// L'Humeur
$humeur = $_GET["humeur"];
// La santé
$sante = $_GET["sante"];

$bezoard = $_GET["bezoard"];

$calmar = $_GET["calmar"];

$tronslqlg = $_GET["tronslqlg"];

$gnorky = $_GET["gnorky"];

$artefact = $_GET["artefact"];

// Connection a SQL
$base = mysql_connect("sql.free.fr", "****", "******"); 
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);
$bezoard = $data["bezoard"];

$calmar = $data["calmar"];

$tronslqlg = $data["tronslqlg"];

$gnorky = $data["gnorky"];

$artefact = $data["artefact"];
// Si la variable "Nourriture" est vide
if ($_GET['nourriture'] == "")
{
header('location: magasin_champion.php');
}
// Si la variable nourriture est a 1 (La Salade !)
if ($_GET['nourriture'] == "1")
{
// On verifie qu'il y a assez d'Argent pour acheté l'objet
if($gallions - 200 < 0)
{
// Si NON, on redirectionne vers la page d'erreur
header('location: inventaire.php');
}
else {
// Si OUI, on augmente les stats
$sql = 'UPDATE `siteweb` SET `gallions` = "'.$gallions.'" - 200, `bezoard` = "'.$data['bezoard'].'" + 1 WHERE `pseudo` = "'.$pseudo.'"';  

$req = mysql_query($sql) or die('ERREUR  !<br>'.$sql.'<br>'.mysql_error());
// Puis on redirectionne vers le magasin
header('location: inventaire.php');
}  }
// Deconnection de la BDD
mysql_close(); 
?>
Ce code marche

Alors que achatrobe par exemple :
<?
// Récuperation des variables
// Le Pseudonyme
$pseudo = $_GET["pseudo"];
// L'Argent
$gallions = $_GET["gallions"];
// La faim
$envie = $_GET["envie"];
// L'Humeur
$humeur = $_GET["humeur"];
// La santé
$sante = $_GET["sante"];

$robes = $_GET["robes"];

// Connection a SQL
$base = mysql_connect("sql.free.fr", "******", "*******"); 
mysql_select_db("******", $base);
$sql = "SELECT robes FROM siteweb WHERE pseudo = '".$pseudo."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
$robes = $data["robes"];
// Si la variable "Nourriture" est vide
if ($_GET['achat'] == "")
{
header('location: guipure.php');
}
// Si la variable nourriture est a 1 (La Salade !)
if ($_GET['achat'] == "1")
{
// Si OUI, on augmente les stats
$sql = 'UPDATE `siteweb` SET `gallions` = "'.$gallions.'" - 30, `robes` = "'.$data['robes'].'" + 1 WHERE `pseudo` = "'.$pseudo.'"';  
echo $sql;
$req = mysql_query($sql) or die('ERREUR  !<br>'.$sql.'<br>'.mysql_error());
// Puis on redirectionne vers le magasin
header('location: inventaire.php');
  
}
// Deconnection de la BDD
mysql_close(); 
?>


Ce code ne marche pas

A noter que :
J'ai fait des
echo $sql; 
, qui m'ont donné :

1- le bon code
2-

Code : Tout sélectionner

UPDATE `siteweb` SET `gallions` = "$gallions" - 30, `robes` = "" + 1 WHERE `pseudo` = "$pseudo" Warning: Cannot modify header information - headers already sent by (output started at /mnt/128/sdc/6/3/poudlard2006/achatrobe.php:33) in /mnt/128/sdc/6/3/poudlard2006/achatrobe.php on line 36
Pourquoi? :? Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 15:02

Salut,

1. Tu affiches la requête générée ($sql) et tu obtiens ceci ?!
UPDATE `siteweb` SET `gallions` = "$gallions" - 30, `robes` = "" + 1 WHERE `pseudo` = "$pseudo" 
avec des variables non traitées :?

2.
Le message d'erreur apparait à cause de l'echo... lorsque tu aura fini d'effectuer les tests d'affichage tu supprimes la ligne avec l'echo et tu ne devrais plus avoir de message.

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

Eléphanteau du PHP | 26 Messages

27 juil. 2006, 15:06

Nouveau code :
<?
// Récuperation des variables
// Le Pseudonyme
$pseudo = $_GET["pseudo"];
// L'Argent
$gallions = $_GET["gallions"];
// La faim
$envie = $_GET["envie"];
// L'Humeur
$humeur = $_GET["humeur"];
// La santé
$sante = $_GET["sante"];

$robes = $_GET["robes"];

// Connection a SQL
$base = mysql_connect("sql.free.fr", "******", "****"); 
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);
$robes = $data["robes"];
$gallions = $data["gallions"];
$pseudo = $data["pseudo"];
// Si la variable "Nourriture" est vide
if ($_GET['nourriture'] == "")
{
header('location: guipure.php');
}
// Si la variable nourriture est a 1 (La Salade !)
if ($_GET['nourriture'] == "1" AND $gallions - 30 > 0)
{
// On verifie qu'il y a assez d'Argent pour acheté l'objet
// Si OUI, on augmente les stats
$sql = 'UPDATE `siteweb` SET `gallions` = "'.$gallions.'" - 30, `robes` = "'.$robes.'" + 1 WHERE `pseudo` = "'.$pseudo.'"';  
echo $sql;
$req = mysql_query($sql) or die('ERREUR  !<br>'.$sql.'<br>'.mysql_error());
// Puis on redirectionne vers le magasin
header('location: inventaire.php');
}
 else
{
echo " Vous n'avez pas assez d'argent!";
 }
?>
<?php
mysql_close ();
?>
"Vous n'avez pas assez d'argent "

Il me reconnait pas les gallions pseudo et robes... pourtant je les récupèrent!
Dededick...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 15:13

affiche le contenu de $_GET avec:
<pre>
<?php
print_r($_GET);
?>
</pre>

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

Eléphanteau du PHP | 26 Messages

27 juil. 2006, 15:15

Code : Tout sélectionner

Array ( [pseudo] => $pseudo [gallions] => $gallions [envie] => $envie [humeur] => $humeur [sante] => $sante [robes] => $robes [nourriture] => 1 )
A prioris il m'a rien récupéré :?
Dededick...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 15:17

oh oui il récupère bien quelque chose... c'est bien ce que tu souhaites ?

avec des "$" ?

à la place de "pseudo" il ne devrait pas y avoir quelque chose du style "dededick" (un pseudo quoi) au lieu de "$pseudo"

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

Eléphanteau du PHP | 26 Messages

27 juil. 2006, 15:19

Ben si justement, c'est bien ça qui m'inquiète!
Dededick...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 15:26

bon et bien comment passes tu ces données vers cette page ?

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

Eléphanteau du PHP | 26 Messages

27 juil. 2006, 15:29

Dans la page ou on choisit les achats, il y a :
<input name="pseudo" type="hidden" value="$pseudo">
<input name="gallions" type="hidden" value="$gallions">
<input name="envie" type="hidden" value="$envie">
	<input name="humeur" type="hidden" value="$humeur">
	<input name="sante" type="hidden" value="$sante">
	<input name="robes" type="hidden" value="$robes">
Et tout en haut de la page j'ai :
<?php
$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'];
...
?>
Dededick...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 15:34

$pseudo c'est une variable PHP... Ok

Et cette ligne du PHP ou HTML ?
<input name="pseudo" type="hidden" value="$pseudo">
regarde le contenu de "value"

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

Eléphanteau du PHP | 26 Messages

27 juil. 2006, 15:36

C'est du php

je fais
echo '

...
<input name="pseudo" type="hidden" value="$pseudo"> 
';
Dededick...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 15:39

Comme quoi il faut toujours montrer un code assez complet sans pour autant inonder avec 300 lignes...

effectue ce test:
$variable = "test";

echo "ceci est un ".$test;
echo "ceci est un $test";
echo 'ceci est un $test';
analyse le retour (les affichages), surtout les ouvertures de chaine de caractère.

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

Eléphanteau du PHP | 26 Messages

27 juil. 2006, 15:41

ceci est un ceci est un ceci est un $test
Dededick...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 15:44

Bon et maintenant tu me donnes ton numéro de carte bancaire :roll:
Elle est où l'analyse ?

encore une fois:
$variable = "test"; 
echo "ceci est un <b>".$variable ."</b><br>";
echo "ceci est un <b>$variable </b><br>";
echo 'ceci est un <b>$variable </b><br>';
tu comprendra plus. :wink:

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

Eléphanteau du PHP | 26 Messages

27 juil. 2006, 15:50

ceci est un 
ceci est un 
ceci est un $test
Bon heu a prioris en gros, faut que je fasse :

$_GET["gallions"] = $gallions

non? :cry:

j'ai pas de carte bancaire :!:
Dededick...