Actualisation de page

Utilisateur anonyme -  
arshi92 Messages postés 141 Statut Membre -
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 :)

1 réponse

  1. arshi92 Messages postés 141 Statut Membre 17
     
    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