[PHP] Addition de points avec MySQL problème
Résolu
TLLwebtv
Messages postés
59
Date d'inscription
Statut
Membre
Dernière intervention
-
TLLwebtv Messages postés 59 Date d'inscription Statut Membre Dernière intervention -
TLLwebtv Messages postés 59 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train de monter un site internet de jeu avec des points, j'ai créer dans ma base de donnée une variable "points" qui est à 0 par défaut puisque l'on commence par 0 lors de la création du compte. Lorsque l'on gagne à un jeu on est redirigé vers une page avec ce code qui est sensé ajouter 0.05 point au compte de l'utilisateur :
En ce qui concerne la connexion à la base un code PHP s'en occupe un peu plus haut.
Je ne comprend pas ce qui se passe; quand je vais sur la page les points ne sont pas ajoutés.
Pouvez-vous m'aider ?
merci d'avance
Cordialement
Sylvain
Je suis en train de monter un site internet de jeu avec des points, j'ai créer dans ma base de donnée une variable "points" qui est à 0 par défaut puisque l'on commence par 0 lors de la création du compte. Lorsque l'on gagne à un jeu on est redirigé vers une page avec ce code qui est sensé ajouter 0.05 point au compte de l'utilisateur :
$pointfin = $points+0.05; mysql_query("UPDATE membres SET points='. $pointfin .' WHERE id='$id'") or die ('Erreur : '.mysql_error()); echo'<br>Vous avez '. $pointfin .' point';
En ce qui concerne la connexion à la base un code PHP s'en occupe un peu plus haut.
Je ne comprend pas ce qui se passe; quand je vais sur la page les points ne sont pas ajoutés.
Pouvez-vous m'aider ?
merci d'avance
Cordialement
Sylvain
A voir également:
- [PHP] Addition de points avec MySQL problème
- Addition excel - Guide
- Créer une carte avec des points - Guide
- Comment insérer des points de suite sur word - Guide
- Easy php - Télécharger - Divers Web & Internet
- Bash addition ✓ - Forum Shell
32 réponses
Enfin ta preuve je veux bien^^ sauf qu'il faut être connecté^^ Mais je te fais confiance.
Pas grave on va tenter autre chose. Si tu fais :
mysql_query("UPDATE membres SET points = '3' WHERE id='$id'") or die ('Erreur : '.mysql_error());
Est-ce que ça marche ? (est ce que les points sont à 3 ?
Si oui : essaye de faire ça :
Et si non : essaye ça :
mysql_query("UPDATE membres SET points = 3 WHERE id='$id'") or die ('Erreur : '.mysql_error());
Pas grave on va tenter autre chose. Si tu fais :
mysql_query("UPDATE membres SET points = '3' WHERE id='$id'") or die ('Erreur : '.mysql_error());
Est-ce que ça marche ? (est ce que les points sont à 3 ?
Si oui : essaye de faire ça :
<?php session_start(); // Aller chercher les configurations My SQL et verifier l'identite de la personne connectée require_once('config.php'); require_once('verifications.php'); // Récupération du nombre de points $sql = mysql_query("SELECT points FROM nom_de_ta_table WHERE id='$id'"); $result = mysql_fetch_array($sql) or die(mysql_error()); $points = $result[0]; echo "avant chgmt, l'id $id avait $points points<br/>"; // Calcul des points $pointfin = $points+0.05; echo "normalement après l'update il devrait avoir $pointfin points<br/>"; // Operation mysql_query("UPDATE membres SET points='". $pointfin ."' WHERE id='$id'") or die ('Erreur : '.mysql_error()); // Rappel le nombre de points echo'<br/>Vous avez '. $pointfin .' points'; ?>
Et si non : essaye ça :
mysql_query("UPDATE membres SET points = 3 WHERE id='$id'") or die ('Erreur : '.mysql_error());
Bonjour.
Concernant ton problème d'UPDATE, je pense que ton soucis se situe au niveau des guillemets. Essaye ça pour voir :
D'autre part j'ai repéré 2 erreurs sur ta dernière ligne :
En espérant avoir de tes nouvelles
Sylvain
Concernant ton problème d'UPDATE, je pense que ton soucis se situe au niveau des guillemets. Essaye ça pour voir :
mysql_query("UPDATE membres SET points='". $pointfin ."' WHERE id='$id'") or die ('Erreur : '.mysql_error());ou carrément :
mysql_query("UPDATE membres SET points='$pointfin' WHERE id='$id'") or die ('Erreur : '.mysql_error());
D'autre part j'ai repéré 2 erreurs sur ta dernière ligne :
echo'<br/>Vous avez '. $pointfin .' points';
En espérant avoir de tes nouvelles
Sylvain
Re-Bonjour,
J'ai essayé et ça ne marche pas, je vais donc expliquer un peut plus en détail ce que je fais : il s'agit d'un site de jeux où lorsque la personne a gagné elle est redirigée vers la page "gain.php" ou il est écrit :
<?php
session_start();
// Aller chercher les configurations My SQL et verifier l'identite de la personne connectée
require_once('config.php');
require_once('verifications.php');
// Calcul des points
$pointfin = $points+0.05;
// Operation
mysql_query("UPDATE membres SET points='". $pointfin ."' WHERE id='$id'") or die ('Erreur : '.mysql_error());
// Rappel le nombre de points
echo'<br/>Vous avez '. $pointfin .' points';
?>
Le but est donc qu'en voyant cette page l'utilisateur puisse gagner 0.05 points.
Merci d'avance
Cordialement
J'ai essayé et ça ne marche pas, je vais donc expliquer un peut plus en détail ce que je fais : il s'agit d'un site de jeux où lorsque la personne a gagné elle est redirigée vers la page "gain.php" ou il est écrit :
<?php
session_start();
// Aller chercher les configurations My SQL et verifier l'identite de la personne connectée
require_once('config.php');
require_once('verifications.php');
// Calcul des points
$pointfin = $points+0.05;
// Operation
mysql_query("UPDATE membres SET points='". $pointfin ."' WHERE id='$id'") or die ('Erreur : '.mysql_error());
// Rappel le nombre de points
echo'<br/>Vous avez '. $pointfin .' points';
?>
Le but est donc qu'en voyant cette page l'utilisateur puisse gagner 0.05 points.
Merci d'avance
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Et tu ne veux pas mettre ton code de verifications.php (voir même de config.php mais je ne pense pas qu'il y ai de problème ici) notamment comment tu récupères ta valeur $points, parce que ce script là ne présente pas de soucis à priori
PS. Répondre un dimanche matin à 6h06 !!!!!! Rassure moi tu n'habites pas en France (décalage horaire toussa) ou alors tu n'as pas dormis de la nuit ????
PS. Répondre un dimanche matin à 6h06 !!!!!! Rassure moi tu n'habites pas en France (décalage horaire toussa) ou alors tu n'as pas dormis de la nuit ????
Bonjour,
j'habite la France mais je me réveille toujours très tot :-).
Verifiacation.php
Vérification est un script qui existe déjà, ce n'est pas moi qui l'ai écrit.
Et le fichier config.php :
Voilà tout, est-ce que le problème pourrait venir de la base de donnée ?
merci d'avance
Très cordialement
Sylvain
j'habite la France mais je me réveille toujours très tot :-).
Verifiacation.php
<?php session_start(); require_once('config.php'); $titre_page='Inscription'; include_once('haut.php'); $email=formulaires($_POST['email']); $pseudo=formulaires($_POST['pseudo']); $parrain=formulaires($_POST['parrain']); $mdp=formulaires($_POST['mdp']); $mdp2=formulaires($_POST['mdp2']); $points=formulaires($_POST['points']); $gra1=formulaires($_POST['gra1']); $gra2=formulaires($_POST['gra2']); $gra3=formulaires($_POST['gra3']); $gra4=formulaires($_POST['gra4']); //// VERIFICATIONS //// if(!$mdp || !$mdp2 || strlen($mdp) < 5) { echo'Votre mot de passe ou sa confirmation est inexisant ou votre mot de passe fait moins de 5 carractères<br /><a href="inscription.php" onClick="history.back()">Retour</a>'; include_once('bas.php'); return FALSE; } if($mdp!=$mdp2) { echo'Votre mot de passe n\'est pas le meme que sa confirmation<br /><a href="inscription.php" onClick="history.back()">Retour</a>'; include_once('bas.php'); return FALSE; } if(!$pseudo || strlen($pseudo) > 15) { echo'Votre pseudo est inexisant ou fait plus de 15 carractères<br /><a href="inscription.php" onClick="history.back()">Retour</a>'; include_once('bas.php'); return FALSE; } if(!$email) { echo'Votre e-mail est innexistant.<br /><a href="inscription.php" onClick="history.back()">Retour</a>'; include_once('bas.php'); return FALSE; } //// VERIFICATIONS DES EXISTANCES //// $reponse_mail=mysql_query("SELECT email FROM membres WHERE email='$email'") or die ('Erreur : '.mysql_error()); //verification si e-mail existe déjà $count_mail=mysql_num_rows($reponse_mail); if($count_mail == 1) { echo'Cet e-mail existe déjà.<br /><a href="inscription.php" onClick="history.back()">Retour</a>'; include_once('bas.php'); return FALSE; } $reponse_pseudo=mysql_query("SELECT pseudo FROM membres WHERE pseudo='$pseudo'") or die ('Erreur : '.mysql_error()); //verification si pseudo existe déjà $count_pseudo=mysql_num_rows($reponse_pseudo); if($count_pseudo == 1) { echo 'Ce pseudo existe déjà.<br /><a href="inscription.php" onClick="history.back()">Retour</a>'; include_once('bas.php'); return FALSE; } for ($ligne=0;$ligne<30;$ligne++) //Création d'un identifiant { @$session.=substr('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN',(rand()%(strlen('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN'))),1); } $mdp=md5($mdp); //Codage du mot de passe mysql_query("INSERT INTO membres VALUES ('', '$session', '$pseudo', '$parrain', '$mdp', '$email', '$points')") or die ('Erreur : '.mysql_error()); //insertion dans la bdd echo'Merci de vous vous etre inscrit à '.$nom_du_site.'<br /><a href="index.php">Identifiez vous !</a>'; include_once('bas.php'); ?>
Vérification est un script qui existe déjà, ce n'est pas moi qui l'ai écrit.
Et le fichier config.php :
<?php $serveur='localhost'; $user='****'; $mdp='***'; $base='****'; $nom_du_site='KDO Plus'; //Le nom de votre site $votre_email='***@wanadoo.fr'; //Votre e-mail $localite='local'; //Les meta tags (référencement) $meta_description='Jouez et grattez'; $meta_mots_cles='grattages'; @$connect=mysql_connect($serveur, $user, $mdp) or die ('Erreur : '.mysql_error()); @mysql_select_db($base) or die ('Erreur : '.mysql_error()); require_once('fonctions.php'); ?>
Voilà tout, est-ce que le problème pourrait venir de la base de donnée ?
merci d'avance
Très cordialement
Sylvain
Oui c'est bien beau tout ça... A priori je n'ai pas vu d'erreurs.
Mais ça ne me dis pas comment tu récupères ton $points. Je ne vois pas d'autres possibilité pour l'instant mais bon je passe peut être à coté de quelque chose d'autre.
Et la structure de ta base de donnée elle donne quoi ?
Au fait, carractère ne prend qu'un R et innexistant un seul N ;)
PS. Je veux bien, moi aussi ça m'arrive de me lever tôt mais de là à être sur CCM à 6H un dimanche matin !!! :waou:
Mais ça ne me dis pas comment tu récupères ton $points. Je ne vois pas d'autres possibilité pour l'instant mais bon je passe peut être à coté de quelque chose d'autre.
Et la structure de ta base de donnée elle donne quoi ?
Au fait, carractère ne prend qu'un R et innexistant un seul N ;)
PS. Je veux bien, moi aussi ça m'arrive de me lever tôt mais de là à être sur CCM à 6H un dimanche matin !!! :waou:
Bonjour,
En ce qui concerne la base de donnée voici comment elle est :
Champ Type Interclassement Attributs Null Défaut
points int(10) UNSIGNED Non 0
Je pense que le problème vient de là: je ne récupère pas $points parce que je vous ai donné en terme de page PHP où il pourrait y avoir une erreur.
Comment faudrait-il faire pour récupérer $points alors ?
Merci d'avance
Cordialement
Sylvain
En ce qui concerne la base de donnée voici comment elle est :
Champ Type Interclassement Attributs Null Défaut
points int(10) UNSIGNED Non 0
Je pense que le problème vient de là: je ne récupère pas $points parce que je vous ai donné en terme de page PHP où il pourrait y avoir une erreur.
Comment faudrait-il faire pour récupérer $points alors ?
Merci d'avance
Cordialement
Sylvain
Ben c'est sûr que si tu ne récupères pas les valeurs de tes points dans ta base de données tu auras du mal à l'incrémenter...
Tu peux tout simplement faire un "SELECT points FROM nom_de_ta_table WHERE id=$id";
Ca te donnerait :
M'enfin bon ça tu aurais pu le trouver tout seul non ?
PS. 5h56 de plus en plus tôt.......
Tu peux tout simplement faire un "SELECT points FROM nom_de_ta_table WHERE id=$id";
Ca te donnerait :
<?php session_start(); // Aller chercher les configurations My SQL et verifier l'identite de la personne connectée require_once('config.php'); require_once('verifications.php'); // Récupération du nombre de points $sql = mysql_query("SELECT points FROM nom_de_ta_table WHERE id='$id'"); $result = mysql_fetch_array($sql) or die(mysql_error()); $points = $result[0]; // Calcul des points $pointfin = $points+0.05; // Operation mysql_query("UPDATE membres SET points='". $pointfin ."' WHERE id='$id'") or die ('Erreur : '.mysql_error()); // Rappel le nombre de points echo'<br/>Vous avez '. $pointfin .' points'; ?>
M'enfin bon ça tu aurais pu le trouver tout seul non ?
PS. 5h56 de plus en plus tôt.......
Re-bonjour,
Tout d'abord merci pour continuer à m'aider au fur et à mesure.
J'ai essayé de placer ce code dans la page "gain.php" mais rien ne change, quand j'y vais dessus mes points n'augmentent pas :-(. Je vais appeler le service technique de mon hébergeur, ils pourront peut-être m'aider.
Je vous tiens au courant dans environ 2 h.
Encore merci
Cordialement
Sylvain
Tout d'abord merci pour continuer à m'aider au fur et à mesure.
J'ai essayé de placer ce code dans la page "gain.php" mais rien ne change, quand j'y vais dessus mes points n'augmentent pas :-(. Je vais appeler le service technique de mon hébergeur, ils pourront peut-être m'aider.
Je vous tiens au courant dans environ 2 h.
Encore merci
Cordialement
Sylvain
L'hébergeur est fermé (ce qui est assez rare lors des jours fériés) par contre je pense que le problème vient de la base.
Je me demandais si tu avais quelque part renseigné la valeur de $id ?
Parce que si ta page ne contient QUE le code si dessus ça ne peut pas marcher sans que tu donnes une valeur à ton $id.
Parce que si ta page ne contient QUE le code si dessus ça ne peut pas marcher sans que tu donnes une valeur à ton $id.
La valeur ID est contenue dans la base de donnée MySQL.
J'ai remarqué quelque chose dans votre code : $result[0], pourquoi 0 ?
Je pensais à quelque chose également : est-ce que le problème ne pourrait pas venir de la configuration de la valeur points dans la base de donnée ? Est-ce que "INT" correspond à ce qu'il me faut ?
Merci d'avance
Cordialement
J'ai remarqué quelque chose dans votre code : $result[0], pourquoi 0 ?
Je pensais à quelque chose également : est-ce que le problème ne pourrait pas venir de la configuration de la valeur points dans la base de donnée ? Est-ce que "INT" correspond à ce qu'il me faut ?
Merci d'avance
Cordialement
INT correspond bien à ce qu'il te faut (tu sais on peut se tutoyer c'est quand même plus convivial ;) ) étant donné que tu utilises des chiffres.
Le result[0] correspond à la première donnée du tableau dans lequel j'ai mis les résultats de ma requête sql ($result = mysql_fetch_array($sql)). Il est vrai qu'au début ça surprend mais je t'assures que tableau[0] correspond bien à la première donnée.
Maintenant passons à ton ID. Je veux bien que cet ID soit contenu dans la base MySQL. Encore faut-il que tu en informe ton script php. Et pour ce faire il faudrait que tu m'indiques comment tu sais quel est l'utilisateur qui arrive à cette page gain.php ?
Je veux dire par là : quelle donnée te permet de savoir que c'est l'utilisateur ayant l'ID 23 et non celui ayant l'ID 69 qui est présent sur ta page et donc que c'est à lui que tu dois ajouter 0,5 points.
Le result[0] correspond à la première donnée du tableau dans lequel j'ai mis les résultats de ma requête sql ($result = mysql_fetch_array($sql)). Il est vrai qu'au début ça surprend mais je t'assures que tableau[0] correspond bien à la première donnée.
Maintenant passons à ton ID. Je veux bien que cet ID soit contenu dans la base MySQL. Encore faut-il que tu en informe ton script php. Et pour ce faire il faudrait que tu m'indiques comment tu sais quel est l'utilisateur qui arrive à cette page gain.php ?
Je veux dire par là : quelle donnée te permet de savoir que c'est l'utilisateur ayant l'ID 23 et non celui ayant l'ID 69 qui est présent sur ta page et donc que c'est à lui que tu dois ajouter 0,5 points.
C'est une très bonne remarque; le problème vient, à mon avis, de là. Pourtant $id correspond bien à l'ID de la personne qui est connecté. Donc $id ne devrait pas poser de problème. Par exemple quand j'afficher $pseudo ça m'affiche bien mon pseudo et pourtant il y en a plusieurs.
Cordialement
Sylvain
Cordialement
Sylvain
J'ai essayé et effectivement ça m'affiche mon ID (c'est à dire 3). Il reconnait donc bien l'ID de la personne.
Cordialement
Sylvain
echo'<br/>Vous avez '. $pointfin .' points. Votre ID est '. $id . '';
Cordialement
Sylvain
J'ai essayé le premier code et rien ne changeait par contre dans le deuxième le nombre de point passait bien à 3 ! Je vais essayer de réfléchir à comment modifier cette ligne.
Cordialement
Sylvain
Cordialement
Sylvain
Oui en fait c'est tout con mais j'y ai pensé que avant d'envoyer le dernier message : vu que tes points sont des chiffres (INT) tu ne dois pas mettre de guillemets sinon ce n'est pas considéré comme un INT et donc pas mis à jour.
Et donc normalement cela devrait fonctionner :
Tout ça pour ça... Je suis vraiment désolé de ne pas y avoir pensé plus tôt
Et donc normalement cela devrait fonctionner :
<?php session_start(); // Aller chercher les configurations My SQL et verifier l'identite de la personne connectée require_once('config.php'); require_once('verifications.php'); // Récupération du nombre de points $sql = mysql_query("SELECT points FROM nom_de_ta_table WHERE id='$id'"); $result = mysql_fetch_array($sql) or die(mysql_error()); $points = $result[0]; // Calcul des points $pointfin = $points+0.05; // Operation mysql_query("UPDATE membres SET points = $pointfin WHERE id='$id'") or die ('Erreur : '.mysql_error()); // Rappel le nombre de points echo'<br/>Vous avez '. $pointfin .' points'; ?>
Tout ça pour ça... Je suis vraiment désolé de ne pas y avoir pensé plus tôt
Le code ne marche pas cependant quand je fais gagner 1 point à l'utilisateur ça marche !.
Le problème vient donc du 0.05 point. Il ne doit pas aimer les virgules mais le problème c'est que je suis obligé d'utiliser des virgules sinon ça fait beaucoup trop de points et puis ça m'empêche de proposer certains services qui ne font pas gagner beaucoup de points.
As-tu une solution ?
Merci beaucoup pour toute cette aide, grâce à toi j'ai presque fini mon site de jeux gratuits; il ne me restera plus qu'à sécurisé ma page gain.php et ajouter quelques fonctions.
Cordialement
Sylvain
Le problème vient donc du 0.05 point. Il ne doit pas aimer les virgules mais le problème c'est que je suis obligé d'utiliser des virgules sinon ça fait beaucoup trop de points et puis ça m'empêche de proposer certains services qui ne font pas gagner beaucoup de points.
As-tu une solution ?
Merci beaucoup pour toute cette aide, grâce à toi j'ai presque fini mon site de jeux gratuits; il ne me restera plus qu'à sécurisé ma page gain.php et ajouter quelques fonctions.
Cordialement
Sylvain