par
zeus » 19 mars 2007, 23:13
Alors, tout d'abord, penses bien à l'incrémentation et au commentaires, c'est super important pour la lisibilité et la maintenance, particulièrement sur un forum
Ensuite, j'ai remarqué quelques points que je ne comprend pas ... cf //--- CONSEIL --- dans le code
Sinon, voici un exemple ré-indenté et commenté selon ce que j'en ai compris
<?php
// Connexion à la base de données
$connexion = mysql_connect("...","...","...");
mysql_select_db("...");
//Récupération des données
$delai = 300;
$maintenant = time();
$adresse_ip = $_SERVER['REMOTE_ADDR'];
//Vérification de la présence de cette IP dans le compteur
//--- CONSEIL --- Il faut éviter le SELECT * ...
$res = mysql_query("SELECT * FROM compteur WHERE ip=' ".$_SERVER['REMOTE_ADDR']." ' ");
$row = mysql_fetch_array($res);
//Si cette IP n'existe pas, INSERTION
//--- CONSEIL --- Quelle est l'utilité de la comparaison avec le champ "ip", préférer mysql_num_rows() ?
if ( $row['ip'] = "" ) {
//--- CONSEIL --- Pourquoi un INSERT suivi d'un UPDATE dans la meme table ???
mysql_query("INSERT INTO compteur (ip, temps) VALUES ('".$_SERVER['REMOTE_ADDR']."', '".time()."'");
mysql_query('UPDATE compteur SET nombre = nombre + 1 WHERE id = 1');
// Cette IP existe dans la table
} else {
//Si la temporisation n'est pas écoulée, mise à jour du dernier accès
if ( (time() - $row['temps']) < $delai) {
mysql_query("UPDATE compteur SET temps = '".time()."' WHERE ip = '".$_SERVER['REMOTE_ADDR']. "'");
//Si la temporisation est écoulée, incrémentation du nombre de visites
} else {
mysql_query('UPDATE compteur SET nombre = nombre + 1 WHERE id = 1');
mysql_query("UPDATE compteur SET temps = '" .time(). "' WHERE ip = '" .$_SERVER['REMOTE_ADDR']."'");
}
}
//Vérification du compteur
$sql = "SELECT * FROM compteur WHERE id = 1";
$result = mysql_query($sql);
$row2 = mysql_fetch_assoc($result);
echo "compteur= ".$row2['nombre'];
?>
Alors, tout d'abord, penses bien à l'incrémentation et au commentaires, c'est super important pour la lisibilité et la maintenance, particulièrement sur un forum ;)
Ensuite, j'ai remarqué quelques points que je ne comprend pas ... cf //--- CONSEIL --- dans le code
Sinon, voici un exemple ré-indenté et commenté selon ce que j'en ai compris
[php]<?php
// Connexion à la base de données
$connexion = mysql_connect("...","...","...");
mysql_select_db("...");
//Récupération des données
$delai = 300;
$maintenant = time();
$adresse_ip = $_SERVER['REMOTE_ADDR'];
//Vérification de la présence de cette IP dans le compteur
//--- CONSEIL --- Il faut éviter le SELECT * ...
$res = mysql_query("SELECT * FROM compteur WHERE ip=' ".$_SERVER['REMOTE_ADDR']." ' ");
$row = mysql_fetch_array($res);
//Si cette IP n'existe pas, INSERTION
//--- CONSEIL --- Quelle est l'utilité de la comparaison avec le champ "ip", préférer mysql_num_rows() ?
if ( $row['ip'] = "" ) {
//--- CONSEIL --- Pourquoi un INSERT suivi d'un UPDATE dans la meme table ???
mysql_query("INSERT INTO compteur (ip, temps) VALUES ('".$_SERVER['REMOTE_ADDR']."', '".time()."'");
mysql_query('UPDATE compteur SET nombre = nombre + 1 WHERE id = 1');
// Cette IP existe dans la table
} else {
//Si la temporisation n'est pas écoulée, mise à jour du dernier accès
if ( (time() - $row['temps']) < $delai) {
mysql_query("UPDATE compteur SET temps = '".time()."' WHERE ip = '".$_SERVER['REMOTE_ADDR']. "'");
//Si la temporisation est écoulée, incrémentation du nombre de visites
} else {
mysql_query('UPDATE compteur SET nombre = nombre + 1 WHERE id = 1');
mysql_query("UPDATE compteur SET temps = '" .time(). "' WHERE ip = '" .$_SERVER['REMOTE_ADDR']."'");
}
}
//Vérification du compteur
$sql = "SELECT * FROM compteur WHERE id = 1";
$result = mysql_query($sql);
$row2 = mysql_fetch_assoc($result);
echo "compteur= ".$row2['nombre'];
?>[/php]