Bonjour à tous

j'ai un étrange problème :
j'ai un script qui me sauvegarde l'adresse ip du visiteur
seulement si ce dernier n'est pas venu durant les X dernières heures
(en locurrence 6h)
Sinon, il met à jour l'ip du visiteur en modifiant le timestamp
Mon script marche en Local, mais sur free, il ne fait pas de UPDATE,
mais que des INSERT ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
//represente le nombre d heures avant que l ip ne soit REenregistree
define('Nbdheures','6');
 
//on sauvegarde une seule ip par 6h
function saveIp(){
 
	connexionBase();
 
/*fonction située dans le meme fichier qui renvoie l ip du visiteur*/
	$IpVisiteur=getIP(); 
 
	$allIp1 = @mysql_query("SELECT * FROM visiteurs") or die( 'Erreur MySQL' );;
	$allIp2 = @mysql_fetch_assoc($allIp1);
 
 
	$req1 = @mysql_query("SELECT COUNT(*) AS nbre_entrees FROM visiteurs WHERE ip='".$IpVisiteur."'") or die( 'Erreur MySQL' );
 
 
	$now = time();
	$unJourPlusTard=Nbdheures*3600;	// 6h plus tard
 
 
	if((mysql_result($req1, 0))==0){
		//si l'ip n existe pas, cela signifie qu il s agit d un nouveau visiteur, donc on stocke son IP
		@mysql_query("INSERT INTO visiteurs VALUES('','".$IpVisiteur."','".$now."')") or die( 'Erreur MySQL' );
	}
	//sinon, cela signifie que l ip est presente dans la base
	//deux possibilites sont alors possibles : la derniere visite remonte a plus d un jour
	//auquel cas, on rajoute l ip, soit, l ip remonte a moins d un jour, alors, on fait une MAJ du timestamp
 
 
	elseif(($now-$allIp2['timestamp'])<=$unJourPlusTard){
			//echo '<h2>Mis a jour</h2>';
		$identifiant=$allIp2['id'];
		@mysql_query("UPDATE visiteurs SET timestamp='".$now."' WHERE ip='".$IpVisiteur."' AND id='".$identifiant."'") or die( 'Erreur MySQL' );
		}
	else {
		@mysql_query("INSERT INTO visiteurs VALUES('','".$IpVisiteur."','".$now."')") or die( 'Erreur MySQL' );
	}
 
 
	@mysql_close() or die( 'Erreur MySQL' );;
}
ma base est composée des champs suivants :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
id 	int(11)	 	 	Non 	 	auto_increment 	 	 	 	 	 	 
ip 	varchar(15)	latin1_swedish_ci	 	Non 	 	 	 	 	 	 	 	 
timestamp 	int(11)	 	 	Non 	0
Sur free, lors de ma 1ère visite, je rentre dans le 1er if,
si je fais F5, je passe dans le dernier else
Contrairement à en local, ou je serai passé dans le elseif

J'espère que je suis assez clair