Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2011, 08h45   #1
Membre du Club
 
Homme
Webmaster
Inscription : septembre 2008
Messages : 113
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : septembre 2008
Messages : 113
Points : 45
Points : 45
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 :
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 :
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 :
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...
cragoroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 14h54   #2
Membre du Club
 
Homme
Webmaster
Inscription : septembre 2008
Messages : 113
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : septembre 2008
Messages : 113
Points : 45
Points : 45
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 :
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 :
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 :
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 :
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.
cragoroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h40.


 
 
 
 
Partenaires

Hébergement Web