Systéme de jetons (point)

Fishing61

Fishing61 Le 3 mai 2016 à 20:41 (Édité le 25 janvier 2019 à 17:51)

Bonsoir,
Je souhaiterai faire un systéme avec de jetons (point) de ce type.
Pour faire cour je voudrai que dés qu'une personne clique sur un bouton "continuer" soit rediriger vers son profil et que il soit crédité d'un point (jeton). MERCI DE REPONDRE SVP :'(.
Bonne Soiré.
BeKidding

BeKidding Le 4 mai 2016 à 18:21

Mh , 
comme ceci ? 
<?php
   if(isset($_POST['continuer'])) {
      $credit_token = $bdd->prepare('UPDATE TableMembre SET tokens=tokens+1 WHERE pseudo = ?');
      $credit_token = $credit_token->execute(array($_SESSION['pseudo']));
   }
?>
   
Fishing61

Fishing61 Le 4 mai 2016 à 18:38

Merci pour le code, je ne l'ai pas encore teste mais...J'ai quelques question, faut t'il créé une bdd ou une table ? Et ou faut t'il inscrire se code, dans la page "profil.php" ou dans une autre page, le mieux pour moi seraient dans une autre page. 
Merci d'avance pour vos réponses.
Wistaro

Wistaro Le 4 mai 2016 à 23:50

Ce n'est qu'un exemple de code ici, en l'occurrence un champs 'token' s'incremente pour un utilisateur lorsqu'un formulaire est envoyé. 

C'est à toi de l'adapter 😀 Suivant ton besoin. 

Et pour répondre à tes questions,  il suffit que tu rajoutes un champs token dans ta table utilisateur.
Fishing61

Fishing61 Le 5 mai 2016 à 00:28

Bonsoir,
Je n'ai pas de table utilisateur je dois en créé une ?
Et comment fais t'on pour faire un code avec le nombre de jetons (point) qui s'affiche en temps réél pour le membre ? Et je ne c'est pas comment on pourrait faire cela, dés qu'une personne clique sur un bouton "continuer" soit rediriger vers son profil et que il soit crédité d'un point (jeton). Voila j'éspére avoir été plus claire dans mes questions.
Cordialement.
BeKidding

BeKidding Le 5 mai 2016 à 02:35

Bonsoir , de nouveau 😀
Et bien tu n'est pas obligé de créer une table utilisateurs mais alors les tokens ne seront pas attribués ... a des utilisateurs je ne comprends pas très bien le système.
Si tu n'as pas de table utilisateurs comment credite tu quelqu'un d'un token ?
Tu dois quand même bien posséder une table membre ou quelque chose qui s'y rapproche , non ?

Et comme dis au dessus tu n'est pas obligé de créer une table utilisateurs , tu peux simplement créer aussi une table token ,
avec structure comme ceci :
id_membre | tokens
ou encore :
pseudo_membre | tokens

Et pour afficher le nombre de tokens il suffit de faire un select de la table qui contient les tokens , dans mon exemple au dessus la table TableMembre
Exemple ->
$req_token = $bdd->prepare('SELECT tokens FROM TableMembre WHERE pseudo = ?');
$req_token = $req_token->execute(array($_SESSION['pseudo']));
$token_nb = $req_tokens->fetch();
$tokens = $token_nb['tokens'];
/* 
TON CODE
.....
.....
 */
?>
<?= $tokens ?>


Fishing61

Fishing61 Le 5 mai 2016 à 09:44

Desolé je ne comprend pas trop j'ai du mal j'ai créé une table "token"sa donne sa
Fishing61

Fishing61 Le 5 mai 2016 à 09:45

Je n'ai rien toucher au reglage a part la case nom que j'ai bien sur change par ce que vous m'aviez dit
BeKidding

BeKidding Le 5 mai 2016 à 09:54

Et bien voilà en fait c'est a peu près tout ...
Tu dois juste dire a ta requete SQL que tu ajoute un Tokens dans la table Token OU l'ID_membre de Tokens = id_membres de ta table utilisateurs 😀
Fishing61

Fishing61 Le 5 mai 2016 à 10:03

Et la comment je fais ? pour faire cela je marque quoi et ou ?
Fishing61

Fishing61 Le 5 mai 2016 à 10:09

Et comment je fais par la suite pour faire un bouton ou il clique dessus et il on 1 point ? 
Swaap

Swaap Le 5 mai 2016 à 12:33

Si tu utilises le code de BeKidding qui est celui-ci : 
<?php   if(isset($_POST['continuer'])) {      $credit_token = $bdd->prepare('UPDATE TableMembre SET tokens=tokens+1 WHERE pseudo = ?');      $credit_token = $credit_token->execute(array($_SESSION['pseudo']));   }
?>
Alors, avec le petit bout e HTML tu dois faire comme ceci :
<form method="post">
<?php
if(isset($_POST['continuer'])) 
{
   $credit_token = $bdd->prepare('UPDATE TableMembre SET tokens=tokens+1 WHERE pseudo = ?');
   $credit_token = $credit_token->execute(array($_SESSION['pseudo']));
}
?>
<button type="submit" name="continuer">Vers mon profil</button>
</form>
Essaie cela est dis moi ton résultat
Fishing61

Fishing61 Le 5 mai 2016 à 12:40

j'ai essayé et sa me met 2 erreurs .
Swaap

