compteur de visite sur page dynamique

Eléphanteau du PHP | 21 Messages

25 avr. 2007, 18:35

Bonjour à tous

Je n'ai pas trouvé exactement ce que je cherche sur le forum...

Sur un site d'annonces, je cherche à faire un compteur de visite qui s'incrémente à chaque affichage d'une annonce. Les compteurs seraient placé sur chaque page d'annonce. J'ai une table 'annonce' avec un id. Quelqu'un à une idée?

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

25 avr. 2007, 19:06

Huh ? Qu'est-ce que tu penses de ça : tu ajoutes une colonne à la table, cette colonne sert de compteur et tu l'incrémentes à chaque affichage de lage page.

Eléphanteau du PHP | 21 Messages

26 avr. 2007, 09:20

Salut Hubert Roksor et merci de ta reponse.

Oui ça m'irais bien ça. 8-)

Je suis un débutant en php/mysql, aurait tu la gentillesse de me dire comment faire ou existe t'il un script tout prêt :?:

Eléphant du PHP | 199 Messages

26 avr. 2007, 09:35

salut,

il faut que tu fasse une requete pour sortir le nombre deja present dans ta base, ensuite tu ajoute +1 et tu update ta base...
//-------tu sort les infos de ta bdd
$compteur = mysql_query("SELECT * FROM ma_table WHERE page = $page")or die(mysql_error(error)); 
$donnees = mysql_fetch_array($compteur);

//---tu recup le nombre deja present
$hit = $donnees['hit'];

//----tu ajoute +1
$hit++;

//-----tu update ta bdd
$reponse_hit = mysql_query("UPDATE ma_table SET hit = $hit WHERE page = $page ")or die(mysql_error(error)); 
regarde avec ce bout de code tu doit reussir a te l'adapter

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 avr. 2007, 10:09

Pas besoin de venir lire le nombre en base pour l'incrémenter, il suffit de faire un update du champ + 1 :)

Code : Tout sélectionner

UPDATE table SET champ = champ + 1 WHERE ...
Le select n'a d'intérêt que pour afficher la valeur du compteur, mais celle-ci peut être ramenée dans la même requête que celle qui affiche les données de l'annonce, sans avoir besoin d'une requête supplémentaire :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 199 Messages

26 avr. 2007, 10:10

autant pour moi...

Mais c'est vrai que moi je l'affiche le nombre sur ma page...

ViPHP
ViPHP | 5924 Messages

26 avr. 2007, 12:04

Même si tu l'affiches sur ta page, c'est très mauvais de procéder ainsi, car si une requète UPDATE s'insère entretes 2 requètes, tu mettras à jour des données fausses, et si c'est une requète SELECT qui s'intercalle, alors les données renvoyées par la base seront fausses.

Eléphanteau du PHP | 21 Messages

26 avr. 2007, 13:45

Pas besoin de venir lire le nombre en base pour l'incrémenter, il suffit de faire un update du champ + 1 :)

Code : Tout sélectionner

UPDATE table SET champ = champ + 1 WHERE ...
Le select n'a d'intérêt que pour afficher la valeur du compteur, mais celle-ci peut être ramenée dans la même requête que celle qui affiche les données de l'annonce, sans avoir besoin d'une requête supplémentaire :)
Oui je souhaite afficher la valeur du compteur

Eléphanteau du PHP | 21 Messages

30 avr. 2007, 09:29

En fait j'aimerais que soit affiché sur chaque annonce :
cette annonce à été vue xx fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 avr. 2007, 09:39

Dans ce cas, l'lago serait :

Code : Tout sélectionner

UPDATE pour incrémenter le nombre de visite SELECT pour récupérer nombre de visite Affichage de ce nombre de visite
Avec ça et les différents code plus haut, tu devrais avoir suffisamment d'informations pour y arriver
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 21 Messages

30 avr. 2007, 10:01

Merci zeus pour ta réponse :wink:

Quelle serait la ligne de commande pour ajouter le champ compteur à ma table?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 avr. 2007, 10:15

2 solutions :

1/ Utilise PhpMyAdmin

2/ Ligne de commande

Code : Tout sélectionner

ALTER TABLE nomTable ADD COLUMN nomColonne INT UNSIGNED NOT NULL AUTO_INCREMENT;
Plus d'info : http://dev.mysql.com/doc/refman/5.0/fr/alter-table.html

ATTENTION : cette ligne est un exemple et ne correspond surement pas à ce que tu cherches à faire.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 21 Messages

30 avr. 2007, 11:51

ok ça l'a pris mais j'ai été obligé de supprimer 'AUTO_INCREMENT' sinon j'avais de msg d'erreur : #1063 - Incorrect column specifier for column 'compteur'

voici ce que j'ai maintenant :
Image

ViPHP
ViPHP | 5924 Messages

30 avr. 2007, 12:48

C'est bête d'utiliser un champ varchar pour faire un compteur, utilises plutôt un champ smallint.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 avr. 2007, 15:35

ok ça l'a pris mais j'ai été obligé de supprimer 'AUTO_INCREMENT' sinon j'avais de msg d'erreur : #1063 - Incorrect column specifier for column 'compteur'
ATTENTION : cette ligne est un exemple et ne correspond surement pas à ce que tu cherches à faire.
:roll:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer