Page 1 sur 1

Fonction Update

Posté : 21 juin 2007, 20:36
par Morph
Bonjour,
J'ai créé une table ou il y a une certaine valeur. (par exemple 20)
J'aimerai que lorsqu'une personne vient sur une de mes pages que à cette valeur soit ajouté +10.

Ce qui ferait que après passage de l'utilisateur la valeur soit à 30 (dans mon exemple)

Je pense qu'il faut que je procède avec la fonction update un peu comme cela:

Code : Tout sélectionner

mysql_query("Update test_tbl Set valeur ='+10' where login=$login ");
mais ce que j'écris est incorrecte... comment procéder? :oops:

Posté : 21 juin 2007, 22:26
par Cyrano
Tu y es presque, à deux erreurs près :
mysql_query("Update test_tbl Set valeur = valeur +10 where login='". $login ."'");
La seconde erreur est au niveau de ta variable $login qui est une chaine de caractère et donc doit être encadrée d'apostrophes. Avec une concaténation propre par dessus et ça devrait fonctionner tout seul.

Posté : 21 juin 2007, 23:15
par Morph
Merci beaucoup :D

Posté : 21 juin 2007, 23:45
par Morph
Désolé pour ce double post, j'étais heureux sur le coup mais... ça ne fonctionne toujours pas.
Ta réponse est bonne c'est très bien expliqué et ça fait plaisir :)
Je n'ai aucun message d'erreur mais ma table ne reçois aps +10 comme convenu.
Si je peux me permettre voici mon petit script, dites moi ce que vous en pensez, je suis débutant:
<?php
session_start();

// on se connecte à MySQL 
$db = mysql_connect('localhost', 'Morph', '00000'); 
 // on sélectionne la base 
mysql_select_db('phpdb',$db);
$sql = "select password, points from accounts where login='".$login."'";

if( session_is_registered('login') ) { // ou if( $_SESSION['login'] == true ){

mysql_query("Update accounts Set points = valeur +10 where login='". $login ."'"); 
// la variable de session nom est enregistrée
echo 'FELICITATION votre compte ' .$_SESSION['login'];
echo 'a ete solde de 10 points';


}
else{
// la variable n'est pas enregistrée, on renvoi sur le formulaire

echo 'Un probleme est survenu, veuillez contacter le webmaster'; 

} 

?>

Posté : 22 juin 2007, 06:15
par Cyrano
Normal : tu mets dans ta clause WHERE une variable qui n'est pas définie : $login != $_SESSION['login']

Donc, ton code corrigé :
<?php
session_start();

// on se connecte à MySQL
$db = mysql_connect('localhost', 'Morph', '00000');
// on sélectionne la base
mysql_select_db('phpdb',$db);
// ??? cette requête n'est jamais exécutée, à quoi sert-elle ?
$sql = "select password, points from accounts where login='". $_SESSION['login'] ."'";

if( isset($_SESSION['login']) )
{
    $sql2 = "Update accounts Set points = valeur +10 where login='". $_SESSION['login'] ."'";
    /* Affichage de débuggage */
    echo("<pre>\n");
    var_dump($sql2);
    echo("</pre>\n");
    /* Fin de débuggage */
    mysql_query($sql2);
    // la variable de session nom est enregistrée
    echo 'FELICITATION votre compte ' .$_SESSION['login'];
    echo 'a ete solde de 10 points';


}
else
{
    // la variable n'est pas enregistrée, on renvoi sur le formulaire

    echo 'Un probleme est survenu, veuillez contacter le webmaster';
}
?>

Posté : 22 juin 2007, 07:31
par sadeq
Oui, mais l'erreur fondamentale est dans la requête Update car le champ mis à jour s'appelle "points" mais pas "valeur"

Tu as écrit:
$sql2 = "Update accounts Set points = valeur +10 where login='". $_SESSION['login'] ."'";
Alors qu'il faut écrire:
$sql2 = "Update accounts Set points = points +10 where login='". $_SESSION['login'] ."'";

Posté : 22 juin 2007, 09:55
par Morph
Formidable, merci à vous 2.
Je comprend maintenant de mieux en mieux la fonction Update et les erreurs à ne plus faire :D

Je rencontre encore un petit défaut pas très génant mais à corriger car ma page affiche:
string(56) "Update accounts Set epk = epk +10 where login='Morph'"

FELICITATION votre compte Morph a ete solde de 10 points
J'aimerai bien que la ligne

Code : Tout sélectionner

string(56) "Update accounts Set epk = epk +10 where login='Morph'"
Ne s'affiche pas... :oops:

Posté : 22 juin 2007, 10:30
par Cyrano
Dans le code que je t'ai mis, les fonctions php ont des liens qui pointent vers la doc : clique sur var_dump() pour voir à quoi ça sert et tu comprendras qu'il faudrait la commenter pour ne plus rien afficher une fois cette phase de débuggage terminée.

Posté : 22 juin 2007, 10:38
par Morph
Merci pour tout.
[RESOLU]