Problème avec compteur de clic

Eléphant du PHP | 153 Messages

01 juin 2010, 12:05

Bonjour à tous,

Je souhaite compter le nombre de clics sur les liens, je travaille en local pour les tests.

Voici les codes que j'utilise.
Le php pour les liens :
echo = "<td class=\"list\"><a href=\"" . $list['site_addr'] . "\" onclick=\"ClickOut(this, " . $list['id'] . ");\" target=\"_blank\">" . stripslashes($list['site_name']) . "</a></td></tr>\n";
le php pour incrémenter les clics :
$idsite = (isset($_GET['idsite'])) ? ((ctype_digit($_GET['idsite'])) ? $_GET['idsite'] : 0) : 0;
if ($idsite != 0)
{
	$sqlhits = $db->query("UPDATE " . PREFIX . "sites SET hits = hits+1 WHERE id = " . $idsite);
	$sql_url = $db->query("SELECT site_addr FROM " . PREFIX . "sites WHERE id = " . $idsite);
	$url = $db->fetch_array($sql_url);
	header("location: " . $url['site_addr']);
}
La fonction javascript dans mon header.html

Code : Tout sélectionner

<script type="text/javascript"> function ClickOut(e, idsite) { if(document.all)e=event if(e.type=="click") { if(document.images) (new Image()).src="http://127.0.0.1/Site/liste.php?idsite="+idsite; return true; } } </script>
Le site (clic sur le lien) est bien affiché en _blank, mais je n'ai pas d'incrémentation du clic effectué. Je pense avoir un soucis avec le onclick.

Merci à vous pour votre aide.

P.S : je ne sais pas trop si je devais mettre ma demande dans le forum PHP ou Javascript :?

Eléphant du PHP | 314 Messages

01 juin 2010, 12:26

Bonjour,

Peux tu placer un
echo "UPDATE " . PREFIX . "sites SET hits = hits+1 WHERE id = " . $idsite;
, éventuellement le tester en base/sur phpMyAdmin, ou simplement vérifier que ta requête ne renvoie pas une erreur ?
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 153 Messages

01 juin 2010, 12:31

Je viens de tester la requète directement dans phpmyadmin et il n'y a pas de soucis.

Merci :)

Eléphant du PHP | 314 Messages

01 juin 2010, 12:33

Si avec la requête fourni par le echo tu n'as pas de problème sur phpMyAdmin, c'est que cette partie fonctionne !
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 153 Messages

01 juin 2010, 12:37

Oui, mais je pense plus à un soucis avec le onclick et la jonction avec la fonction javascript ClickOut()
Ça fait 2 jours que je suis dessus, mais je ne vois rien de spécial.

Merci.

Eléphant du PHP | 314 Messages

01 juin 2010, 13:51

Sans le script complet impossible de savoir si tu as une erreur Javasript. Avec Firefox, Tu peux aller dans Outils -> Console d'erreur ( ou CTRL+MAJ+J ) et regarder si ton script a un soucis. Sinon places des alertes !
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 153 Messages

01 juin 2010, 14:07

Je n'ai pas d'erreur dans la console FireFox.
C'est comme si le onclick n'avait aucune action. J'ouvre bien le lien en _blank et il ne se passe rien sur la page d'origine.

Merci.

Eléphant du PHP | 314 Messages

01 juin 2010, 14:23

Essaie dans ce cas d'annuler l'action du lien en insérant un return false; à la fin de ton onclick, et regarde ce qui se passe à ce moment là dans ta base ( est-ce que ça a fonctionné ? )

Pour ma part je te ferai passer par une page en PHP intermédiaire, je m'explique :

sur index.php tu as ton liens vers le site que tu veux compter :
<a href="lien_externe.php?siteid=1" traget="_blank";>mon super site 1 !</a>
<a href="lien_externe.php?siteid=2" traget="_blank";>mon super site 2 !</a>
<a href="lien_externe.php?siteid=3" traget="_blank";>mon super site 3 !</a>
<a href="lien_externe.php?siteid=4" traget="_blank";>mon super site 4 !</a>
sur lien_externe.php, tu augmente ton Hits de +1 par rapport à ton siteid et tu récupères l'adresse de ce site.

à ce moment là, tu peux rediriger avec un header('Location') ( en PHP ) ou si tu veux un affichage entre deux, avec une balise meta ou en Javascript ( Je te laisse googler pour cela, c'est pas bien compliqué ! )
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 153 Messages

01 juin 2010, 14:39

En insérant un return false, après le onclick, je n'ai plus aucune action sur le lien.

Je souhaite afficher des liens en dur, donc exit les url à rallonge :wink:

Eléphant du PHP | 153 Messages

02 juin 2010, 11:52

Problème résolu, merci à vous pour votre aide :wink:

Eléphant du PHP | 314 Messages

02 juin 2010, 12:59

Alors d'où venait le problème ? :p
Cordialement,
Julien - http://laravel.fr/