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 sur un tableau in array() [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 171
    Points : 106
    Points
    106
    Par défaut problème sur un tableau in array()
    Bonjour,

    Etant débutant j'ai encore un peu de mal avec les tableaux et autre trucs du genre.

    Voila mon objectif : faire un compteur de visites.

    La question que je me pose dans un premier temps est de comment fait-on cela ?
    J'ai vu plusieurs chose sur le net :
    - avec cookies
    =>problème si l'utilisateur désactive les cookies, c'est mort visite +1 à chaque fois

    - base SQL:
    => est-ce la bonne solution ?

    Voila ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ip_visiteur = $_SERVER['SERVER_ADDR'] ;
    $date_visite = date("Y-m-d");
    $heure = date("H:i");
     
    $req_ip 	= "SELECT * FROM compteur ";
    $res_ip 	= mysql_query($req_ip);
    $ip_ok        = mysql_fetch_array($res_ip);
    ma table a les champs suivants : ip_visiteur, date

    dans un premier temps j'aimerais faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(!in_array($ip_visiteur, $ip_ok)){
     
    				$req = 'INSERT INTO compteur
    				                   VALUES ("'.$ip_visiteur.'",
    				                           "'.$date_visite.'",
    				                           "'.$heure.'")';
     
    				$res = mysql_query($req);
     
    }else{
    	echo 'ip déjà présente';
    }
    Je regarde si l'ip existe et je l'insert sinon message.

    J'ai ce message d'erreur :

    Warning: in_array() expects parameter 2 to be array, boolean given in C:\wamp\www\sovitrat.Fr\templates\compteur.php on line 12

    c'est la ligne du if.


    Mon idée est de faire une autre requête en parallèle qui va transvaser toutes les adresse ip avec un date différente de la date du jour dans une table stat.

    Comme ça je vais pouvoir faire des stats de visites total (table compteur et table stat) et de visite du jour (table compteur)

    Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if($ip_ok['date'] != $date_visite){
                $query = 'INSERT INTO compteur_stat SELECT * FROM compteur WHERE date != ' . $date_visite .'';
    	    $result = mysql_query($query);
     
    	     $query2 = 'DELETE FROM compteur WHERE date != ' . $date_visite .'';
    	     $result2 = mysql_query($query2);
    	}

    qu'en pensez-vous pour mon erreur et la suite ?

    Merci par avance de votre retour...

  2. #2
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 171
    Points : 106
    Points
    106
    Par défaut
    Bon je vois que pas mal de monde sont en vacances, ça fait plaisir pour ceux qui travaille.....

    Voila la solution à mon compteur :

    Nous avons deux tables :

    compteur :
    - ip_visiteur
    - date
    - heure

    compteur_stat:
    - ip_visiteur
    - date
    - heure


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $ip_visiteur = $_SERVER['SERVER_ADDR'] ;
    $date_visite = date("Y-m-d");
    $heure = date("H:i");

    Dans le code qui suit, nous allons déplacer toutes les adresses ip qui ne date pas du jour même dans une table nommé compteur_stat.
    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
     
    //Nettoyage de la table compteur : déplacement des visites depuis plus d'un jour dans les stats 
    $i=0;
    $req_ip 	= "SELECT * FROM compteur WHERE date != '".$date_visite."'";
    $res_ip 	= mysql_query($req_ip);//exécution de la requete
    while($ip = mysql_fetch_array($res_ip)){
    $a = $i%2;
            if($ip['date'] != $date_visite){
    	       $query = "INSERT INTO compteur_stat (SELECT * FROM compteur WHERE date != '".$date_visite."')";
    	       $result = mysql_query($query);
     
    	       $query = "DELETE FROM compteur WHERE date != '".$date_visite."'";
    	       $result = mysql_query($query);                
    		}
    }                                
    //Fin Nettoyage de la table compteur
    Ainsi nous pourront avoir les stats de visites total et pour le jour même.

    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
     
    $req_ip2 	= "SELECT * FROM compteur";
    $res_ip2 	= mysql_query($req_ip2);//exécution de la requete
     
    if (FALSE === ($ip_ok = mysql_fetch_array($res_ip2))) {
    		// requête pour l'insertion de l'adresse ip
    		$req = 'INSERT INTO compteur
    		 VALUES ("'.$ip_visiteur.'",
    			     "'.$date_visite.'",
    			     "'.$heure.'")';
    		$res = mysql_query($req);
    }else{
    		if(!in_array($ip_visiteur, $ip_ok)){
    			// requête pour l'insertion de l'adresse ip
    			$req = 'INSERT INTO compteur
    					 VALUES ("'.$ip_visiteur.'",
    						      "'.$date_visite.'",
    						      "'.$heure.'")';
    			$res = mysql_query($req);
     
    		}
    }
    Et enfin nous allons récupérer le nombre de visiteurs :

    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
     
    //Récup du nombre de visiteurs
    $req_ip 	= "SELECT * FROM compteur ";
    $res_ip 	= mysql_query($req_ip);//exécution de la requete
    $num_rows_compteur = mysql_num_rows($res_ip);
     
    $req_ip_stat 	= "SELECT * FROM compteur_stat ";
    $res_ip_stat 	= mysql_query($req_ip_stat);//exécution de la requete
    $num_rows_compteur_stat = mysql_num_rows($res_ip_stat);
     
    echo $num_rows_compteur.' visites aujourd\'hui<br>';
    echo $num_rows_compteur_stat + $num_rows_compteur.' visites total<br>';
     
    //Fin Récup du nombre de visiteurs 
     
     
    $req_utilisateurs 		="SELECT * FROM utilisateurs";
    $res_utilisateurs 		= mysql_query($req_utilisateurs);//exécution de la requete
    $num_rows_utilisateur 	= mysql_num_rows($res_utilisateurs);    
    echo $num_rows_utilisateur.' inscrits';


    Voila d'une manière plus ironique je remercie tout le monde pour leur aides...

    Lol passez de bonnes fêtes de fin d'année.

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

Discussions similaires

  1. [PHP 5.3] Gros problème sur un tableau stdClass Object
    Par TrAsHeR dans le forum Langage
    Réponses: 2
    Dernier message: 29/08/2011, 17h43
  2. [XL-2010] 2 problèmes sur mon tableau
    Par philpyreneen dans le forum Excel
    Réponses: 6
    Dernier message: 30/07/2011, 08h19
  3. [CS3] Problème sur un tableau dynamique
    Par Yep_yep dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 16/09/2009, 13h08
  4. Problème sur un tableau
    Par infofree dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 14/04/2008, 19h42
  5. problème sur un tableau dynamique
    Par boss_gama dans le forum ASP
    Réponses: 9
    Dernier message: 24/08/2006, 17h27

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