Meilleure méthode pour statistiques

Eléphant du PHP | 160 Messages

18 avr. 2006, 23:05

Bonjour,

J'aimerais , à chaque fois qu'un utilisateur s'identifie sur son espace abonné, comptabiliser sa visite.
:?: Vaut-il mieux ajouter un champ dans ma table abonné pour stocker le nombre de visites, ou vaut- il mieux créer une nouvelle table (pseudo, nbrvisites)?

:?: De plus, comment faire pour que la requête ajoute 1 au nombre stocké dans le champ?
Si quelqu'un peut me montrer à quoi ressemble l'instruction...

Merci

Mammouth du PHP | 19672 Messages

18 avr. 2006, 23:26

Tu peux rajouter un champ "nbVisites" tans la table abonné : pour l'incrémentation, c'est pas compliqué : lorsque ton visiteur s'identifie, profites-en pour récupérer la valeur du champ nbVisites, incrémentes-le et fais une requête UPDATE.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 160 Messages

18 avr. 2006, 23:35

J'ai compris la démarche.
Je vais essayer tout de suite,

Merci

Eléphant du PHP | 160 Messages

19 avr. 2006, 00:30

J'ai essayé ce code :
if ($loginOK) {
$_SESSION['pseudo'] = $data['pseudo'];
$recupVisites = mysql_query('SELECT nbVisites FROM abonnes WHERE pseudo='.$_SESSION['pseudo'].'');
$totVisites = ($recupVisites+1);
$update = mysql_query('UPDATE abonnes SET nbVisites='.$totVisites.' WHERE pseudo='.$_SESSION['pseudo'].'');
require ('header_abonnes.php');
//etc...
Et je n'arrive pas à comprendre pourquoi ça ne marche pas. (Et pseudo n'est pas ma clé primaire.)
Si quelqu'un a une idée,
Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 avr. 2006, 01:07

ce n'est pas oblgatoire de refaire une requête juste pour la récupération de nombre de connexion. Cyrano parlais de la requete lors de la connexion avec le login et passe... y récupérer aussi le nombre de connexion.

sinon tu peux aussi effectuer le calcul dans la requête et affiche la requete générée:
$sql='UPDATE abonnes SET nbVisites=nbVisites+1 WHERE pseudo="'.$_SESSION['pseudo'].'"';
echo $sql;
$update = mysql_query($sql); 
manquais des quillemets autour du pseudo.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 160 Messages

19 avr. 2006, 01:26

Merci beaucoup,
ça marche, mais j'ai quand même une petite question parce quelquechose m'échappe.
Le code :
if ($loginOK) {
$_SESSION['pseudo'] = $data['pseudo'];
//$nbVisites = mysql_query('SELECT nbVisites FROM abonnes WHERE pseudo='.$_SESSION['pseudo'].'');
//$totVisites = ($recupVisites+1);
//$update = mysql_query('UPDATE abonnes SET nbVisites='.$totVisites.' WHERE pseudo='.$_SESSION['pseudo'].'');
$sql='UPDATE abonnes SET nbVisites=nbVisites+1 WHERE pseudo="'.$_SESSION['pseudo'].'"'; 
echo $sql; 
$update = mysql_query($sql); 
require ('header_abonnes.php');
Je ne comprends pas dans :
$sql='UPDATE abonnes SET nbVisites=nbVisites+1 WHERE pseudo="'.$_SESSION['pseudo'].'"'; 
le nbVisites+1, parceque je m'attendais plutôt à voir une variable+1, et là, je ne comprends pas ce qu'est nbVisites.
Comme ça marche je me dis que c'est la valeur du champs nbVisite, mais pourquoi est-il sans $?

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 avr. 2006, 19:28

le nbVisites+1, parceque je m'attendais plutôt à voir une variable+1, et là, je ne comprends pas ce qu'est nbVisites.
Comme ça marche je me dis que c'est la valeur du champs nbVisite, mais pourquoi est-il sans $?
Il n'y a pas de "$" ?! :-k

L'opération reprend le contenu du champ en cours lui ajoute un et l'affecte a nouveau au champ. Il s'agit donc du "nom" du champ "nbVisites" de ta table

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 160 Messages

20 avr. 2006, 00:39

Je me doutais que ma question était surprenante, mais c'est vrai que je ne savais pas qu'on pouvait faire ça.
Merci beaucoup. Le site que je fais avance bien. Et c'est la première fois que je peux faire ce que je veux grace à toute l'aide que je reçois sur ce forum.
Top :wink: