demande aide pour corriger mon compteur - PHP - Programmation
Marsh Posté le 09-09-2008 à 23:20:27
Pourquoi tu ne fais pas un "select ip from colone where ip = '".$IPClient."'" 
puis un mysql_num_rows() 
 
Si 0 -> insert 
 
Puis pour compter tu fais un mysql_insert_id() si tu as du insérer sinon un max() sur l'id
Marsh Posté le 10-09-2008 à 00:33:34
bon, ca marchait avec des sessions 
 
| Code : 
 | 
 
mais il faut faire appel aux sessions 
bon courage
Marsh Posté le 10-09-2008 à 07:41:10
merci de vos aide  
  
 
par contre je mettrais les sessons plus tard je veux juste que si un visiteur inconnue clique ma page le compteur s''incrémente  
comme je débute en programmation donc je ne comprend pas cette ligne que tu me mets corben	Pourquoi tu ne fais pas un "select ip from colone where ip = '".$IPClient."'"  
php a dire de pointer ma colonne ip de ma base de donné il va lui dire que cette variable sera  = $IPclient 
lorsque il aura compter le nombre d'entré ip et que si il est égal 0 le compteur va ajouté a la base le nouveau venu ? 
ma base ne contient que le champs ip faut t'il que je crée un champs supplementaire id?
Marsh Posté le 10-09-2008 à 09:04:35
ha non c'est juste un check qui regarde si il y a un enregistrement dans la table avec cette ip. 
Puis on regarde combien d'enregistrements sont retournés. 
Si 0 -> on insère. 
Et si tu pouvais appeler ta table autrement que 'colone', ce serait super, ça perturbe pas mal 
Marsh Posté le 10-09-2008 à 09:57:02
implémente un temps aussi, et une requête qui nettoie les vieilles entrées sinon ta table va se remplir.. 
Marsh Posté le 10-09-2008 à 11:56:01
ok donc cette phrase fait tous , il vérfie et compare  
  
donc je metterais ce srcipt: 
 
--------------------------------------------------------------------------------------------------------------------- 
<?php 
mysql_connect("localhost", "root", "" ); // Connexion à MySQL 
mysql_select_db("mabase" ); // Sélection de la base coursphp 
$IPclient= $_SERVER['REMOTE_ADDR'] ;//$IPclient sera l'ip du client   
 
echo $IPclient; 
mysql query"select ip from monchampIP where ip = '".$IPClient."'" ; 
if (ip ==0) 
{ 
echo different_enregistre; 
  
mysql_query ("INSERT INTO monchampiP (ip) VALUES ('$IPclient')" );//on met l'adresse ip dans la base de donnée 
} 
$IPcompt="SELECT ip FROM colonne"; 
$resultat=mysql_query ($IPcompt); 
$nb_IP=mysql_num_rows($resultat); 
mysql_close(); // Déconnexion de MySQ 
echo '<p> ' . $nb_IP . ' visiteurs on visité le site !</p>'; 
 
Marsh Posté le 10-09-2008 à 12:27:44
non, un truc du genre : 
 
$tutu = mysql_query("select"...); 
$toto = mysql_num_rows($tutu); 
if ($toto == 0)  
{ 
  mysql_query("insert"...); 
  $tata = mysql_insert_id(); 
} 
else 
{ 
 $tata = mysql_query("select MAX(id)"...); 
} 
echo $tata." visiteurs"; 
et il te faut un champ id en primary key évidement 
Marsh Posté le 10-09-2008 à 12:28:56
merci pour le renseignement  
  
je testerais tous ca se soir chez moi
Marsh Posté le 10-09-2008 à 12:56:24
fais gaffe parce que si tu fais autant de fautes en codant qu'en écrivant, ça va planter 
Marsh Posté le 10-09-2008 à 12:58:39
je vais d'abord crée dans ma base de donné le champs ip un "id" auquel je mettrerait comme option varchar et aut0 incremente id 
donc est ce que le script est: 
 
 
$tutu=mysql query("select ip from monchampIP where ip = '$IPClient'" ); //vérifie juste si $IPclient se trouve dans monchampip. 
$toto = mysql_num_rows($tutu); 
if ($toto == 0)   
{ 
  mysql_query("INSERT INTO monchampIP (ip) VALUES ('$IPclient')" );// ajouté dans le champIP la valeur $IPCLIENT 
  $tata = mysql_insert_id()// ajouter un +1 à l'id 
} 
else 
{ 
 $tata = mysql_query("select monchampIP(id)" ); //selection monchampIP, recupéré la valeur de l'id final 
} 
echo $tata." visiteurs";//affihe le nombre l'id qui est me nombre de visiteur
Marsh Posté le 10-09-2008 à 14:09:40
Ben... essaie  
 
 
Plus sérieusement, je pense que ce serait plutot: 
| Code : 
 | 
 
 
J'ai volontairement enlevé le mysql_insert_id car pour la raison suivante: 
 
si tu fais un delete du dernier enregistrement de la table (id = n) et qu'ensuite, tu retournes sur cette page... l'id suivant sera n+1, alors que tu n'auras que n enregistrements dans la base. 
 
J'espere avoir été clair 
Marsh Posté le 10-09-2008 à 19:22:08
si t'as recopié le code juste au dessus, ça ne risque pas de bouger c'est clair.
Marsh Posté le 10-09-2008 à 19:30:45
finalement ca n'a pas marché   
 
faut que je reprend la ou j'ai été   
 
Marsh Posté le 10-09-2008 à 20:12:33
j'ai repris le script ligne par ligne.peut-ton créer un nouveaux champs sur ma tableIP avec php admin?jai vu qu'on peut crée une nouvelle table , ou dois-crée une nouvelle table et mettre mes 2 champ IPvisit et id.? 
_____________________________________________________ 
<?php 
mysql_connect("localhost", "root", "" ); // Connexion à MySQL 
mysql_select_db("keokazwkkz" ); // Sélection de la base coursphp 
$IPclient= $_SERVER['REMOTE_ADDR']; 
$tutu=mysql_query("select ip from monchampIP where ip = '$IPClient'" ); //vérifie juste si $IPclient se trouve dans monchampip.  
$toto = mysql_num_rows($tutu);  
if ($toto == 0)   
{ 
  mysql_query("INSERT INTO colonne (ip) VALUES ('$IPclient')" );// ajouté dans le champIP la valeur $IPCLIENT 
  $tata = mysql_insert_id()// ajouter un +1 à l'id 
}  
?>
Marsh Posté le 10-09-2008 à 21:27:44
| Code : 
 | 
 
 
Le sql est le suivant :  
 
| Code : 
 | 
 
 
Code testé sous php 5.2 / mysql 5. 
Pense a activer l'error reporting quand tu code, regarde également var_dump / print_r pour debuger tes script. 
Le code que j'ai fourni est fonctionnel mais non sécurisé (aucune protection sql...) et _largement_ optimisable (utilisation de mysqli ou sqlite). 
 
Sinon si tu ne veux pas t'embêter Google Analytics ^^. 
 
Tiens nous au courant 
Marsh Posté le 10-09-2008 à 21:32:13
merci pour l'info mais ya des pub avec google? 
Version du serveur: 5.0.44-log 
 
enfait quant je crée une table je dois saisir obligatoirement myisam? car j'ai laissé par défaut 
 
je test ton script: 
(comment fait ton pour mettre tous le script dans une fenêtre comme ci dessus?? 
 
-----------------------------------------------------------------------------------------------------------------------<?php 
  
 
 
 /* 
   3. * Connexion à MySQL 
   4. */ 
   mysql_connect('', '', ''); 
   mysql_select_db(''); 
   
   /* 
   9. * On cherche en base si l'ip est présente 
  10. */ 
  $res = mysql_query('SELECT ip FROM `nbre_ip` WHERE ip LIKE "'.$_SERVER['REMOTE_ADDR'].'";'); 
  $records = mysql_num_rows($res); 
   
   /* 
  15. * Si le tableau est vide alors on insert la nouvelle ip en base 
  16. */ 
   if ($records == 0)  
   { 
     mysql_query('INSERT INTO `nbre_ip` (ip) VALUES ("'.$_SERVER['REMOTE_ADDR'].'" );' ); 
  } 
 $IPcompt="SELECT ip FROM nbre_ip"; 
$resultat=mysql_query ($IPcompt); 
$nb_IP=mysql_num_rows($resultat); 
mysql_close(); // Déconnexion de MySQ 
echo '<p> ' . $nb_IP . ' visiteurs on visité le site !</p>'; 
 ?>
Marsh Posté le 10-09-2008 à 21:51:15
il faudrait que quelqu'un entre dans http://keokaz.fr/ 
pour testé le compteur essayé de clquer plusieur fois sur refresh 
donc sur mysql j'ai refait une base de donnée 
j'ai mis 2 champs: 
1 champs id en auto incremente en mediumint 
1 champs qui s'appelle nbre_ip sa sera plus simple a reconaitre en  varchar limité a 15 caractère 
pour les erreur "regarde également var_dump / print_r pour debuger tes script. " c'est ou dans php admin??
Marsh Posté le 10-09-2008 à 22:05:11
ca l'aire de fonctoiner  j'était a 2 visiteurs maintenant je suis a3 visiteurs je suis allé sur php admin pour voir les numéro ip et la suprise y en a 3 différentes!! pas des tonne de ip identiques!!!
 j'était a 2 visiteurs maintenant je suis a3 visiteurs je suis allé sur php admin pour voir les numéro ip et la suprise y en a 3 différentes!! pas des tonne de ip identiques!!! 
merci pour le scritp même s'il n'est pas encore sécurisé je me pencherais plus tard il me faut maintenant continuer mon site je voulais d'abord metre le compteur en route  
   
 
 
maintenant j'ai une autre question   
  
jai mis mon compteur php dans l'index, comment faut t'il faire pour le mettre dans un autre fichier php? 
et comment bouger le nombre de visite car je sais faire un lien mais ca reste fixe   
 
Marsh Posté le 10-09-2008 à 22:09:42
| Citation : enfait quant je crée une table je dois saisir obligatoirement myisam? car j'ai laissé par défaut  | 
 
Pour myisam, c'est un moteur de mysql et accessoirement le plus performant (sur la version 5) en lectures / écritures simple. 
 
| Citation : (comment fait ton pour mettre tous le script dans une fenêtre comme ci dessus??  | 
 
Pour les balises, j'utilise le bouton c/c++ ou les balise cpp ... 
 
| Citation : "regarde également var_dump / print_r pour debuger tes script. " c'est ou dans php admin?? | 
 
Sur php.net  
 
 
Apparemment ça marche (4 visiteurs) ^^. 
 
Très important également oublie pas : 
| Code : 
 | 
 
à la fin de ton script, pour fermer la connexion mysql quand tu ne l'utilise plus.
Marsh Posté le 10-09-2008 à 22:11:28
| Citation : maintenant j'ai une autre question   | 
 
 
include / require / include_once / require_once 
 
Regarde également du coté des fonctions / objets 
Marsh Posté le 10-09-2008 à 22:14:59
merci ces info  
 j'ai mis close sql avant echo .. 
mysql_close(); // Déconnexion de MySQ 
echo '<p> ' . $nb_IP . ' visiteurs on visité le site !</p>'; 
  
mais il est mal placé??
Marsh Posté le 11-09-2008 à 12:39:52
Tu dois fermer ta connexion mysql a partir du moment ou tu ne t'en sert plus. 
 
Si tu n'as plus d'autre requêtes dans ta page tu peux la fermer.
Marsh Posté le 09-09-2008 à 21:57:16
salut tous, je suis entrain de crée mon site internet en php
j'ai essayé de faire un compteur malheuresement il fonctionne a moitié voici que je fait:
j'enregistre l'ip du visiteur
je scrute toutes les lignes de ma base de donné qui s'appelle ip
je fait une comparaison, si ip n'existe pas enregistre son ip dans ma base de donnée
je fait un calcul du nombe de ip
et enfin j'affiche le résultat
mon problème c'est que a chaque fois que je rentre dans mon site il incrément de 1 or il dervrait connaitre mon ip et ne pas incrémenté
voici mon script:
-------------------------------------------------------------------------------------------------------------------------------
<?php
mysql_connect("localhost", "root", "" ); // Connexion à MySQL
mysql_select_db("mabase" ); // Sélection de la base coursphp
$IPclient= $_SERVER['REMOTE_ADDR'] ;//$IPclient sera l'ip du client
$reponse = mysql_query("SELECT ip FROM colonne" ); // Requête SQL
echo $IPclient;
while ($donnees = mysql_fetch_array($reponse) );
if ($donnees['ip']!=$IPclient);
{
echo different_enregistre;
mysql_query ("INSERT INTO colonne (ip) VALUES ('$IPclient')" );//on met l'adresse ip dans la base de donnée
}
$IPcompt="SELECT ip FROM colonne";
$resultat=mysql_query ($IPcompt);
$nb_IP=mysql_num_rows($resultat);
mysql_close(); // Déconnexion de MySQ
echo '<p> ' . $nb_IP . ' visiteurs on visité le site !</p>';
?>