[RESOLU] Actualisation de page

Eléphanteau du PHP | 25 Messages

12 juil. 2016, 12:38

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:

Code : Tout sélectionner

<?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:

Code : Tout sélectionner

<?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 :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

12 juil. 2016, 13:58

Bonjour,

La solution est d'enregistrer quelque-part le nombre de fois que tu as demandé un rafraichissement de la page et de l'incrémenter à chaque fois.

2 solutions :
- si ce n'est pas une donnée importante (c'est à dire qu'un utilisateur pourra la changer facilement), tu peux la faire passer dans l'url en ajoutant un paramètre à la fin de ton url dans la ligne qui fait la redirection.
- si il ne faut pas que l'utilisateur puisse modifier cette valeur facilement, tu peux la mettre dans une variable de session ou dans un cookie, et idem à chaque refresh tu l'incrémentes de 1
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 25 Messages

12 juil. 2016, 14:26

Merci pour ta réponse mais je ne comprend pas trop comment marcherais ta technique. Si tu as le temps pourrais tu développer un petit peu? Je voit globalement de quoi tu parles mais je ne vois pas en quoi ça résoudrai mon problème et surtout comment ça ferai évoluer la variable de ma BDD.

Mammouth du PHP | 2703 Messages

12 juil. 2016, 14:45

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

mais comme la valeur de $_SESSION['points'] n'est jamais mise à jour, cela ne dépassera jamais 1.

Eléphanteau du PHP | 25 Messages

12 juil. 2016, 14:49

Oui je pense que le problème vient de là, je pensais que le php s'actualiserai entièrement avec la page mais ce n'est pas le cas, comment faire?

Mammouth du PHP | 1967 Messages

13 juil. 2016, 11:45

juste après le $points++;
rajoute un $_SESSION['points'] = $points;
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 25 Messages

13 juil. 2016, 16:15

Ah oui je vois parfaitement ce qu'il n'allait pas maintenant! Merci beaucoup ça fonctionne!! MERCI pour votre aide et ce merveilleux forum, ça faisait quelques temps que je cherchais la solution :)
Bonne continuation !