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

Langage PHP Discussion :

mysql : requête invalide


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut mysql : requête invalide
    Bonsoir, j'utilise un code PHP de compteur de visite : il marche bien sur un serveur en PHP4 (Free) mais pas sur un serveur en PHP5. Mais le problème, c'est que je ne le comprends pas donc ne peut pas le corriger :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    <?
    include("../visite/connect_visite.php") ;
    
    //on recupere l adresse ip du visiteur
    if($_SERVER) 	{
      			if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
          				$adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
        			elseif(isset($_SERVER['HTTP_CLIENT_IP']))
          				$adress = $_SERVER['HTTP_CLIENT_IP'];
        			else
          				$adress = $_SERVER['REMOTE_ADDR'];
      		}
     else 		{
        			if(getenv('HTTP_X_FORWARDED_FOR'))
          				$adress = getenv('HTTP_X_FORWARDED_FOR');
        			elseif(getenv('HTTP_CLIENT_IP'))
          				$adress = getenv('HTTP_CLIENT_IP');
        			else
          				$adress = getenv('REMOTE_ADDR');
      		}
    
    //on verifie si on a pas changé de jour et on recupere le chiffre du compteur
    $sql="select * from compteur_visite where ip='compteur'";
    $res=mysql_query($sql, $db);
    $ligne = mysql_fetch_object ($res);
    $date = date("Y-m-d");
    
    //on convertit l heure courante en minute d une journee
    $time=(date("H") * 60) + date("i");
    
    //on recupere le compteur courant et le temps t
    $compteur=$ligne->compteur;
    $t=$ligne->time; //temps de connexion de reference
    $d=$ligne->duree; //duree de renouvellement de reference
    
    //on test si on a changé de jour
    if ($date!="$ligne->date")
    {
    	//on vide toutes les addresses ip enregistrées dans la table lors du changement de jour
    	$sql="delete from compteur_visite where ip!='compteur'";
    	$res=mysql_query($sql, $db) or die ("requete invalide supp ip");
    	//on met a jour la nouvelle date dans la table
    	$sql="update compteur_visite set date='$date'";
    	$res=mysql_query($sql, $db) or die ("requete invalide maj date");
    }
    
    //on verifie l adresse ip du visiteur et aussi son heure de passage
    $sql="select * from compteur_visite where ip='$adress'";
    
    $res=mysql_query($sql, $db) or die ("requete invalide verif ip");
    $ligne = mysql_fetch_object ($res);
    $num_rows =mysql_numrows ($res);
    if ($num_rows==0)
    {
    	//on enregistre l adresse ip si elle est inconnu et on incremente le compteur
    	$sql="insert into compteur_visite (ip,time,duree) values ('$adress','$time','$time')";
    	$res=mysql_query($sql, $db)or die ("requete invalide enr ip");
    	$compteur+=1;
    	$sql="update compteur_visite set compteur=$compteur where ip='compteur'";
    	$res=mysql_query($sql, $db) or die ("requete invalide up compt");
    }
    else
    {
    	//si l'adresse ip est connu alors verifie si sa connexion precedente est superieur a la durée
    	//de renouvellement et si son heure de passage precedente incremente ou pas les connectés
    	$time1=$ligne->time; //on recupere l'heure de sa precedente connexion de notre connecté
    	$duree1=$ligne->duree; //on recupere l'heure de sa precedente connexion de notre connecté
    	
    	// on verifie si sa derniere connexion ne date pas de plus que la duree de reference
    	if ($d*60<($time - ($duree1)))
    	{
    		//si la duree de reference est depassé alors notre connecté est comptablisé 
    		//comme nouvelle visite et on met a jour sa nouvelle heure de passage
    		$sql="update compteur_visite set time=$time,duree=$time where ip='$adress'";
    		$res=mysql_query($sql, $db) or die ("requete invalide maj time");
    		
    		//on cree une ligne fictive pour pouvoir le comptabilisé dans les connectés de jour
    		$adress1=$adress.".".$compteur;
    		$sql="insert into compteur_visite (ip,time,duree) values ('$adress1','$time','$time')";
    		$res=mysql_query($sql, $db)or die ("requete invalide enr ip");
    		
    		//et on increment le compteur de visite
    		$compteur+=1;
    		$sql="update compteur_visite set compteur=$compteur where ip='compteur'";
    		$res=mysql_query($sql, $db) or die ("requete invalide up compt");
    	}
    	else
    	{
    		//on met a jour son heure de passage si elle est superieure a t
    		if ($time>(($time1)-$t))
    		{
    			$sql="update compteur_visite set time=$time where ip='$adress'";
    			$res=mysql_query($sql, $db) or die ("requete invalide maj time");
    		}
    	}
    }
    
    
    //on compte le nb de connecté de la journée
    $sql="select * from compteur_visite";
    $res=mysql_query($sql, $db) or die ("requete invalide compte visiteur journee");
    $compteur_j=(mysql_numrows ($res))-1;
    
    //on compte le nb de connecté
    $time=$time-$t;
    $sql="select * from compteur_visite where time>=$time and ip!='compteur'";
    $res=mysql_query($sql, $db) or die ("requete invalide compte visisteur connecté");
    $compteur_c=mysql_numrows ($res);
    mysql_free_result($res);
    mysql_close();
    ?>
    outre qu'il est en "mysql_" et non en "mysqli_", je ne comprends pas ce qui est en rouge.

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Bonjour,

    Ça paraitrait logique que ce soit $adresse au lieu de 'compteur' puisqu'auparavant tu récupères l'adresse IP du visiteur et que tu cherches dans la table par rapport à 'ip'

    tu peux faire
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $res=mysql_query($sql, $db) or die(mysql_error());
    pour voir l'erreur que te retourne mysql

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Merci pour ta réponse et j'avais pensé la même chose que toi (déjà essayé : $sql="select * from compteur_visite where ip!='".$adress."'";) mais même message d'erreur et même si je remets le code initial et que je rajoute or die(mysql_error()), ça n'appelle pas die, ...

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Merci pour ta réponse et j'avais pensé la même chose que toi (déjà essayé : $sql="select * from compteur_visite where ip!='".$adress."'";) mais même message d'erreur et même si je remets le code initial et que je rajoute or die(mysql_error()), ça n'appelle pas die, ...
    Ah bon, mais c'est quoi le message d'erreur que tu as ?
    Tu n'en as pas parlé dans ton premier post.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 154
    Par défaut
    Dans ta table compteur_visite tu as bien un enregistrement dont le champ ip est 'compteur'?
    Ça me semble assez tordu et plutôt mal fichu mais bon apparemment c'est un enregistrement de la table qui sert pour le décompte.

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Je vais préciser et de plus, j'ai fait de nouveaux essais : j'ai tout passé en "mysqli_", modifié les 2 mots-clé PHP de la table "compteur_visite" (date->date1 et time->time1), remplacé partout 'compteur' par $adress et rajouté des echo dans le code, et du coup, plus de message d'erreur mais mes echo me prouvent que ce script s'arrête avant la fin (à sa fin, il y a des echo, et on ne les voit pas) et pire mon echo en rouge n'est pas exécuté alors que celui en vert l'est

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    <?php
    include("../visite/connect_visite.php") ;
    
    
    //on recupere l adresse ip du visiteur
    if($_SERVER) 	{
      			if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
          				$adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
        			elseif(isset($_SERVER['HTTP_CLIENT_IP']))
          				$adress = $_SERVER['HTTP_CLIENT_IP'];
        			else
          				$adress = $_SERVER['REMOTE_ADDR'];
      		}
     else 		{
        			if(getenv('HTTP_X_FORWARDED_FOR'))
          				$adress = getenv('HTTP_X_FORWARDED_FOR');
        			elseif(getenv('HTTP_CLIENT_IP'))
          				$adress = getenv('HTTP_CLIENT_IP');
        			else
          				$adress = getenv('REMOTE_ADDR');
      		}
    echo "IP=".$adress."<br/>";
    
    //on verifie si on a pas changé de jour et on recupere le chiffre du compteur
    $sql="select * from compteur_visite where ip!='".$adress."'";
    
    $res=mysqli_query($id_conni,$sql)or die(mysql_error());
    $ligne = mysqli_fetch_object($res);
    echo "sql=".$sql."<br/>";
    $date = date("Y-m-d");
    
    //on convertit l heure courante en minute d une journee
    $time=(date("H") * 60) + date("i");
    
    //on recupere le compteur courant et le temps t
    $compteur=$ligne->compteur;
    $t=$ligne->time1; //temps de connexion de reference
    $d=$ligne->duree; //duree de renouvellement de reference
    
    
    //on test si on a changé de jour
    if ($date!=$ligne->date1)
    {
    	//on vide toutes les addresses ip enregistrées dans la table lors du changement de jour
    	$sql="delete from compteur_visite where ip!='".$adress."'";
    	$res=mysqli_query($id_conni,$sql) or die ("requete invalide supp ip");
    	//on met a jour la nouvelle date dans la table
    	$sql="update compteur_visite set date1='$date'";
    	$res=mysqli_query($id_conni,$sql) or die ("requete invalide maj date");
    }
    
    //on verifie l adresse ip du visiteur et aussi son heure de passage
    $sql="select * from compteur_visite where ip='".$adress."'";
    echo "avant verif IP sql=".$sql."<br/>";
    $res=mysqli_query($id_conni,$sql) or die ("requete invalide verif ip");
    $ligne = mysqli_fetch_object ($res);
    $num_rows =mysqli_numrows ($res);
    echo "num-rows=".$num_rows."<br/>";
    if ($num_rows==0)
    {
    	//on enregistre l adresse ip si elle est inconnu et on incremente le compteur
    	$sql="insert into compteur_visite (ip,time1,duree) values ('$adress','$time','$time')";
    	$res=mysqli_query($id_conni,$sql)or die ("requete invalide enr ip");
    	$compteur+=1;
    	$sql="update compteur_visite set compteur=$compteur where ip='".$adress."'";
    	$res=mysqli_query($id_conni,$sql) or die ("requete invalide up compt");
    	echo "apres update<br/>";
    }
    else
    {
    	//si l'adresse ip est connu alors verifie si sa connexion precedente est superieur a la durée
    	//de renouvellement et si son heure de passage precedente incremente ou pas les connectés
    	$time1=$ligne->time1; //on recupere l'heure de sa precedente connexion de notre connecté
    	$duree1=$ligne->duree; //on recupere l'heure de sa precedente connexion de notre connecté
    	
    	// on verifie si sa derniere connexion ne date pas de plus que la duree de reference
    	if ($d*60<($time - ($duree1)))
    	{
    		//si la duree de reference est depassé alors notre connecté est comptablisé 
    		//comme nouvelle visite et on met a jour sa nouvelle heure de passage
    		$sql="update compteur_visite set time=$time,duree=$time where ip='".$adress."'";
    		$res=mysqli_query($id_conni,$sql) or die ("requete invalide maj time");
    		
    		//on cree une ligne fictive pour pouvoir le comptabilisé dans les connectés de jour
    		$adress1=$adress.".".$compteur;
    		$sql="insert into compteur_visite (ip,time1,duree) values ('$adress1','$time','$time')";
    		$res=mysqli_query($id_conni,$sql)or die ("requete invalide enr ip");
    		
    		//et on increment le compteur de visite
    		$compteur+=1;
    		$sql="update compteur_visite set compteur=$compteur where ip='".$adress."'";
    		$res=mysqli_query($id_conni,$sql) or die ("requete invalide up compt");
    	}
    	else
    	{
    		//on met a jour son heure de passage si elle est superieure a t
    		if ($time>(($time1)-$t))
    		{
    			$sql="update compteur_visite set time1=$time where ip='".$adress."'";
    			$res=mysqli_query($id_conni,$sql) or die ("requete invalide maj time");
    		}
    	}
    }
    
    
    //on compte le nb de connecté de la journée
    $sql="select * from compteur_visite";
    $res=mysqli_query($id_conni,$sql) or die ("requete invalide compte visiteur journee");
    $compteur_j=(mysqli_numrows ($res))-1;
    echo "compteur_j=".$compteur_j."<br>";
    
    //on compte le nb de connecté
    $time=$time-$t;
    $sql="select * from compteur_visite where time>=$time and ip!='compteur'";
    $res=mysqli_query($id_conni,$sql) or die ("requete invalide compte visisteur connecté");
    $compteur_c=mysqli_numrows ($res);
    echo "compteur_c=".$compteur_c."<br>";
    mysqli_free_result($res);
    mysqli_close($id_conni);
    ?>
    et de plus, l'absence de coloration syntaxique (je viens de le remarquer) montre qu'il y a un problème, mais lequel ?

  7. #7
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Quand j'ai répondu (à 11h20), j'avais pas vu l'intervention de BPiero ; certes il existe un champ dont le nom est "compteur" (je ne comprends ce que tu entends par "champ ip"), mais qu'un compteur soit égal à une adresse IP, ça ne tient pas debout...
    Et surtout, ce qui est très bizarre, c'est ça marche chez Free (PHP4) : http://olympique.nivernais.free.fr/accueil/index.php

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

Discussions similaires

  1. [MySQL] [MySQL] requête sql recherche de mots clés
    Par lanysteph dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 02/07/2009, 18h13
  2. MySql - Requête "modifier"
    Par pado_83 dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/09/2006, 17h04
  3. [Mysql] requête multi-criteres
    Par Nick_59 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 20/04/2006, 14h43
  4. [php-mysql] requête qui ne marche pas....
    Par sanosuke85 dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/01/2006, 17h18
  5. Requête invalide
    Par hubble dans le forum Outils
    Réponses: 4
    Dernier message: 16/02/2004, 16h48

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