require('inc-connexion.php');
require('../class/Stat.php');
require('../class/statManager.php');
if(isset($_COOKIE['visite'])) {
$cookie_value = $_COOKIE['visite'];
$cookie_value = unserialize($cookie_value);
$web_user_id = $cookie_value['web_user_id'];
$web_user_visit = $cookie_value['web_user_visit'];
$cookie_value['web_user_visit'] ++;
$stat_data = serialize($cookie_value);
$manager = new statManager($db);
$current_stat = $manager->getVisitesNb();
$new_content = array('user_id' => (int) $current_stat['user_id'], 'web_user_id' => $current_stat['web_user_id'],
'web_user_visit' => (int) $current_stat['web_user_visit']);
$stat_to_update = new Stat($new_content);
$stat_to_update->setWebUserId('web_user_id');
$stat_to_update->setWebUserVisit('web_user_visit');
$manager->updateStat($stat_to_update);
}
else {
$web_user_id = uniqid();
$nombre_visite = 1;
$user_stat['web_user_id'] = $web_user_id;
$user_stat['web_user_visit'] = $web_user_visit;
$stat_data = serialize($user_stat);
$data_stat = array(
'user_id' => 1,
'web_user_id' => $web_user_id,
'web_user_visit' => $nombre_visite
);
$stats_data = new Stat($data_stat);
$manager = new statManager($db);
$manager->insertStat($stats_data);
}
setcookie('visite', $stat_data, time()+259200);
print_r($_COOKIE);
class/Stat.php
class Stat {
private $_user_id;
private $_web_user_id;
private $_web_user_visit;
private static $error;
const MSG_ERROR_USER_ID = 'USER_ID doit être un entier.';
const MSG_ERROR_WEB_USER_ID = 'WEB_USER_ID doit être une chaîne de caractères.';
const MSG_ERROR_WEB_USER_VISIT = 'WEB_USER_VISIT doit être un entier.';
const MSG_ERROR_END = 'L\'objet ne peut pas être créé.';
public function __construct(array $data) {
$this->setUserId($data['user_id']);
$this->setWebUserId($data['web_user_id']);
$this->setWebUserVisit($data['web_user_visit']);
if(!empty(self::$error)) {
throw new Exception(self::$error . self::MSG_ERROR_END);
}
}
public function setError($msg) {
self::$error = $msg;
}
public function getError() {
return self::$error;
}
public function setUserId($user_id) {
if((is_int($user_id)) AND ($user_id > 0)) {
$this->_user_id = $user_id;
}
else {
$this->setError(self::MSG_ERROR_USER_ID);
}
}
public function setWebUserId($web_user_id) {
if(is_string($web_user_id)) {
$this->_web_user_id = $web_user_id;
}
else {
$this->setError(self::MSG_ERROR_WEB_USER_ID);
}
}
public function setWebUserVisit($web_user_visit) {
if((is_int($web_user_visit)) AND ($web_user_visit > 0)) {
$this->_web_user_visit = $web_user_visit;
}
else {
$this->setError(self::MSG_ERROR_WEB_USER_VISIT);
}
}
public function getUserId() {
return $this->_user_id;
}
public function getWebUserId() {
return $this->_web_user_id;
}
public function getWebUserVisit() {
return $this->_web_user_visit;
}
}
class/statManager.php
class statManager {
private $_db;
public function __construct($db) {
$this->setDb($db);
}
public function setDb(PDO $dbh) {
$this->_db = $dbh;
}
// FONCTION QUI A POUR BUT D'AFFICHER LE NOMBRE DE VISITES PAR ORDRE DECROISSANT.
public function getVisitesNb() {
$sql = 'SELECT user_id, web_user_id, web_user_visit FROM stat ORDER BY web_user_visit DESC';
$stmnt = $this->_db->prepare($sql);
$stmnt->execute();
$count = $stmnt->fetch();
return $count;
}
// FONCTION QUI A POUR BUT DE CALCULER ET D'AFFICHER LE NOMBRE TOTAL DE VISITES.
public function getVisitesTotalNb() {
$sql = 'SELECT SUM(web_user_visit) AS total_visites FROM stat';
$stmnt = $this->_db->prepare($sql);
$stmnt->execute();
$count = $stmnt->fetch();
return $count;
}
// FONCTION QUI A POUR BUT DE COMPTER ET D'AFFICHER LE NOMBRE TOTAL DE VISITEURS.
public function getVisiteursTotalNb() {
$sql = 'SELECT web_user_id AS total_visiteurs FROM stat';
$stmnt = $this->_db->prepare($sql);
$stmnt->execute();
$count = $stmnt->rowCount();
return $count;
}
// FONCTION QUI A POUR BUT DE RECUPERER TOUTES LES ENREGISTREMENTS DE LA TABLE STAT.
public function getStat() {
$sql = 'SELECT web_user_id, web_user_visit FROM stat ORDER BY web_user_visit DESC';
$stmnt = $this->_db->prepare($sql);
$stmnt->execute();
while($stat_data = $stmnt->fetch(PDO::FETCH_ASSOC)) {
$stats_data[] = $stat_data;
}
return $stats_data;
}
// FONCTION QUI A POUR BUT D'INSERER LES STATISTIQUES DANS LA TABLE STAT.
public function insertStat(Stat $stat) {
$sql = 'INSERT INTO stat (web_user_id, web_user_visit) VALUES (:web_user_id, :web_user_visit)';
$web_user_id = $stat->getWebUserId();
$web_user_visit = $stat->getWebUserVisit();
$stmnt = $this->_db->prepare($sql);
$stmnt->bindParam(':web_user_id', $web_user_id);
$stmnt->bindParam(':web_user_visit', $web_user_visit);
$stmnt->execute();
}
// FONCTION QUI A POUR BUT DE METTRE A JOUR LES STATISTIQUES DANS LA TABLE STAT.
public function updateStat(Stat $stat) {
$sql = 'UPDATE stat SET web_user_visit = :web_user_visit WHERE web_user_id = :web_user_id';
$web_user_id = $stat->getWebUserId();
$web_user_visit = $stat->getWebUserVisit();
$stmnt = $this->_db->prepare($sql);
$stmnt->bindParam(':web_user_id', $web_user_id);
$stmnt->bindParam(':web_user_visit', $web_user_visit);
$stmnt->execute();
}
}
Bonsoir, J'ai un petit soucis concernant WEB_USER_VISIT :Voici le message d'erreur -> Fatal error: Uncaught Exception: WEB_USER_VISIT doit être un entier.L'objet ne peut pas être créé. in C:\wamp64\www\villes-site-en-poo-et-pdo\class\Stat.php on line 24
Exception: WEB_USER_VISIT doit être un entier.L'objet ne peut pas être créé. in C:\wamp64\www\villes-site-en-poo-et-pdo\class\Stat.php on line 24
Merci d'avance et bonne soirée.