Compter le nombre de visiteurs total

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Compter le nombre de visiteurs total

par Romuald632 » 25 mars 2009, 16:31

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

par AB » 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);

par julian » 25 mars 2009, 15:39

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

par Romuald632 » 25 mars 2009, 14:57

Non toujours pas ...

par julian » 25 mars 2009, 12:52

Et ça fonctionne ?

par Romuald632 » 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);

?>

par AB » 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 ?

par zeus » 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 ;)

par @rthur » 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é ;)

par julian » 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...

par Romuald632 » 24 mars 2009, 12:31

Euh attends, j'ai un doute je la met où cette requête ?

par julian » 24 mars 2009, 12:18

EDIT : Hey mais attends ! Il faut faire mysql_query($query); si tu veut qu'elle soit exécutée !!!

par Romuald632 » 24 mars 2009, 12:09

En faisant comme ça en faisant la requête dans phpMyadmin c'est ok ça enregistre

par julian » 24 mars 2009, 11:57

Remplace
if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
{
$query="INSERT INTO visiteur (id_visiteur,adresse_ip,timestamp) VALUES ('','" . $_SERVER['REMOTE_ADDR'] . "', '" . time() . "')";
} 
par
if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
{
$query="INSERT INTO visiteur (id_visiteur,adresse_ip,timestamp) VALUES ('','" . $_SERVER['REMOTE_ADDR'] . "', '" . time() . "')";
echo $query;
}
else echo "nok";
die();
Il devrait t'afficher la requête, que tu colles dans phpMyAdmin pour avoir plus d'infos s'il y a une erreur.
S'il t'affiche "nok" c'est que tu ne rentre pas dans la condition d'ajout, donc problème sur la première requête (à priori)


EDIT : Hey mais attends ! Il faut faire mysql_query($query); si tu veut qu'elle soit exécutée !!!

par @rthur » 24 mars 2009, 11:55

je n'ai rien qui s'enrigistre dans ma table...
Je vous remet mon code :
if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
{
$query="INSERT INTO visiteur (id_visiteur,adresse_ip,timestamp) VALUES ('','" . $_SERVER['REMOTE_ADDR'] . "', '" . time() . "')";
}
Et en exécutant ta requête INSERT avec un mysql_query? :D