Actualisation de page

Fermé
Utilisateur anonyme - 11 juil. 2016 à 01:18
arshi92 Messages postés 131 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 12 octobre 2017 - 16 août 2016 à 15:05
Bonjour,
je cherche désespérément un moyen d'actualisation automatique de ma page qui actualise aussi le code php, je m'explique:
-je veux que la page en lecture s'actualise automatiquement régulièrement, pour ce faire, j'utilise le code suivant:
<?php
    $url=$_SERVER['REQUEST_URI'];
    header("Refresh: 5; URL=$url");
?>

--> Cette partie à l'air de fonctionner puisuqe la page marque un temps de chargement tout les (ici) 5sec.
-je veux aussi que à chaque actualisation, le profil de l'utilisateur soit crédité de 1 (+1), pour ce faire, j'utilise le code suivant:
<?php

session_start();

$host = 'XXX';
$user = 'XXX';
$pwd  = 'XXX';
$dbname  = 'XXX';
$charset = ";charset=UTF8";
 try{
     
 $bdd= new PDO("mysql:host=".$host.";dbname=".$dbname.$charset,$user,$pwd);
   $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}

$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$points = !empty($_SESSION['points']) ? intval($_SESSION['points']) : 0;

if ($id) {
 $points++;

  $sql = "UPDATE membres SET points= '$points'  WHERE id='$id'";
  $datas = array(':points'=>$points, ':id'=>$id);

  try{
    $prepare = $bdd->prepare($sql);
    $prepare->execute($datas);
  }catch(Exception $e){
     echo 'Error ! ' . $e->getMessage();
  }

}
?> 

(je ne suis qu'un amateur et ce code est en partie trouvé sur internet, mais il fonctionne)

LE SOUCIS, c'est que le compte de l'utilisateur n'est crédité qu'une seule fois et non à chaque actualisation. Comment faire? Je veux que toute les 5 sec la variable points de l'utilisateur augmente de 1!

Merci pour votre aide :)
A voir également:

1 réponse

arshi92 Messages postés 131 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 12 octobre 2017 17
16 août 2016 à 15:05
Bonjour.

Les lignes :
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$points = !empty($_SESSION['points']) ? intval($_SESSION['points']) : 0;

veulent dire que :
- La variable $id prend la valeur de $_SESSION['id']. Si $_SESSION['id'] n'existe pas, $id prend la valeur NULL;
- La variable $points prend la valeur de $_SESSION['points']. Si $_SESSION['points'] n'existe pas, $points prend la valeur 0;

Donc tu dois récupérer à chaque fois les points du membre à partir de l'id du membre dans la base de données alors avec un peu de modifications ( tu devrais pouvoir adapter ) , ça donne.

<?php
//En cas de SESSION_START , toujours le mettre au début
session_start();

//Actualisation de la page
$url=$_SERVER['REQUEST_URI'];
header("Refresh: 5; URL=$url");

//Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}

//id du membre (récupérable par une session , ça dépend de toi)
$id= 1;

//Requete de recuperation des points du membre
$reponse = $bdd->prepare('SELECT points from membres where id=?');
$reponse->execute(array($id));
//Récupere les données issue de la requete
$donnees = $reponse->fetchAll();
//Premiere ligne tu tableau ( En php de 0 à n-1 , n étant le nombre de lignes)
//Colonne de la table dont on récupère la valeur : points
$points = $donnees[0]['points'];

if ($id) {
$points++;

$sql = "UPDATE membres SET points= '$points' WHERE id='$id'";
$datas = array(':points'=>$points, ':id'=>$id);

try{
$prepare = $bdd->prepare($sql);
$prepare->execute($datas);
}catch(Exception $e){
echo 'Error ! ' . $e->getMessage();
}

}

?>
0