Lien avec ajout de clic

Consultez la formation sur les stratégies de liens de WebRankInfo / Ranking Metrics


chamagne
WRInaute discret
WRInaute discret
 
Messages: 159
Inscription: 23 Fév 2004

Lien avec ajout de clic

Message le Mer Sep 15, 2010 5:51

Bonjour
Je tourne en rond depuis des heures et n'arrive pas à m'en sortir et sollicite votre aide éclairée.

J'ai un lien de ce type :
Code: Tout sélectionner
echo "<a href='add-hit.php?link=$link' target='_blank'>$site_externe</a>; // lien vers un site avec ajout de clic en base de données

avec add-hit.php comprenant :
Code: Tout sélectionner
header("location: ".$_GET['link']); // ouverture du site externe dans un autre onglet
include ('connexion.php'); // connection à la base de données
@mysql_query("UPDATE table_sites SET hits=hits+1 WHERE web_adress='".$_GET['link']."'",$db); // ajout d'un clic pour le site externe


Ca marche parfaitement, mais le lien n'est pas dur !

J'ai essayé (en supprimant du add-hit.php le header) :
Code: Tout sélectionner
echo "<a href='$link' OnClick='window.open("."'add-hit.php?link=$link"."')' target='_blank'>$site</a>";

ou
Code: Tout sélectionner
echo "<a href='$link' OnClick='document.location.href=("."'add-hit.php?link=$link')'"." target='_blank'>$site</a>";

et bien d'autres ...

Lien en dur et ouverture ok, mais pas de click ajouté

Ca parait certainement simple pour beaucoup d'entre vous mais pour un amateur comme moi, c'est déjà du top niveau !

Merci de m'aider et bonne journée
Dernière édition par chamagne le Mer Sep 15, 2010 8:57, édité 1 fois.


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 6:32

déjà tu devrais utiliser mysql_real_escape_string($_GET['link']) pour protéger ton paramètre dans l'UPDATE.

ensuite je mettrais le header à la fin (même si je ne suis pas sur que ca change grand chose à ton problème).

tu peux essayer d'ajouter après l'update cette ligne pour voir s'il n'y a pas d'erreur :
Code: Tout sélectionner
die(mysql_error());


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 6:46

Perso je ferais ça en ajax, de manière à faire un appel asynchrone sur la page add-hit.php quand quelqu'un clique sur le lien href. Avec prototype ou Jquery, ca va tout seul. J'avais fait ça pour un client, faudrait que je retrouve mes sources.


Schwarzer Stern
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 352
Inscription: 16 Mai 2010

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 7:15

Salut,
As-tu essayé en remplaçant le onclick par onmousedown ?
Ou "mieux" : utiliser le fichier add-hit avec la redirection et :
Code: Tout sélectionner
echo '<a href="'.$link.'" onclick="document.location=add-hit.php?link='.$link .';return false;">'.$site_externe.'</a>';


(je ne suis pas sûr du document.location mais c'est l'idée)
Dernière édition par Schwarzer Stern le Mer Sep 15, 2010 8:42, édité 1 fois.


chamagne
WRInaute discret
WRInaute discret
 
Messages: 159
Inscription: 23 Fév 2004

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 7:29

Merci de vos réponses rapides

forty a écrit:déjà tu devrais utiliser mysql_real_escape_string($_GET['link']) pour protéger ton paramètre dans l'UPDATE.

Même si ne comprend pas bien cette commande, je l'ai rajouté, c'est ok !
RECTIFICATION : avec ma commande et fichier php d'origine, le clic n'est pas ajouté, revenu à @mysql_query, ça colle pour l'ajout clic

forty a écrit:ensuite je mettrais le header à la fin (même si je ne suis pas sur que ca change grand chose à ton problème).

Ca ne change rien

forty a écrit:die(mysql_error());

Pas de retour d'erreur

UsagiYojimbo a écrit:Perso je ferais ça en ajax

Oui, je vois ça partout dans mes recherches, mais n'y connais vraiment que pouic en ajax !
A moins que de me fournir un code tout prêt et LARGEMENT documenté ?

Merci à tous 2 et j'espère une solution prochaine
Dernière édition par chamagne le Mer Sep 15, 2010 9:56, édité 2 fois.


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 7:44

as-tu essayé de remplacer mysql_query par die() pour voir si ton UPDATE est OK et si tu passes par là?
Code: Tout sélectionner
include ('connexion.php'); // connection à la base de données
die("UPDATE table_sites SET hits=hits+1 WHERE web_adress='".mysql_real_escape_string($_GET['link'], $db)."'"); // ajout d'un clic pour le site externe


Schwarzer Stern
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 352
Inscription: 16 Mai 2010

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 8:41

Je t'ai pas conseillé l'ajax, tu t'es trompé de quote et t'as sauté mes suggestions au passage :D


chamagne
WRInaute discret
WRInaute discret
 
Messages: 159
Inscription: 23 Fév 2004

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 9:39

Schwarzter Stern a écrit:Je t'ai pas conseillé l'ajax, tu t'es trompé de quote et t'as sauté mes suggestions au passage

Mea culpa, m'étais trompé de destinataire (ai corrigé ci-dessus), c'est UsagiYojimbo qui proposait l'ajax.
Mea culpa 2 (pas bien réveillé !), j'ai pas essayé ta commande avec le return false
... essai ... clic non ajouté
Pas plus en changeant par document.location.href

forty a écrit:as-tu essayé de remplacer mysql_query par die() pour voir si ton UPDATE est OK et si tu passes par là?

