UPDATE un champ : marche pas

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 : UPDATE un champ : marche pas

par ouckileou » 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

par dededick » 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

par ouckileou » 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...

par dededick » 26 juil. 2006, 10:09

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

par ouckileou » 26 juil. 2006, 10:03

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

UPDATE un champ : marche pas

par dededick » 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