Somme de valeurs en bdd

Fermé
cadforma Messages postés 2 Date d'inscription jeudi 30 avril 2020 Statut Membre Dernière intervention 30 avril 2020 - Modifié le 30 avril 2020 à 12:06
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 30 avril 2020 à 12:35
Bonjour !
J'ai un problème surement simple :
Je suis en train de créer un petit "jeu" sur mon site internet.
Le but serait de cliquer sur un bouton pour gagner 1 unité d'argent.

Je n'arrive pas à écrire en php -->
Quand le joueur clique sur le bouton tu change la valeur de 'solde' en ajoutant +1.

code :


<?php
session_start();
$bdd = new PDO('mysql:host=xxxxx;dbname=xxxx', 'xxxx', 'xxxx');
if(isset($_SESSION['id'])) {
   $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
   $requser->execute(array($_SESSION['id']));
   $user = $requser->fetch();
   $getid = intval($_GET['id']);
   $requser->execute(array($getid));
   $userinfo = $requser->fetch();
 
 if(isset($_POST['bouton'])){
  $erreur = "ok ca marche quand on clique";
  $newsolde = $bdd->prepare("UPDATE membres SET solde = ? WHERE id = ?");

//et la il faudrait trouver une solution XD

 }
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test jeu en php</title>
<link rel="stylesheet" type="text/css" href="css/jeu.css">
</head>

<body>
 
 <div class="banniere" align="center">
 <?php echo $userinfo['pseudo']; 
       echo $userinfo['solde'];
  ?>
 </div>
 
 <?php if(isset($erreur)) { echo $erreur; } ?>
 
 <div class="place_jeu" align="center">
 <form action="" method="post" name="travail">
 <input type="submit" name="bouton" class="bouton" value="Travailler">
 </form>  
 </div>
 
 
</body>
</html>

<?php   
}
else {
 $erreur = "id problem";
}
?>



Message modifié
par la modération

--->
Pour une lecture plus facile du code, vous devez utiliser
les balises de code (en y précisant le langage)


merci d'avance la communauté !

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
30 avril 2020 à 12:07
Bonjour

UPDATE membres 
SET solde = solde + 1 
WHERE id = ?

0
cadforma Messages postés 2 Date d'inscription jeudi 30 avril 2020 Statut Membre Dernière intervention 30 avril 2020
30 avril 2020 à 12:10
Salut jordane45,
Merci pour t'as réponse, cependant tu l'intègre comment ?
Car j'ai essayé cette méthode mais ce n'est vraiment pas la bonne :

if(isset($_POST['bouton'])){
$newsolde = $bdd->execute("UPDATE membres
SET solde = solde + 1
WHERE id = ?");
}
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 1 mai 2020 à 14:53
Déjà, merci d'utiliser correctement les balises de code.
il faut y indiquer le langage, tel qu'expliqué ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Ensuite, vu que tu fais du PDO je t'invite à lire ( ET A APPLIQUER ) les conseils donnés ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

idem pour le lien suivant
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code


et enfin, tu as été capable de faire une requête SELECT en utilisant la "bonne" syntaxe... n'es tu pas capable de faire la même chose pour ta seconde requete ??
<?php
//démarrage session
session_start();

//affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//connexion à la bdd
try{
$bdd =new PDO('mysql:host=********; dbname=*****; charset=utf8', '*******', '*****');
// Activation des erreurs PDO
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}

//récupération PROPRE des variables AVANT de les utiliser
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$getid = !empty($_GET['id']) ? intval($_GET['id']) : NULL ;


if($getid && $id){
 //préparation de la requête et des variables
  $sql = "UPDATE membres
               SET solde = solde + 1
               WHERE id = ?";

 $datas = array($getid);

 //Execution de la requete
 try{
   $requete = $bdd -> prepare($sql) ;
   $requete->execute($datas) ;
 }catch(Exception $e){
    // en cas d'erreur :
    echo " Erreur ! ".$e->getMessage();
    echo " Les datas : " ;
   print_r($datas);
 }
}
0