Swaap Le 5 mai 2016 à 12:46

Peux-tu préciser les erreurs que tu reçois?
Fishing61

Fishing61 Le 5 mai 2016 à 13:05

oui, je vous montre tout
mon code
<?php   
   if(isset($_POST['continuer'])) {      $credit_token = $bdd->prepare('UPDATE TableMembre SET tokens=tokens+1 WHERE pseudo = ?');      $credit_token = $credit_token->execute(array($_SESSION['pseudo']));   }
?>
<form method="post">
<?php
if(isset($_POST['continuer'])) 
{
   $credit_token = $bdd->prepare('UPDATE TableMembre SET tokens=tokens+1 WHERE pseudo = ?');
   $credit_token = $credit_token->execute(array($_SESSION['pseudo']));
}
?>
<button type="submit" name="continuer">Vers mon profil</button>
</form>
mes erreurs
Fishing61

Fishing61 Le 5 mai 2016 à 13:06

Et enfin ma table 
Swaap

Swaap Le 5 mai 2016 à 13:14 (Édité le 5 mai 2016 à 13:18)

<?php    if(isset($_POST['continuer'])) {      $credit_token = $bdd->prepare('UPDATE token SET tokens=tokens+1 WHERE id_membre = ?');      $credit_token = $credit_token->execute(array($_SESSION['pseudo']));   }?><form method="post"><?phpif(isset($_POST['continuer'])) {
   $credit_token = $bdd->prepare('UPDATE TableMembre SET tokens=tokens+1 WHERE pseudo = ?');   $credit_token = $credit_token->execute(array($_SESSION['pseudo']));}
?><button type="submit" name="continuer">Vers mon profil</button></form>
Fishing61

Fishing61 Le 5 mai 2016 à 13:24

Sa ne marche pas non plus mais peut tu regardé si sa ne serait pas ma table qui serait mauvaise.
BeKidding

BeKidding Le 5 mai 2016 à 15:05

Pour te simplifier la vie et faire appelle à ta bdd je te conseille de la mettre dans un fichier config que tu inclus a chaque page.
Exemple -> http://prntscr.com/b0jzv2
Ou alors tu peux simplement définir ta base de données à chaque début de page ou tu en a besoin.
En l'occurence le code sera ->
<form method="post">
   <?php
   $bdd = new PDO("mysql:host=localhost;dbname=NomDB", "NomUtilisateur", "MotDePasse");
   $bdd->exec("SET NAMES utf8");
    if(isset($_POST['continuer'])) {
      $credit_token = $bdd->prepare('UPDATE tokens SET tokens=tokens+1 WHERE id_membre= ?');   
       $credit_token = $credit_token->execute(array($_SESSION['id']));}
   ?>
<button type="submit" name="continuer">Vers mon profil</button>
</form>
Fishing61

Fishing61 Le 5 mai 2016 à 16:56 (Édité le 5 mai 2016 à 16:59)

J'ai modifié votre code mais c'est normal que quand on clique sur "vers mon profil" sa me met une erreur A LA LIGNE 7 .
<form method="post">
   <?php
   $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
   $bdd->exec("SET NAMES utf8");
    if(isset($_POST['continuer'])) 
   {
      $credit_token = $bdd->prepare('UPDATE tokens SET tokens=tokens+1 WHERE id_membre= ?');   
      $credit_token = $credit_token->execute(array($_SESSION['id']));
   }
   ?>
<button type="submit" name="continuer">Vers mon profil</button>
</form>
Voila mon code j'ai modifier sa 
  $bdd = new PDO("mysql:host=localhost;dbname=NomDB", "NomUtilisateur", "MotDePasse");
par sa 
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
/* Sa pose un probleme mais je me demande si je n'est pas un probleme dans ma table car j'ai juste ecrit deux mots sur deux colonnes d'habitude on mais un autoincrement ou des trucs du genres ? Aprés c'est peut étre normal.*/
BeKidding

BeKidding Le 5 mai 2016 à 18:30

Et bien désolé de te l'apprendre mais moi cela fonctionne parfaitement ...

Voici le code "Complet" , a toi de l'adapter après ....
<form method="post">
   <?php
   $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
   $bdd->exec("SET NAMES utf8");
    if(isset($_POST['continuer'])) 
   {
      $credit_token = $bdd->prepare('UPDATE tokens SET tokens=tokens+1 WHERE id_membre= ?');   
      $exec = $credit_token->execute(array($_SESSION['id']));
      $fetch = $credit_token->fetch();
      $non_existe = $credit_token->rowCount();
        if($non_existe < 1) {
            $credit_token = $bdd->prepare('INSERT INTO tokens (id_membre,tokens) values (?,?)');
            $credit_token = $credit_token->execute(array($_SESSION['id'],0));
        }
   }
   ?>
<button type="submit" name="continuer">Vers mon profil</button>
</form>
Et voici la vidéo pour prouver mes dires :
Fishing61

Fishing61 Le 5 mai 2016 à 20:40

Ne marche toujours pas malheuresement pourriez vous me faire un screen shot de votre table tokens
BeKidding

BeKidding Le 6 mai 2016 à 06:18

id_membre en primary INT 11
tokens en varchar et lenght 255
Fishing61

Fishing61 Le 6 mai 2016 à 08:28

Fishing61

Fishing61 Le 6 mai 2016 à 08:30

c est comme sa ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||