essayé >>> pas réagi
essayé en faisant :
Code: Tout sélectionner
echo "<script>alert('je suis passé par ici')</script>";
include ('_connexion.php');
mysql_real_escape_string("UPDATE ".$table_prefix."sites SET hits=hits+1 WHERE web_adress='".mysql_real_escape_string($_GET['link'])."'",$db);
echo "<script>alert('je suis passé par là')</script>";

Ni alert au début, ni à la fin, on n'entre donc pas dans add-hit.php, ni avec window(open), ni avec document.location.href
ET C'EST LA TOUT LE PROBLEME !


chamagne
WRInaute discret
WRInaute discret
 
Messages: 159
Inscription: 23 Fév 2004

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 10:02

>>> forty
A moins que tu n'aies relu le message de 8h29, ma solution originale (sans lien en dur) n'ajoute pas de clic si on change mysql_query par mysql_real_escape_string

Etonnant, Google connait déjà ce message !


Schwarzer Stern
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 352
Inscription: 16 Mai 2010

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 10:11

Un moyen qu'on puisse tester ça en ligne ?


chamagne
WRInaute discret
WRInaute discret
 
Messages: 159
Inscription: 23 Fév 2004

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 10:45

Bien sûr, pas de pb (c'est ma version originale que vous verrez donc sans lien en dur)
L'ajout de clic n'est implémenté que sur les liens de l'annuaire
J'entend déjà crier 1 de plus, non c'est 1 de moins qui regroupera un ancien annuaire + un topsites
Je vous donne un lien rewrité (ajout de clic non implémenté sur random site)
Pardon pour l'anglais mais quand sera fini, je ferai une version française pour mon site bilingue
Et je n'ai ajouté que quelques liens pour le tester
Or donc : http://www.animated-gifs.eu/1two/animated-gifs-2.html
Et n'hésitez pas à me faire des remarques sur ce qui existe déjà


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 10:51

Code: Tout sélectionner
function count_click(link)
{
   var xhr_object = null;
   if(window.XMLHttpRequest) // Firefox
   xhr_object = new XMLHttpRequest();
   else if(window.ActiveXObject) // Internet Explorer
   xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
   else { // XMLHttpRequest non supporté par le navigateur
   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return}
   xhr_object.open("GET", "add-hit.php?link="+link, false);
}


Il te suffit ensuite d'appeler cette fonction JS dans ton évènement onclick, ce qui aura pour effet d'exécuter de manière asynchrone ton script add-hit.php, en lui passant l'url à incrémenter. Pour la partie add-hit.php, ce que tu as déjà devrait donc marcher sans souci.

Bien sûr il y aurait moyen d'améliorer ce script, notamment en utilisant un framework ajax du genre prototype ou jquery.


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 12:40

chamagne a écrit:>>> forty
A moins que tu n'aies relu le message de 8h29, ma solution originale (sans lien en dur) n'ajoute pas de clic si on change mysql_query par mysql_real_escape_string

Etonnant, Google connait déjà ce message !

j'ai pas dis de remplacer mysql_query par mysql_real_escape_string mais de l'utiliser. Cette fonction permet de protéger les paramètres d'une instruction mysql (gère entre autre les paramètres contenant une quote).
il fallait donc comprendre :
Code: Tout sélectionner
@mysql_query("UPDATE table_sites SET hits=hits+1 WHERE web_adress='".mysql_real_escape_string($_GET['link'],$db)."'",$db); // ajout d'un clic pour le site externe


chamagne
WRInaute discret
WRInaute discret
 
Messages: 159
Inscription: 23 Fév 2004

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 14:34

Ah, que la sieste fut bonne !
furty a écrit:j'ai pas dis de remplacer mysql_query par mysql_real_escape_string mais de l'utiliser

Quand je vous dis que ne suis qu'un newbie !
Non pas remplacé mais utilisé (hors le 1er ,$db) qui était de trop), c'est ok et fonctionne de la même façon

>>> UsagiYojimbo
Dans un moment vais tester cette fonction javascript


chamagne
WRInaute discret
WRInaute discret
 
Messages: 159
Inscription: 23 Fév 2004

Re: Lien avec ajout de clic

Message le Mer Sep 15, 2010 15:33

UsagiYojimbo a écrit:function count_click(link)
...

Je résume :
1. Création de add-hits.js tel que tu l'as donné (sans en changer une lettre, sinon ajout de alert en entrée et sortie)
2. Fichier add-hit.php (avec alert en entrée et sortie) :
Code: Tout sélectionner
echo "<script>alert(\"je suis entré dans add-hit.php\")</script>";
include ('_connexion.php');
@mysql_query("UPDATE table_sites SET hits=hits+1 WHERE web_adress='".mysql_real_escape_string($_GET['link'])."'",$db);
echo "<script>alert(\"je suis sorti de add-hit.php\")</script>";

3. Dans le head de ma page ajouté :
Code: Tout sélectionner
<script type="text/javascript" src="add-hits.js"></script>

4. Dans ma page, appel de la fonction sur le lien vers page externe :
Code: Tout sélectionner
echo "<a href='$link' onclick='return count_click($link);' target='_blank'>$site</a>";

Résultat : pas de clic ajouté, aucune des 4 alertes ne s'est présentée

Lien avec ajout de clic

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Netlinking (liens et référencement) : apprenez ce qu'est réellement un bon lien pour le référencement et surtout comment en obtenir. 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 :

  • Tester la validité d'un lien
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
  • Calculer le ratio de liens profonds
    Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés.
  • Transformer des textes non cliquables en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités