UPDATE un champ : marche pas

Eléphanteau du PHP | 26 Messages

26 juil. 2006, 09:35

Bonjour à tous, j'ai modifier mon code, et je me suis aperçu qu'il y avait un endroit ou cela plantait :

Je récupère mes variables et je me connecte :
<?
$pseudo = $_GET["pseudo"];

$gallions = $_GET["gallions"];

$envie = $_GET["envie"];

$humeur = $_GET["humeur"];

$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);


Je vérifie si ma variable est vide; puis, si elle ne l'ait pas, je modifie comme ceci :
$sql = 'UPDATE `siteweb` SET `gallions` = "'.$gallions.'" - 200, `bezoard` = "'.$_GET['bezoard'].'" + 1 WHERE `pseudo` = "'.$pseudo.'"';
// Si on arrive pas a effectuée les modification, afficher une erreur.
$req = mysql_query($sql) or die('ERREUR  !<br>'.$sql.'<br>'.mysql_error());
// Puis on redirectionne vers le magasin
header('location: inventaire.php');
Il me redirectionne au bon endroit, il m'enlève mes sous, mais il ne me rajoute pas un bezoard! Pourquoi? :)
Merci
Modifié en dernier par dededick le 25 août 2006, 13:23, modifié 1 fois.
Dededick...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 juil. 2006, 10:03

Regarde le SQL qui est exécuté
echo $sql;
C'est ce code qui est utile

Eléphanteau du PHP | 26 Messages

26 juil. 2006, 10:09

J'ai essayé mais ça m'affiche rien ... :?
Je pense que le problème vient du $_GET["machin"] :)
Dededick...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 juil. 2006, 10:12

$sql = 'UPDATE `siteweb` SET `gallions` = "'.$gallions.'" - 200, `bezoard` = "'.$_GET['bezoard'].'" + 1 WHERE `pseudo` = "'.$pseudo.'"'; 
echo $sql;
Ceci n'affiche rien ??? J'ai du mal à le croire, même si tu as un problème avec tes variables, il y a du texte statique dedans...

Eléphanteau du PHP | 26 Messages

26 juil. 2006, 10:16

Oups, oui en fait ça affiche :

Code : Tout sélectionner

UPDATE `siteweb` SET `gallions` = "4395" - 200, `bezoard` = "" + 1 WHERE `pseudo` = "dededick" Warning: Cannot modify header information - headers already sent by (output started at /mnt/128/sdc/6/3/poudlard2006/achatchampion.php:45) in /mnt/128/sdc/6/3/poudlard2006/achatchampion.php on line 48
donc c'est bien un problème avec bezoard = ""


EDIT : j'ai trouvé l'erreur, je l'aicorrigée :
$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"];
Merci
Dededick...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 juil. 2006, 10:33

Pour info :
- pour des nombres, pas besoin de guillemets
- tu peux utiliser directement la valeur de la colonne dans une requête, sans passer par une variable

Code : Tout sélectionner

UPDATE `siteweb` SET `gallions` = gallions - 200, `bezoard` = bezoard + 1 WHERE `pseudo` = "dededick"
Et sinon, toujours regarder le SQL généré quand une requête ne marche pas

Etapes à suivre pour débugger du SQL dans PHP : http://www.phpfrance.com/forums/voir_sujet-19378.php