[PHP Mysql] Pb affichage unique frame par ip

Fermé
Grumos - 10 déc. 2006 à 04:09
 Grumos - 11 oct. 2007 à 12:15
Bonjour,
J'ai fait un script pour afficher une frame une fois par ip et par jours mais il ne fonctionne pas vraiments. Le script que j'ai fait vide donc la table dès que quelqu'un ouvre la page si la date n'est pas trouvée dans la table pour ensuite afficher la frame et inscrire sont ip dans la base pour normalement ne plus afficher la frame à sa prochaine visite le même jours. Mais je ni arrive pas après plusieurs essaie j'ai arrété sur se script et là il ne veut plus afficher la frame pouriez vous m'aider svp. Voici le script :

<?php 
$Ip = $_SERVER['REMOTE_ADDR'];
$Date = date("d/m/Y");

$db = mysql_connect('localhost', 'login', 'mdp')  or die('Erreur de connexion '.mysql_error());
			 
mysql_select_db('base',$db)  or die('Erreur de selection '.mysql_error());
		
define( _TABLE , 'Ip_Unique' );
		
$sql = "SELECT Ip,Date FROM " . _TABLE . " ORDER BY DATE DESC ";

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

$data = mysql_fetch_assoc($req);

if($data['Date'] != $Date)
	{	
mysql_query("TRUNCATE TABLE " . _TABLE . "");
	}  
	 
if($data['Ip'] != $Ip)
	{	
	mysql_query("INSERT INTO " . _TABLE . " (Ip,Date) VALUES ('$Ip','$Date') WHERE Ip!='".$Ip."'");
	}	
	
if($Ip != $data['Ip'])
	{
	if($Date != $data['Date'])
		{
	echo ("<iframe src='http://www.bonus.grumosweb.fr/PTP2.php' width=0 height=0 MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no></iframe>");
		}
	}
		
mysql_close(); 
 
?>


Me suis-je bien fait comprendre ?
A voir également:

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
11 déc. 2006 à 12:32
Bonjour,

Je pense que ton problème vient du fait que tu ne vérifies que l'IP corresponde à une entrée de ta table que sur un seul enregistrement, le premier renvoyé par mysq_fetch_assoc.
Il faudrait parcourir tout le tableau pour vérifier que l'IP n'y est pas, où, mieux (à mon avis), faire une requête avec l'IP.

Aussi, un WHERE dans une clause INSERT n'est, comment dire... pas franchement habituel...

Voilà ce que je te propose :
<?php 
$Ip = $_SERVER['REMOTE_ADDR'];
$Date = date("d/m/Y");

$db = mysql_connect('localhost', 'login', 'mdp')  or die('Erreur de connexion '.mysql_error());
			 
mysql_select_db('base',$db)  or die('Erreur de selection '.mysql_error());
		
define( _TABLE , 'Ip_Unique' );

// Recherche du nombre d'entrées aujourd'hui (toute IP confondue)
$sql = "SELECT count(*) as entrees_auj FROM " . _TABLE . " WHERE `Date` = '".$Date."'";

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

$data = mysql_fetch_assoc($req);

// Si aucune entrée aujourd'hui, on vide la table
if($data['entrees_auj'] == 0)
{	
	mysql_query("TRUNCATE TABLE " . _TABLE . "");
}  

// Recherche des entrées sur l'IP concernée
$sql = "SELECT count(*) as entrees_ip FROM " . _TABLE . " WHERE `Ip` = '".$Ip."'";

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

$data = mysql_fetch_assoc($req);

// S'il n'y a eu aucune entrée sur cette IP
if($data['entrees_ip'] == 0)
{	
	mysql_query("INSERT INTO " . _TABLE . " (Ip,Date) VALUES ('$Ip','$Date'));

	echo ("<iframe src='http://www.bonus.grumosweb.fr/PTP2.php' width=0 height=0 MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no></iframe>");
}
		
mysql_close(); 
 
?>
Qu'en penses-tu ?

Xavier
0
olalalala, désolé j'avais completement oublier ce post.
Merci à toi Xavier mais j'ai opté pour les cookies enfaite, c'est plus simple.

P.s.: Si un modérateur ou amdin passe par ici, il peut mettre en résolu car je ne peut pas je n'arrive pas à me connecter j'ai surment été supprimé.

Merci encore.

Grumos
0