Fonction Update

Morph
Invité n'ayant pas de compte PHPfrance

21 juin 2007, 20:36

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:

Mammouth du PHP | 19672 Messages

21 juin 2007, 22:26

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Morph
Invité n'ayant pas de compte PHPfrance

21 juin 2007, 23:15

Merci beaucoup :D

Morph
Invité n'ayant pas de compte PHPfrance

21 juin 2007, 23:45

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'; 

} 

?>

Mammouth du PHP | 19672 Messages

22 juin 2007, 06:15

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';
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

22 juin 2007, 07:31

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'] ."'";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Morph
Invité n'ayant pas de compte PHPfrance

22 juin 2007, 09:55

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:

Mammouth du PHP | 19672 Messages

22 juin 2007, 10:30

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

22 juin 2007, 10:38

Merci pour tout.
[RESOLU]