Page 1 sur 1

PRoblème UPDATE

Posté : 19 juil. 2006, 10:28
par dededick
Re-bonjour à tous, voici mon (nouveau) problème :
J'ai une page inventaire. Elle affiche un bouton utiliser, si on a l''objet, sinon rien. J'ai deux cafés :D le bouton s'affiche. Il m'affiche correctement que j'ai utilisé mon objet, mais il ne se passe rien pourquoi?
Voici mon 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=$_POST['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'];
$sql = 'UPDATE siteweb SET `humeur` = humeur + 3,
`sante` = sante - 2,
`cafe` = cafe - 1 WHERE pseudo = "'.$_POST['pseudo'].'"';
echo 'Vous avez utiliser votre objet';
echo '<br/>';
echo '<a href="inventaire.php"> Votre inventaire </a>';
mysql_close(); 
?>
NOrmalement, il doit modifier la table siteweb, les champs humeur, sante et cafe. Cafe st le nombre de café d'où le - 1 à côté :)

Posté : 19 juil. 2006, 10:32
par Ryle
Peut être faudrait il exécuter la requête ? ;)

Ps : il risque de te manquer une apostrophe autour du pseudo

Edit : bon ben non, il te manque pas d'apostrophe, j'ai mal vu, mais quelle idée aussi de mettre des guillemets pour délimiter une chaine de caractères... c'est bien du mysql ça :)

Posté : 19 juil. 2006, 10:53
par dededick
Il faut que je fasse un truc du genre
 $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
?

Posté : 19 juil. 2006, 10:55
par Ryle
Yep, comme tu l'as fait pour le select, sinon pour php ça reste qu'une chaine de caractère et il a aucune raison d'aller la jouer dans mysql pour mettre à jour ta base :)

Posté : 19 juil. 2006, 10:57
par dededick
voici mon nouveau code :
<?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=$_POST['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']; 
$sql = 'UPDATE siteweb SET `humeur` = humeur + 3, 
`sante` = sante - 2, 
`cafe` = cafe - 1 WHERE pseudo = "'.$_POST['pseudo'].'"'; 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
echo 'Vous avez utiliser votre objet'; 
echo '<br/>'; 
echo '<a href="inventaire.php"> Votre inventaire </a>'; 
mysql_close(); 
?> 
Même problème :(

Posté : 19 juil. 2006, 11:15
par zeus
Essaye d'afficher cette requete, de remplacer UPDATE ... WHERE par SELECT ... WHERE et regarde s'il te sélectionne quelquechose.

J'ai dans l'idée qu'il ne sélectionne (donc ne modifie) aucune lignes ;)

De plus, c'est une très mauvaise idée de chercher un membre en fonction de son login.
1/ c'est moins performant qu'une recherche sur un ID
2/ beaucoup plus de risques qu'il y ait des erreurs dans un champs saisi par un utilisateur

Posté : 19 juil. 2006, 11:24
par dededick
EDIT : ça marche! pour ceux qu ça intéresse, voici le code final :
<?
// Connection a SQL


$base = mysql_connect("localhost", "***", "****"); 
mysql_select_db("*******", $base);
$pseudo = $_POST['pseudo'];


//Modification de la santé


$sql = 'UPDATE siteweb SET `humeur` = humeur + 3,
`sante` = sante - 2,
`cafe`= cafe - 1';


echo "blabla<br />";


$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// Deconnection de la BDD


mysql_close(); 
?>

Posté : 19 juil. 2006, 11:46
par zeus
Est-ce que tu sais qu'avec ce code, tu modifies TOUTES les lignes de ta table siteweb ?

Posté : 19 juil. 2006, 11:47
par Ryle
Ca marche sans doute, mais fais attention, sans un "WHERE" pour spécifier les enregistrements concernés, cette requête met à jour toutes les lignes que tu as dans ta table, et je ne suis pas certain que ce soit le résultat que tu attendes :)

Posté : 20 juil. 2006, 10:16
par dededick
Erf! avec un where ça marche plus:
<?
// Connection a SQL


$base = mysql_connect("localhost", "******", "******"); 
mysql_select_db("*******", $base);
$pseudo=$_POST['pseudo'];



$sql = 'UPDATE siteweb SET `humeur` = humeur + 5,
`sante` = sante - 3,
`crapaud`= crapaud - 1 WHERE pseudo = "'.$_POST['pseudo'].'"';


echo "Objet utilisé<br />";
echo '<a href="*******.php"> Votre inventaire </a>';

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// Deconnection de la BDD


mysql_close(); 
?>
Il m'affiche le bon truc, mais quand je reviens dans l'inventaire, ben j'ai toujours un crapaud :?