Decompte de clics

Résolu
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009 - 23 août 2009 à 17:44
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009 - 26 août 2009 à 18:05
Bonjour,

Je suis un peu perdu, j'ai un projet un peu spécial, je voudrais proposer un jeu au membre de mon site.

Je voudrais faire gagner une personne, après un certain nombre de clic sur un lien.

A chaque fois qu'une personne clic sur ce lien je voudrais que les autres puissent le voir :
Exemple un compteur qui affiche reste 200 clics avant le gagnant, et après le clic que sa affiche reste 199 clics avant le gagnant.

Chaque personne étant comptabilise qu'une seule fois.

Je suis entièrement perdu car je ne connais absolument rien en php. Je pensais que cela pouvais se faire en java script mais je viens d'apprendre que ce ne serais pas la bonne solution, et oui je débute lol.

Pouvez vous me donner des pistes svp ? je ne demande pas de me le faire je voudrais apprendre, je voudrais juste avoir des bonnes pistes, merci a vous.

Je vous ferais voir l'avancée de mon code pour avoir vos conseils par la suite.


laloire

36 réponses

pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
24 août 2009 à 09:15
pourauçoi utilise-tu encore les fichier textes? et sinon il faut que tu exécute ta requête (qui est dans ta condition...) parce que tu l'écrase juste quelques lignes plus loins.

Sinon ça m'a l'air pas trop mal...

[hr]
PPT: Petit programmeur tranquille =) | Agence Web | Pysco68 was here
0
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009
24 août 2009 à 09:49
C&est a dire que je voudrais que le compteur parte de 200 et qu'il descende a chaque visite, et je ne sais pas comment le faire je suis bloqué a ce niveau la, c'est pour sa que je met le fichier texte avec 200 écrit dedans
il doit surement y avoir un moyen en php je suppose, mais la je ne sais vraiment pas ou trouver la solution.

laloire
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
24 août 2009 à 10:12
Ben tu fais un champs dans une table et si le visiteur t'est inconnu tu fais:

UPDATE ta_table SET ton_champ = ton_champ - 1

ça devrait t'aider ;)


[hr]
PPT: Petit programmeur tranquille =) | Agence Web | Pysco68 was here
0
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009
24 août 2009 à 10:20
dans ce style la ?
je ne suis pas sur de bien avoir compris

<?php
$db = mysql_connect('localhost', 'login', 'password');
mysql_select_db('nom_de_la_base',$db);
$sql = "SELECT COUNT(*) as nombre FROM infos_tbl WHERE visiteur=' ".$_SERVER['REMOTE_ADDR'] . "'" ;
$result = mysql_query($sql);
$nombre = mysql_result($result,0);

if($nombre != 0)
{echo 'Vous avez déjà participé !'  ;}
else
{
$sql = "INSERT INTO infos_tbl (visiteur,compteur) VALUES('$_SERVER['REMOTE_ADDR'],-1')"
}

$sql = "SELECT COUNT(*) as nombre FROM infos_tbl WHERE compteur";
$result = mysql_query($sql);
$total = mysql_result($result,0);
echo 'Nombre de visiteurs : ' . $total;
?>



laloire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
24 août 2009 à 10:43
Non pas tout a fait!

else
{
$requete1 = "INSERT INTO infos_tbl (visiteur) VALUES('$_SERVER['REMOTE_ADDR']')";

-> EXECUTER LA REQUETE 1

$requete2 "UPDATE ta_table_compteur SET ton_champ_compteur ton_champ - 1 ";

-> EXECUTER LA REQUETE 2
}


et tu "remplace" ton fichier texte par une entrée dans ta bdd... que tu décrémente aussi...

[hr]
PPT: Petit programmeur tranquille =) | Agence Web | Pysco68 was here
0
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009
24 août 2009 à 11:10
je ne suis vraiment pas sur, lol !

<?php
$db = mysql_connect('localhost', 'login', 'password');
mysql_select_db('table',$db);
$sql = "SELECT COUNT(*) as nombre FROM infos_tbl WHERE visiteur=' ".$_SERVER['REMOTE_ADDR'] . "'" ;
$result = mysql_query($sql);
$nombre = mysql_result($result,0);

if($nombre != 0)
{echo 'Vous avez déjà participé !'  ;}
else
{
$requete1 = "INSERT INTO infos_tbl (visiteur) VALUES('$_SERVER['REMOTE_ADDR']')";
$requete2 "UPDATE info_tbl SET (compteur) compteur-1 ";
}

$sql = 'SELECT compteur FROM infos_tbl';
$result = mysql_query($sql);
$data = mysql_fetch_assoc($req);
echo 'Nombre de visiteurs : ' . $data;
?>



laloire
0
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009
24 août 2009 à 11:11
zut me suis trompé:

ce n'est pas ceci :
$result = mysql_query($sql);

mais ça
$req = mysql_query($sql)

laloire
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
24 août 2009 à 11:16
....tu refais toujours la même erreur... ce n'est pas en marquant:

