Compter le nombre de visiteurs total

Eléphant du PHP | 141 Messages

24 mars 2009, 12:44

Juste après la création de la requête.
Là tu génère une chaine de caractère ($query) contenant la requête, mais tu ne l'exécute pas...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 mars 2009, 13:00

Euh attends, j'ai un doute je la met où cette requête ?
J'aurai bien une réponse mais bon...
C'est interdit les questions comme ça dans le forum PHP avancé ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 mars 2009, 13:04

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "PHP débutant".


Bien vu @rthur ;)
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

ViPHP
AB
ViPHP | 5818 Messages

24 mars 2009, 22:34

A propos je comprend pas pourquoi dans ta table tu as un champ timestamp et un champ date, cela me semble faire double emploi, pourquoi pas l'un ou l'autre ?
Et puis pour le champ date même remarque que celle que t'as faite Ryle pour le champ timestamp, c'est un mot réservé...

Sinon pour compléter la réponse de Julian si tu ne renseignes que deux champs ta requête devrait ressembler à quelque chose dans le genre
$query = "INSERT INTO visiteur (adresse_ip,timestamp) VALUES ('" . $_SERVER['REMOTE_ADDR'] . "', '" . time() . "')";
Je te l'avais écrite comme cela car il vaut mieux prendre l'habitude d'écrire sa requête dans une variable ce qui permet de l'afficher ensuite pour débuggage en faisant simplement echo $query.
Mais une fois écrite il faut l'exécuter soit directement en faisant mysql_query($query), soit par l'intermédiare d'une variable si tu dois obtenir les résultats d'une requête SELECT par exemple $result = mysql_query($query) :wink:

Notes que je n'avais pas indiqué ni renseigné le champ id_visiteur car puisqu'il est autoincrémenté il va se renseigner tout seul.

Alors ça devrait être résolu, non ?

Eléphant du PHP | 287 Messages

25 mars 2009, 12:05

J'ai fait un truc du genre :
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("voyagez_vol");

$query = "SELECT `id_visiteur`,`adresse_ip`,`timestamp` FROM `visiteur`";
if ($query['nbre_entrees'] == 0)
{
$query =mysql_query('INSERT INTO visiteur VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else
{
    mysql_query('UPDATE visiteur SET timestamp=' . time() . ' WHERE adresse_ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}

// -------
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteur WHERE adresse_ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

// -------
$timestamp_5min = time() - (60 * 5);
mysql_query('DELETE FROM visiteur WHERE timestamp < ' . $timestamp_5min);

// -------
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteur');
$donnees = mysql_fetch_array($retour);

?>

Eléphant du PHP | 141 Messages

25 mars 2009, 12:52

Et ça fonctionne ?

Eléphant du PHP | 287 Messages

25 mars 2009, 14:57

Non toujours pas ...

Eléphant du PHP | 141 Messages

25 mars 2009, 15:39

Tu as remis ta requête d'origine. Il faut reprendre celle de AB

ViPHP
AB
ViPHP | 5818 Messages

25 mars 2009, 16:09

Bon là tu régresse ...

Puisque tu débutes essaies d'écrire tes requêtes de manière décomposée pour mieux comprendre, tu pourras toujours simplifier par la suite.

ainsi ta première requête
$query = "SELECT COUNT(*) AS nbre_entrees FROM visiteur WHERE adresse_ip = '" . $_SERVER['REMOTE_ADDR'] . "'";

$ressource = mysql_query($query);

$tab_result = mysql_fetch_array($ressource);

$nb_entrees = $tab_result['nbre_entrees'];

if ($nb_entrees == 0) 

{

}
Pour la requête que je t'avais montrée (qui doit normalement trouver sa place entre les accolades du code ci-dessus) il suffisait de l'exécuter après l'avoir écrite
$query = "INSERT INTO visiteur (adresse_ip,timestamp) VALUES ('" . $_SERVER['REMOTE_ADDR'] . "', '" . time() . "')"; 

mysql_query($query);

Eléphant du PHP | 287 Messages

25 mars 2009, 16:31

OK, cest bon ça marche !!!
Merci pour votre aide.