[RESOLU] une action une fois par jour

Avatar du membre
Eléphant du PHP | 60 Messages

20 janv. 2019, 23:10

Bonjour,
J'ai créé une page qui fonctionne un peu comme un bonus du jour, tout fonctionne mais je ne sais pas comment faire pour que cette page ne fonctionne qu'une fois par jour.
Du style, si on y va une fois tout fonctionne normalement et si on y retourne une deuxième fois dans la même journée ça affiche un message du style : "vous avez déjà fait le booster aujourd'hui, revenez demain ! "
Je demande donc votre aide pour résoudre mon petit problème.
Merci d'avance.

<?php
define('include',NULL);
include('core.php');
if (!isset($_SESSION['membre']) || $_SESSION['connect'] != true) {
header('Location: /compte/login');
die();
}

$nompage = 'Booster';
$descpage = 'Booster';
include('header.php');
include('sidebar.php');
$message = '';

$sqlinfos = $db->prepare('SELECT euros, credits, pseudo, avatar, grille, booster FROM membres WHERE id = :id');
$sqlinfos->execute(array(':id' => $_SESSION['membre']));
$infos = $sqlinfos->fetch(PDO::FETCH_OBJ);


if (isset($_POST['send'])) {
if ($_POST['grille'] == '' || $_POST['credits'] == '');

}

$update1 = $db->prepare('UPDATE membres SET grille = grille + :grille WHERE id = :id');
$update1->execute(array(':grille' => $grille+1, ':id'=>$_SESSION['membre']));
$update2 = $db->prepare('UPDATE membres SET credits = credits + :credits WHERE id = :id');
$update2->execute(array(':credits' => $credits+100, ':id'=>$_SESSION['membre']));

$message = '<div id=warning><span style="color:red"><b>veuillez patienter<br>prise en compte du booster en cours<b></span></div><script>setTimeout(\'window.location.replace("/compte")\',8000);</script>';

$avatar = ($infos->avatar == '') ? '/theme/images/noavatar.png' : $infos->avatar;

$insert2 = $db->prepare('INSERT INTO tchat SET membre = :membre, message = :message, date = :date');
$insert2->execute(array(':membre' => 1, ':message' => 'Merci '.$infos->pseudo.' pour le Booster, pour te remercier tu as reçu 100 crédits + 1 grille , A Demain !', ':date' => time()));

echo '<div id="content" class="float_r"><h2 class="center">Booster</h2><div class="center"></div><br>
<div class="topart center"><h3>Booster</h3><div class="sidehead2"><div class="sidehead3"></div></div></div>

<div class="padding center">
'.$infos->pseudo.'<br><br>
<img id="avatar" src="'.$avatar.'" alt="avatar" style="border-radius:10%;max-width:60px" />
<br><br>
Merci de booster le taux !<br><br>
<br><br>
<div id="info">'.$message.'</div>
<br><br>
'.$config->bonuspub.'
</div></div><br /><br />';

include('footer.php');
?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 janv. 2019, 01:33

Bonjour,

Est-ce que c'est une fois par jour pour tout le monde, ou une fois par jour par utilisateur ?

Si c'est pour tout le monde, il faut enregistrer du côté de ton site (dans un fichier texte ou dans une base de données par exemple) comme quoi l'exécution a déjà eu lieu pour ne pas la relancer jusqu'à la fin de la journée.

Si c'est par utilisateur, alors il faut enregistrer que l'exécution a déjà eu lieu pour cet utilisateur. Si l'utilisateur n'est pas identifié, le plus simple est de noter cela dans un cookie. Si l'utilisateur est identifié, alors tu peux noter cette info dans ta bdd utilisateur, c'est le plus sûr.
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphant du PHP | 60 Messages

21 janv. 2019, 12:24

Bonjour àrthur,
Merci pour les réponses.
C'est une fois par jour par utilisateur.
Dans ma bdd à la table membres j'ai ajouter un champ "booster" avec 0 comme valeur par défaut.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 janv. 2019, 12:45

Il faut plutôt que tu mettes un champ date pour savoir la date de dernière utilisation du booster.
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphant du PHP | 60 Messages

21 janv. 2019, 14:03

il y a déjà un champ "date" dans la table membres mais je sais pas quoi en faire.
je suis vraiment nul....mdr

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 janv. 2019, 14:23

il y a déjà un champ "date" dans la table membres mais je sais pas quoi en faire.
je suis vraiment nul....mdr
Avant de développer quoi que ce soit il faut déjà que tu réfléchisses à ce que tu veux faire et comment réussir techniquement à le faire.
Une fois que tu auras poser le principe/l'algo sur papier, alors tu pourras te mettre dans le code.
Quand tout le reste a échoué, lisez le mode d'emploi...