$requete2 "UPDATE info_tbl SET (compteur) compteur-1 ";


dans ton code que tu va executer une requete SQL... avec ça tu a juste assigné une valeur a une variable... si tu fais:

echo $requete2;

ça va te cracher ça dans le navigateur:
UPDATE info_tbl SET (compteur) = compteur-1


Pour executer une requete c'est par exemple: mysql_query( "la requete" ) qu'il faut utiliser...

Bonne chance!
[hr]
PPT: Petit programmeur tranquille =) | Agence Web | Pysco68 was here
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
24 août 2009 à 11:17
nb. continu un peux a lire phpdébutant; parce que là j'ai l'impression aue tu essai a l'aveuglette... sans réellement comprendre ce que tu fais...


[hr]
PPT: Petit programmeur tranquille =) | Agence Web | Pysco68 was here
0
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009
24 août 2009 à 12:17
re, alors maintenant cela fonctionne, mais rien ne s'enregistre dans la bdd, donc soucis quelque part.

Je ne suis pas parti sur l'exemple que tu m'as donné, dis toi que c'est la toute première fois que je fais du php, sa fait beaucoup en une seule fois pour ma petite tête (lol), mais je vais de toute façon l'optimiser au fur et à mesure, et je prendrais plus de temps pour lire les cours sur php débutant.

Je tiens aussi a te remercier pour ton aide, sincèrement !

<?php
$db = mysql_connect('localhost', 'azalee', 'qwertzui');
mysql_select_db('azalee_compte',$db);
$sql = "SELECT COUNT(*) as nombre FROM decompte_tbl WHERE visiteur=' ".$_SERVER['REMOTE_ADDR'] . "'" ;
$result = mysql_query($sql);
$nombre = mysql_result($result,0);
$ip = $_SERVER['REMOTE_ADDR'];
echo 'votre ip est: '.$ip;
if($nombre = 0)
{echo 'Vous avez déjà participé !'  ;}
else
{
$requete1 = "INSERT INTO decompte_tbl(visiteur) VALUES('$ip')";
}
$compteur_depart = 200;
 

$result = mysql_query('SELECT * FROM decompte_tbl');
$visiteurs = mysql_num_rows($result);
$compteur = $compteur_depart - $visiteurs;
echo 'Compteur : ' . $compteur;
?>



laloire
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
24 août 2009 à 19:47
dis moi tu lis mes posts? IL FAUT EXECUTER LES REQUETES!!!!!

(cf. mon avant dernier post....)


[hr]
PPT: Petit programmeur tranquille =) | Agence Web | Pysco68 was here
0
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009
25 août 2009 à 19:34
bonjour,

oui j'ai lu mais comme je te l'ai dit je suis débutant, et c'est ma toute première fois en php !

Bon en tout cas j'avance, j'en suis la :
le décompte fonctionne et la visite s'enregistre bien dans la BDD.

Il me reste un soucis c'est que toutes les visites s'enregistrent, même si on as déjà participé, alors que logiquement sa ne devrai pas.
Je doit avoir une fait une erreur bête je pense mais etant novice je ne la trouve pas. voici mon code :

La BDD :
CREATE TABLE decompte_tbl
(id INT not null AUTO_INCREMENT,
visiteur VARCHAR (50) not null ,
PRIMARY KEY (id))


le php :

<?php
$db = mysql_connect('localhost', 'azalee', 'qwertzui');
mysql_select_db('azalee_compte',$db);
$sql = "SELECT COUNT(*) as nombre FROM decompte_tbl WHERE visiteur=' ".$_SERVER['REMOTE_ADDR'] . "'" ;
$result = mysql_query($sql);
$nombre = mysql_result($result,0);
$ip = $_SERVER['REMOTE_ADDR'];
if($nombre = 0)
{echo 'Vous avez déjà participé !'  ;}
else
{
$requete=mysql_query("INSERT INTO decompte_tbl VALUES('','$ip')");
}
$compteur_depart = 200;
 

$result = mysql_query('SELECT * FROM decompte_tbl');
$visiteurs = mysql_num_rows($result);
$compteur = $compteur_depart - $visiteurs;
echo 'Compteur : ' . $compteur;
?>



laloire
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
25 août 2009 à 20:11
Salut,


if($nombre === 0)

Tu devrais tout de même coupler avec l'utilisation des cookies pour fiabiliser ton script.

Cordialement,

Kohntark -
0
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009
25 août 2009 à 20:53
sa ne fonctionne pas, mais merci quand même


laloire
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
26 août 2009 à 00:10
Arf, au temps pour moi
Il aurait fallu mettre :
if($nombre === '0')

mais en fait tu contrôles que l'ip n'est pas déjà présente ds la db, donc :
if ($nombre > 0) // ... vous avez déjà participé


Pense à contrôler si tes requêtes ne retournent pas d'erreur.

Cordialement,

Kohntark -
0
laloire33150 Messages postés 94 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 25 novembre 2009
26 août 2009 à 18:05
Merci a vous tous, mon script fonctionne à merveille


laloire
0
Rejoignez-nous