IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème sauvegarde dans bdd [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 23
    Points
    23
    Par défaut Problème sauvegarde dans bdd
    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

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    C'est en effet assez bizard. Tu peux tester la valeur de ces variables : $nown $allIp2['timestamp']) et $unJourPlusTard pour être sure qu'elle sont conforme à ce qu'elle devrait être. C'est peut être un problème d'heure du serveur
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    Merci pour ta réponse
    je viens de comprendre d'où venait mon erreur

    En fait, je récupère la mauvaise ip ( la 1ère de la bdd )
    et en local, il n'y avait pas de soucis, car c'était toujours la même

    Je vais essayer de voir d'où ça peut bien venir


    Edit : je récupérais tout simplement les mauvaises informations
    Merci, et désolè pour le dérangement inutile.
    J'ai cherché pendant longtemps, pour une erreur plus que bête

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème insertion dans BDD
    Par sky88 dans le forum JSF
    Réponses: 4
    Dernier message: 23/06/2011, 10h56
  2. problème de sauvegarde la bdd dans l'emplacement sélectionnée?
    Par salimo79 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/03/2011, 11h46
  3. Réponses: 9
    Dernier message: 11/06/2007, 16h58
  4. Problème insertion dans bdd access. Via VB express 2005
    Par Frosaf dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/06/2007, 18h19
  5. Problème Insert dans bdd Access
    Par waterman dans le forum Windows Forms
    Réponses: 10
    Dernier message: 10/04/2007, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo