Page 1 sur 1

Compteur de visites en Php

Posté : 20 août 2006, 23:05
par kiss20
Salut

Je suis en train de réaliser un compteur de visites en php mais j'ai un petit problème.
J'ai le message suivant :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.88.699' at line 1
Les chiffres correspondent à mon adresse ip.

Voici maintenant mon script:
<?php
mysql_connect("localhost", "login", "mot_de_passe"); // connexion à  MySQL
mysql_select_db("base_de_donnees"); 


// ETAPE 1 : On verifie si l'IP se trouve dans la table.

$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM compteur WHERE ip= ' . $_SERVER['REMOTE_ADDR']) or die (mysql_error()); // On compte le nombre d'entrées qu'il y a dans le champ "ip".
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // Si l'ip ne se trouve pas dans la table, alors on va l'ajouter.
{
	mysql_query('INSERT INTO compteur VALUES('. $_SERVER['REMOTE_ADDR']. ',' .time() .')');
}
else // Si l'ip  existe déja, on  met à jour le timestamp.
{
	mysql_query('UPDATE compteur SET timestamp= ' .time() . ' WHERE ip= ' .$_SERVER['REMOTE_ADDR']);
}

//ETAPE 2 : On supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.
// Si un visiteur n'a pas chargé de nouvelles pages sur le site depuis plus de 5 minutes alors on considère qu'il est parti.


$timestamp_5min = time() - (60 * 5); // 60*5 =  nombre de secondes ecoulées en 5 minutes.
mysql_query("DELETE FROM compteur WHERE timestamp < $timestamp_5min");


// ETAPE 3 : On compte le nombre d'entrées dans la table

$count = mysql_query("SELECT COUNT(*) AS nbre_connectes FROM compteur");
$donnees = mysql_fetch_array($count);
?>

<p<Il y a actuellement <?php echo $donnees['nbre_connectes'];?> connectés.</p>

<?php
mysql_close();
?>
Si quelqu'un pouvait m'aider, merci d'avance.

Posté : 20 août 2006, 23:28
par aelurus
Une chose a toujours faire je dirais avec les requettes sql c'est de les faire d'abord dans phpmyadmin histoire de voir si c bon en plus tu y trouvera plus d'info

Posté : 20 août 2006, 23:36
par aelurus
mysql_query('INSERT INTO compteur VALUES('. $_SERVER['REMOTE_ADDR']. ',' .time() .')'); 
je pense que c'est dans cette ligne le soucis
"'.$_server['remote'].'"
regarde avec sa si je ne me trompe pas

Posté : 21 août 2006, 09:42
par @rthur
mysql_query('INSERT INTO compteur VALUES('. $_SERVER['REMOTE_ADDR']. ',' .time() .')'); 
je pense que c'est dans cette ligne le soucis
"'.$_server['remote'].'"
regarde avec sa si je ne me trompe pas
Je pense que tu te trompes.

Le problème vient du fait que le champ SQL dans lequel tu stockes l'adresse IP est probablement un varchar ou char. Il faut donc que tu mettes l'ip entre guillemet dans ta requète.

exemple:
mysql_query("SELECT COUNT(*) AS nbre_entrees FROM compteur WHERE ip= '" . $_SERVER['REMOTE_ADDR']."'") or die (mysql_error());
idem pour les autres requêtes :)

Posté : 21 août 2006, 09:54
par aelurus
Ha oui autant pour moi mauvais sens pour les guillemet :'(

Posté : 21 août 2006, 10:09
par @rthur
Ha oui autant pour moi mauvais sens pour les guillemet :'(
Ah je croyais que ta réponse était pour le nom de la variable (remote au lieu de remote_addr) et non pour les guillemets!

Posté : 21 août 2006, 10:17
par aelurus
Ha non du tout j'ai pas recopié le meme nom de variable c tout ^^ je ferais gaff le prochain coup:), par contre j'avais pas fait le raprochement avec le type du champ de la table

Posté : 21 août 2006, 16:17
par kiss20
Merci à tous pour votre aide.
Tu avais raison arthur, le problème venait des guillemets.
Je te remercie.