PHP-> besoin d'aide pour un compteur de clique

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

PHP-> besoin d'aide pour un compteur de clique

Message le Ven Mai 05, 2006 22:00

Bonjour, je voudrai compter les cliques sortants de mon site. Par exemple, si quelqu'un clique sur un lien partenaire, l'adresse sera de type -www.example.com/click.php?id=1
Comment faire pour ajouter un click dans click.php et faire la redirection? Merci.

Voici le code que j'ai commencé (le fichier config.php a les infos pour se conecter à la base de données) :

Code: Tout sélectionner
<?php
$_SESSION['id']=$id
?>
<?php
   include("config.php");
   $result = mysql_query("SELECT url, click FROM `click` WHERE id='$id'");
    while ($myrow = mysql_fetch_row($result)) {
    $query="UPDATE click SET click=click+1 WHERE id='$id';";
   header(
"Location: $myrow[0]");
exit();
?>

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Message le Ven Mai 05, 2006 23:04

J'ai cherché et trouvé ça mais ça ne marche pas, sauriez-vous me dire pourquoi? Merci.

Code: Tout sélectionner
<?
if(empty($id))
{
include("index.html");
}
else
{
include("config.php");
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "SELECT url, click FROM clicks WHERE id='$id'";
$result = mysql_db_query($db_name, $sql, $connexion);

while($resultat = mysql_fetch_array($result))
{
$total=$resultat[click];
$url=$resultat[url];
}
$total=$total+1;
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "UPDATE clicks SET clicks='$total' WHERE id='$id'";
mysql_db_query($db_name, $sql, $connexion);

header("location: $url");
}
?>


PS : En faisant -www.example.com/click.php?id=11, je suis redirigé sur la page index.html

ninive
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 147
Inscription: Mer Mar 03, 2004 11:58

Message le Sam Mai 06, 2006 12:27

Ajoute en début de script :

parse_str(getenv("QUERY_STRING"));

pour récupérer la valeur $id de l'URL

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Message le Sam Mai 06, 2006 17:42

Ca ne marche pas, à chaque fois, la page index.html est affichée. Voici le code :
Code: Tout sélectionner
<?
parse_str(getenv("QUERY_STRING"));
if(empty($id))
{
include("index.html");
}
else
{
include("config.php");
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "SELECT url, click FROM clicks WHERE id='$id'";
$result = mysql_db_query($db_name, $sql, $connexion);

while($resultat = mysql_fetch_array($result))
{
$total=$resultat[click];
$url=$resultat[url];
}
$total=$total+1;
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "UPDATE clicks SET clicks='$total' WHERE id='$id'";
mysql_db_query($db_name, $sql, $connexion);

header("location: $url");
}
?>


Quelqu'un pourrait m'aider svp? Merci.

ninive
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 147
Inscription: Mer Mar 03, 2004 11:58

Message le Sam Mai 06, 2006 17:53

essaye comme ça :

Code: Tout sélectionner
<?
parse_str(getenv("QUERY_STRING"));

if (!isset($id))
{
include("index.html");
}
else
{
include("config.php");
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "SELECT url, click FROM clicks WHERE id='$id'";
$result = mysql_db_query($db_name, $sql, $connexion);

while($resultat = mysql_fetch_array($result))
{
$total=$resultat[click];
$url=$resultat[url];
}
$total=$total+1;
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "UPDATE clicks SET clicks='$total' WHERE id='$id'";
mysql_db_query($db_name, $sql, $connexion);

header("location: $url");
}
?>

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Message le Sam Mai 06, 2006 18:01

Merci, ça marche! Mais comment faire pour que ça vérifie le numéro id, pour que par exemple, si le lien est cassé (id=111 n'existe pas dans la base de données), ça retourne sur la page d'accueil?
Merci.

ninive
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 147
Inscription: Mer Mar 03, 2004 11:58

Message le Sam Mai 06, 2006 18:15

Comme ça je pense :
Code: Tout sélectionner
<?
parse_str(getenv("QUERY_STRING"));

if (!isset($id))
{
include("index.html");
}
else
{
include("config.php");
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "SELECT url, click FROM clicks WHERE id='$id'";
$result = mysql_db_query($db_name, $sql, $connexion);

if ($resultat = mysql_fetch_array($result))
{
$total=$resultat[click];
$url=$resultat[url];

$total=$total+1;
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "UPDATE clicks SET clicks='$total' WHERE id='$id'";
mysql_db_query($db_name, $sql, $connexion);

header("location: $url");
}
else
{
include("index.html");
};
};
?>

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Message le Sam Mai 06, 2006 18:19

Merci, il y avait une petite erreur dans votre code. Ca marche avec celui là :
Code: Tout sélectionner
<?
parse_str(getenv("QUERY_STRING"));

if (!isset($id))
{
include("index.html");
}
else
{
include("config.php");
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "SELECT url, click FROM clicks WHERE id='$id'";
$result = mysql_db_query($db_name, $sql, $connexion);

if ($resultat = mysql_fetch_array($result))
{
$total=$resultat[click];
$url=$resultat[url];

$total=$total+1;
$connexion = mysql_connect($db_host,$db_login,$db_pass);
$sql = "UPDATE clicks SET clicks='$total' WHERE id='$id'";
mysql_db_query($db_name, $sql, $connexion);

header("location: $url");
}
else
{
include("index.html");
};
}
?>

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Message le Sam Mai 06, 2006 18:27

Mais le compteur de clique ne marche pas... La page est bien redirigé, mais les cliques sont toujours à 0.

ninive
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 147
Inscription: Mer Mar 03, 2004 11:58

Message le Sam Mai 06, 2006 19:26

Y'a pas un s de trop à set clicks='$total' ?
ça serait pas set click='$total' ?

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Message le Sam Mai 06, 2006 19:30

C'était ça! Je ne l'avais pas vu, merci beaucoup et bonne soirée!
:D

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Message le Sam Mai 06, 2006 19:48

Sauriez vous me dire quelle est la fonction php qui permet de faire la somme de toutes les valeurs "click" de la table "clicks", afin de faire des stats?
Merci.

ninive
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 147
Inscription: Mer Mar 03, 2004 11:58

Message le Sam Mai 06, 2006 20:15

Je procède de cette façon :

Je définis en début de script une valeur $total=0

Puis je fais une requête allant chercher la valeur de click pour chaque ligne
de la table, du type "SELECT click FROM clicks where.... " (définir un where valable pour chaque ligne à compter, du genre where click>'0')

puis dans le while de l'execution de la requête while ($resultat = mysql_fetch_array($result))
j'ajoute $total = $total + $click;

ainsi $total s'incrémente de la valeur de $click

Il ne reste plus qu'à afficher $total à la fin de la requete.

Il y a peut-être plus simple, mais je ne connais pas la fonction spécifique, s'il y en a une.

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Message le Sam Mai 06, 2006 20:56

Ben j'ai fais ça, mais ça ne marche pas :
Code: Tout sélectionner
<?
$total = 0
$click = mysql_num_rows(mysql_query("SELECT click FROM 'clicks' where 'click'>'0'"));
while ($resultat = mysql_fetch_array($result, MYSQL_NUM)) {
$total = $total + $click;
?>


Erreur à la ligne $total = 0


dd32
Modérateur
Modérateur
 
Messages: 3262
Inscription: Ven Sep 09, 2005 10:21

Message le Sam Mai 06, 2006 21:17

peut-être utiliser la fonction SUM en SQL ?

PHP-> besoin d'aide pour un compteur de clique

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité