Problème de php

Fermé
jérémy1664 Messages postés 165 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 3 juillet 2008 - 5 mars 2008 à 16:39
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 - 5 mars 2008 à 17:43
Bonjour,

J'ai réalisé un compteur en suivant un tuto
J'y ai rajouté un id afin d'avoir le nombre total de visite mais il m'affiche toujours qu'un seul visiteur est connecté
On dirait qu'il ne prend pas les ip des visiteurs extérieurs.
Je voulait savoir si c'était un problème dans mon code ou un problème de mon hébergeur.

Je poste mon code :


<?php
// Connexion à MySQL
mysql_connect("localhost:3306", "pascal", "mncqvcjc");
mysql_select_db("gs_computer");

// -------
// ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse ip du visiteur
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
{
	
    mysql_query('INSERT INTO connectes (ip, timestamp) VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
{
    mysql_query('UPDATE connectes 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

// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// -------
// ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);
$retour = mysql_query('SELECT * FROM connectes order by id desc limit 1');
$id     = mysql_fetch_array($retour);

// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
$req = mysql_query('SELECT * FROM connectes');
if (mysql_num_rows($req)>=0){
echo $id['id']. ' visites<br>';
echo 'Vous êtes ' . $donnees['nbre_entrees'] . ' visiteurs actuellement connectés</p>';
}
else {
echo ('');
}
?>



Je fait ensuite un include pour l'appeler dans mon baspage.php

Vous pouvez voir le résultat ici : http://www.gs-computer.eu/index.php?...ociete&lang=fr

J'essaie de changer cette ligne car je ne la comprend pas, je n'ai pas de nbre_entrees dans ma table
<?php if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter

Merci d'avance j'ai vraiment besoin d'aide je comprend pas pourquoi ça ne marche pas<code>Configuration: Windows Vista
Firefox 2.0.0.12 ?>
A voir également:

2 réponses

Utilisateur anonyme
5 mars 2008 à 17:41
Bonsoir,

devant la ligne que tu ne comprends pas ajoutes :
echo "<pre>";print_r($donnees);echo "</pre>";

tu verras alors ce que contient le tableau retour de ta requête

ensuite
tu enlèves les adresse ip dont le timestamp est < 5mn ce laps de temps n'est peut être pas assez long et donc tu enlèves tout sauf toi !
1
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
5 mars 2008 à 17:43
bonjour,

alors déjà je vais modifier un peu le select, le insert et le update

$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip='". $_SERVER['REMOTE_ADDR']."'");


mysql_query("INSERT INTO connectes (ip, timestamp) VALUES('".$_SERVER['REMOTE_ADDR']."', '".time()."') );



mysql_query("UPDATE connectes SET timestamp=". time() ." WHERE ip='".$_SERVER['REMOTE_ADDR']."' );



ensuite pour $donnees['nbre_entrees'], c'est le count(*) qui est nommé nbre_entrees
regarde
SELECT COUNT(*) AS nbre_entrees
AS veut dire ALIAS cad renommé
1