Page 1 sur 2
compteur de visite sur page dynamique
Posté : 25 avr. 2007, 18:35
par titi63
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?
Posté : 25 avr. 2007, 19:06
par Hubert Roksor
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.
Posté : 26 avr. 2007, 09:20
par titi63
Salut Hubert Roksor et merci de ta reponse.
Oui ça m'irais bien ça.
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

Posté : 26 avr. 2007, 09:35
par regne
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
Posté : 26 avr. 2007, 10:09
par Ryle
Pas besoin de venir lire le nombre en base pour l'incrémenter, il suffit de faire un update du champ + 1
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

Posté : 26 avr. 2007, 10:10
par regne
autant pour moi...
Mais c'est vrai que moi je l'affiche le nombre sur ma page...
Posté : 26 avr. 2007, 12:04
par Sékiltoyai
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.
Posté : 26 avr. 2007, 13:45
par titi63
Pas besoin de venir lire le nombre en base pour l'incrémenter, il suffit de faire un update du champ + 1
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
Posté : 30 avr. 2007, 09:29
par titi63
En fait j'aimerais que soit affiché sur chaque annonce :
cette annonce à été vue xx fois.
Posté : 30 avr. 2007, 09:39
par zeus
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
Posté : 30 avr. 2007, 10:01
par titi63
Merci zeus pour ta réponse
Quelle serait la ligne de commande pour ajouter le champ compteur à ma table?
Posté : 30 avr. 2007, 10:15
par zeus
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.
Posté : 30 avr. 2007, 11:51
par titi63
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 :

Posté : 30 avr. 2007, 12:48
par Sékiltoyai
C'est bête d'utiliser un champ varchar pour faire un compteur, utilises plutôt un champ smallint.
Posté : 30 avr. 2007, 15:35
par zeus
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.
