La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  Afficher une frame une fois par ip et par jours.
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: Afficher une frame une fois par ip et par jours.  (Lu 810 fois)
Afficher une frame une fois par ip et par jours.
« sur: le 10-12-2006 a 03:47:24 »
Grumos
Membre récent
*

Hors-Ligne

Messages: 3





Voir le Profil    WWW
Répondre avec citation

Bonsoir,
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 :

Code:
<?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 ?

Rapporter au modérateur  

Re:Afficher une frame une fois par ip et par jours.
« Répondre #1 sur: le 10-12-2006 a 22:25:13 »
theonlydrayk
Invité

E-Mail
Répondre avec citation

Plusieurs probleme....

1) Ta table contient 1 entrer par adresse IP.
Alors ta table doit etre PRIMARY KEY(ip).
Une primary key veut dire en gros que il doit etre unique dans la base de donner comme UNIQUE KEY et rajoute un index sur ta row.

2) Dans ton select tu doit rajouter un where;
Code:
SELECT ip,date FROM ip_unique WHERE ip = $ip;

Tu choisit de cette facon 1 seule row. Sinon tu fait la requete de toute la table ca ralenti enormement.

3) Si la date est differente tu fait un truncunate ca efface la table au complet. Tu pert toute tes informations. Tu na aucun besoin de rien effacer.
----

Les etapes de ton script sont a peu pres :

1) Trouve la row dans la table avec un ip identique au clients. C'est MySQL avec SELECT qui fait les comparaison. SI
IP est dans la base de donner 2)
IP n'est pas dans la base de donner : tu affiche un iframe et tu l'ajoute. (MySQL : INSERT)

2) date dans la base de donner est differente de la date actuelle : tu affiche un iframe et tu mets la base de donner a jour (MySQL : UPDATE)
Si la date est egal tu affiche rien et tu ne mets rien a jour.

Rapporter au modérateur  
Re:Afficher une frame une fois par ip et par jours.
« Répondre #2 sur: le 10-12-2006 a 23:14:06 »
Grumos
Membre récent
*

Hors-Ligne

Messages: 3





Voir le Profil    WWW
Répondre avec citation

J'ai essayer sa :
Code:
<?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('ophosff362_site',$db)  or die('Erreur de selection '.mysql_error());

define( _TABLE , 'Ip_Unique' );

$sql = "SELECT Ip,Date FROM " . _TABLE . "";

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

$data = mysql_fetch_assoc($req)

if ($data['Ip'] != $Ip)
   {   
   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_query("INSERT INTO " . _TABLE . " (Ip,Date) VALUES ('$Ip','$Date')'");
   }
   
if ($data['Date'] != $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_query("UPDATE " . _TABLE . " (Date) VALUES ('$Date')'");
   }

mysql_close();

?>

mais cela ne fonctionne pas il affiche toujours l'iframe , aurai-je oublier quelque chose?

Rapporter au modérateur  

Re:Afficher une frame une fois par ip et par jours.
« Répondre #3 sur: le 10-12-2006 a 23:56:56 »
theonlydrayk
Invité

E-Mail
Répondre avec citation

Je crois que tu na pas bien compris comment fonctione une base de donner.

Tes commandes SELECT et UPDATE ont aucun sens.

Quand tu travail sur une base de donner tu travail sur 3 elements.
Base de donner : avec mysql_select_db, ca c'est ok.

Table et la row. Table est un tableaux de donner. Quand tu fait SELECT Ip,Date FROM  TABLE; tu prend le tableaux au complet et non 1 seule colone. Meme chose pour ton UPDATE tu modifie le tableaux au complet.

Ta table est fait comme ceci :

192.168.0.1 10/12/2006
192.168.0.7 9/12/2006
192.168.0.2 7/12/2006
192.168.0.4 2/12/2006

Quand tu fait un "SELECT Ip,Date FROM Ip_Unique;" tu choisit toute la table (4 ensemble de ip,date) et non juste 1 valeur.

$data['Ip'] = "192.168.0.1";
peut importe la valeur de $_SERVER['REMOTE_ADDR'];

Quand tu fait un update tu ecrase toute la Table;

UPDATE Ip_Unique (Date) VALUES ('10/12/2006');
Le contenu de ta table va devenir

192.168.0.1 10/12/2006
192.168.0.7 10/12/2006
192.168.0.2 10/12/2006
192.168.0.4 10/12/2006

Toutes les dates on changer peut importe l'adresse IP

Quand tu fait un SELECT tu doit dire quel ligne de la table tu veut.

SELECT * FROM Ip_Unique WHERE ip = '192.168.0.2';
cette commande la va choisir 1 seule colone
celle que ip est egal a 192.168.0.2;
$data['Ip'] = '192.168.0.2';
$data['Date'] = '7/12/2006';


Meme chose pour le UPDATE :
UPDATE Ip_Unique (Date) VALUES ('$Date') WHERE ip = '192.168.0.2';
Comme ca tu change uniquement la ou les lignes dont ip est egal a 192.168.0.2 sans changer toute la table.

Rapporter au modérateur  
Re:Afficher une frame une fois par ip et par jours.
« Répondre #4 sur: le 05-01-2007 a 12:46:10 »
Grumos
Membre récent
*

Hors-Ligne

Messages: 3





Voir le Profil    WWW
Répondre avec citation

Je te remerci theonlydrayk,
j'ai finalement opté pour le cookie, se script m'énerve telement je veut plus en entendre parler lol. Par les cookies c'est carrément plus simple.
Merci encore pour tes réponses.

Rapporter au modérateur  

Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg