PRoblème UPDATE

Eléphanteau du PHP | 26 Messages

19 juil. 2006, 10:28

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é :)
Dededick...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juil. 2006, 10:32

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 :)

Eléphanteau du PHP | 26 Messages

19 juil. 2006, 10:53

Il faut que je fasse un truc du genre
 $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
?
Modifié en dernier par dededick le 19 juil. 2006, 10:55, modifié 1 fois.
Dededick...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juil. 2006, 10:55

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 :)

Eléphanteau du PHP | 26 Messages

19 juil. 2006, 10:57

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 :(
Dededick...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 juil. 2006, 11:15

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 26 Messages

19 juil. 2006, 11:24

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(); 
?>
Dededick...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 juil. 2006, 11:46

Est-ce que tu sais qu'avec ce code, tu modifies TOUTES les lignes de ta table siteweb ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juil. 2006, 11:47

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 :)

Eléphanteau du PHP | 26 Messages

20 juil. 2006, 10:16

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 :?
Dededick...