Page 1 sur 1

Compteur de clics

Posté : 16 août 2009, 01:38
par Fredy07
Bonjour,

J'ai un petit problème avec le compteur des pages vues, il doit être incrémenter par 1 mais il s'incrémente par 2.
<?php
echo 'accueil';

################################## select to show the data #######################################
$select_sd = 'SELECT * from sds WHERE id_sd=1';
$result_sd = mysql_query ($select_sd) or die ('Erreur de selection: ' .mysql_error());
$total_sd = mysql_num_rows($result_sd);

if ($total_sd) {
	$row_sd = mysql_fetch_array($result_sd);
		
		$id_sd 			= $row_sd['id_sd'];
		$classement 	= $row_sd['classement'];
		$title_ar 		= $row_sd['title_ar'];
		$title_en 		= $row_sd['title_en'];
		$description 	= $row_sd['description'];
		$url 			= $row_sd['url'];
		$hits 			= $row_sd['hits'];
		
		echo '<br>hits:'.$hits.'<br>';
		echo 'id sd:'.$id_sd.'<br>';

include 'Included_Files/Replacement.php';			

$counter = $hits + 1;

echo 'counter'.$counter.'<br>';
		echo '<div align="center">Page vue: '.$hits.' fois and was generated on xxxx seconds</div><br>';
	
	################################## update the counter for hits #######################################
$update_sd = "UPDATE sds SET hits = $counter WHERE id_sd = 1";
echo $update_sd.'<br>';
$rup_sd = mysql_query($update_sd) OR DIE ('Erreur update: '. mysql_error());
}
?>
merci pour votre aide

Re: Compteur de clics

Posté : 16 août 2009, 09:48
par monintranet
tu pourrais refaire une lecture après l'update pour voir? c'est bizarre ton truc, ça sent la race condition...

Re: Compteur de clics

Posté : 16 août 2009, 19:07
par Ryle
Je n'arrive pas à voir d'où provient ta double incrémentation, mais ta façon de faire n'est pas bonne.. si tu as deux visiteurs qui se connectent simultanément, tu vas écraser ton compteur avec deux fois la même valeur au lieu de l'incrémenter deux fois.

Pour mettre à jour ton compteur, fais le directement en sql, les bases de données savent bien mieux gérer les accès multiples :
$update_sd = "UPDATE sds SET hits = hits + 1 WHERE id_sd = 1";

Re: Compteur de clics

Posté : 17 août 2009, 03:16
par Fredy07
Rebonjour,

Le code est correct et je l'utilise en local, le problème provient du fichier CSS qui charge l'entête de la page et continue le chargement, c'est pour cela que le compteur s'incremente en double.

Merci pour votre aide.