PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 15-06-2012 16:42:41

Fabdu57
Membre
Inscription : 10-06-2012
Messages : 36

Compteur de visite : Quelques modifications ?

Bonjour à tous,
Je possède un script que j'ai trouvé de compteur de visite. Le soucis, il compte plusieurs fois le même visiteur, en clair, il compte le nombre de pages vues...

<?php
$Connect_db = mysql_connect($Serveur_db,$User_db,$Passe_db);  // Connection à MySQL
mysql_select_db($Base_name,$Connect_db); // Sélection de la base de donnée

$requete = mysql_query("select * from compteur_visite"); // On regarde si les données sont enregistrées ou non
$nb = mysql_numrows($requete);  // Nombre d'enregistrement

if($nb ==0) // On regarde le nombre d'enregistement
   {
   mysql_query("insert into compteur_visite values('1')"); // si il y a 0 enregistrement on ajoute des données
   }
   else // sinon on passe
   {
   mysql_query("update compteur_visite set nb=nb+1"); // et on met à jour le nombre de visite
   }

$requete = mysql_query("select * from compteur_visite"); // Sélection de la table

$j = mysql_fetch_array($requete); // et on affiche le nombre de visite
$nb = $j[nb];
print ''.$nb.'';

// On ferme la connection
mysql_close();
?>

J'aimerai donc le faire passer en compteur de visite unique. J'ai donc pensé utiliser des cookies tel que :

Création du COOKIES

<?
$expire = 24*3600;
setcookie("visite","A visité le site xxxxx aujourd'hui",time()+$expire);
?>

Ensuite, j'avais pensé, dans le code du compteur mentionné en premier, faire de sorte a vérifier que si le cookies existe, alors je n'incrémente pas. Le cas contraire, j'incrémente.

if exist $_COOKIE["visite"] then .... else ...

J'ai donc essayé ainsi, cependant ca ne fonctionne pas (Warning: Cannot modify header information - headers already sent by (output started at /homepages/41/d418170838/htdocs/accueil.php:5) in /homepages/41/d418170838/htdocs/includes/cpt on line 3 - Ligne 3 étant la ligne ou je dit créer le cookie) :

<?php
  $expire = 10;
  setcookie("SCHILD_WEBSITE","OK",time()+$expire);
?>

<?php
$Connect_db = mysql_connect($Serveur_db,$User_db,$Passe_db);  // Connection à MySQL
mysql_select_db($Base_name,$Connect_db); // Sélection de la base de donnée

$requete = mysql_query("select * from compteur_visite"); // On regarde si les données sont enregistrées ou non
$nb = mysql_numrows($requete);  // Nombre d'enregistrement


if($nb ==0 and $_COOKIE["SCHILD_WEBSITE"] == 'OK') // On regarde le nombre d'enregistement
   {
   mysql_query("insert into compteur_visite values('1')"); // si il y a 0 enregistrement on ajoute des données
   }
   else // sinon on passe
   {
   mysql_query("update compteur_visite set nb=nb+1"); // et on met à jour le nombre de visite
   }


$requete = mysql_query("select * from compteur_visite"); // Sélection de la table

$j = mysql_fetch_array($requete); // et on affiche le nombre de visite
$nb = $j[nb];
print ''.$nb.'';

// On ferme la connection
mysql_close();
?>

Pourtant, en essayant dans mon petit test ci-dessous, ca fonctionne :

<?
    $expire = 10;
    setcookie("SCHILD_WEBSITE","OK",time()+$expire);
  $date = date("d/m/Y");
 
if($_COOKIE["SCHILD_WEBSITE"] == 'OK' and $date == '15/06/2012')
    {
    echo 'OK pour le cookies';
    }
else
    {
    echo 'Cookies NON existant';
    }
?>

L'erreur est-elle bête? lol

Merci par avance,
Fab.

Dernière modification par Fabdu57 (15-06-2012 17:01:12)

Hors ligne

#2 15-06-2012 17:19:14

Fabdu57
Membre
Inscription : 10-06-2012
Messages : 36

Re : Compteur de visite : Quelques modifications ?

Re le Forum,

Solution trouvée au final, j'avais fait deux erreurs :
La première, j'avais pas mis le code de cookie en début de page.

<?php
  $expire = 24*3600;
  setcookie("SCHILD_WEBSITE","OK",time()+$expire);
?>

le code fonctionnel au final :

<?php
$Connect_db = mysql_connect($Serveur_db,$User_db,$Passe_db);  // Connection à MySQL
mysql_select_db($Base_name,$Connect_db); // Sélection de la base de donnée

$requete = mysql_query("select * from compteur_visite"); // On regarde si les données sont enregistrées ou non
$nb = mysql_numrows($requete);  // Nombre d'enregistrement


if($nb ==0) // On regarde le nombre d'enregistement
   {
   mysql_query("insert into compteur_visite values('1')"); // si il y a 0 enregistrement on ajoute des données
   }
   elseif ($nb !=0 and $_COOKIE["SCHILD_WEBSITE"] != 'OK') // sinon on passe
   {
   mysql_query("update compteur_visite set nb=nb+1"); // et on met à jour le nombre de visite
   }
   elseif ($nb !=0 and $_COOKIE["SCHILD_WEBSITE"] == 'OK') // sinon on passe
   {
   mysql_query("update compteur_visite set nb=nb"); // et on met à jour le nombre de visite
   }

$requete = mysql_query("select * from compteur_visite"); // Sélection de la table

$j = mysql_fetch_array($requete); // et on affiche le nombre de visite
$nb = $j[nb];
print ''.$nb.'';

// On ferme la connection
mysql_close();
?>

Merci quand même smile

Hors ligne

Pied de page des forums