Page 1 sur 1

Enregistrer dans base sql quand on clique sur un lien

Posté : 24 déc. 2016, 17:51
par cris84
Bonjour à tous et joyeux noël :-D

je voudrais savoir comment faire pour effectuer un enregistrement dans ma base si je clique sur un lien qui renvoi sur un autre site.
Le lien vers l'autre site est direct avec la balise target="_blank"

Tant que mes liens renvoient sur les pages de mon site pas de souci de sait faire. Mais quand le lien pointe vers l'extérieur ?

Merci d'avance.

:wink:

Re: Enregistrer dans base sql quand on clique sur un lien

Posté : 25 déc. 2016, 23:15
par laurents
Bonsoir,
je ne comprend pas trop le problème. Peux-tu préciser avec un peu de code (et notamment quand ça marche) ?

Re: Enregistrer dans base sql quand on clique sur un lien

Posté : 25 déc. 2016, 23:50
par Spols
Il faut que tu trompe ton utilisateur, en faisant un lien interne, l'enregistrement en base de donnée et puis une redirection vers le lien exterieur

Re: Enregistrer dans base sql quand on clique sur un lien

Posté : 26 déc. 2016, 12:08
par cris84
Bonjour,
pour le moment j'ai pas de code, je cherche justement comment il faut que je fasse.
Un deux mots, je voudrais compter dans ma base de données chaque fois qu'un internaute clique sur un lien (mais qui va vers un autre site).
Une seule page est concernée.
Ma table : id et id_page.
Je ne peux pas utiliser la méthode GET vu que la requête ne passe pas par l'URL.
Le lien est de type href

merci encore

Re: Enregistrer dans base sql quand on clique sur un lien

Posté : 26 déc. 2016, 12:48
par benv8nam
Tu peux le faire en Ajax.
Tu ajoutes un événement à chaque fois qu'une personne clique sur le lien externe tu envois une requête au serveur qui alimentera ta base.

Re: Enregistrer dans base sql quand on clique sur un lien

Posté : 26 déc. 2016, 12:59
par cris84
Bonjour,

du ce style ?
document.ready(function{('a').click{  $.ajax({
        type    : "post",
        url : fichier_php_qui_traite_lesdonnees,
        data    : variableapasser
                success : function(data){//ce qu'il faut faire en cas de succes}
                error   : function(obj,msg,objEvent){//ce qu'il faut ffaire en cas d'erreur}
}});

Re: Enregistrer dans base sql quand on clique sur un lien

Posté : 26 déc. 2016, 13:41
par moogli
salut,

oui, ceci dit cela n'est pas fiable car certain navigateur pourrait ne pas exécuter ta requête.
depuis i faut peut être filtrr un peu parce que la même le changement de page de ton site est prit en compte dans la requête cela va vite être lourd coté requête.

le plus simple c'est de remplacer les liens directs par des lien vers un fichier php de ton site qui lui fera la redirection.
par exemple
<a href="autresite.com'" >autresite.com</a> devient <a href="redirection.php?url=autresite.com">autresite.com</a>
et redirection.php
<?php
if(empty($_GET['autresite.com)) {
// appel du fichier sans le paramètre oust
header('Location : ceque tu veux');
exit();
}

// la tu fait ta requête SQL elle ne doit pas être bloquante pour l'utilisateur donc pense à capture les exceptions et tester les retours pour que ton script ne produise pas une seule erreur. 
// la redirection

header('Location : '.$_GET['url']);
exit();
c'est simple et pour peu que l'insertion se fasse vite c'est quais transparent pour l'utilisateur.

tu peux faire la même chose en JS et lancer la redirection dans la callback de la requête serveur.


@+

Re: Enregistrer dans base sql quand on clique sur un lien

Posté : 27 déc. 2016, 12:38
par cris84
Bonjour,

effectivement j'avais pas pensé à cette méthode.
Du coup, j'ai raccourci en faisant ça (car le lien ne peut pas être vide).
fichier redirection.php
<?php
require('conf.inc.php');

$url=mysqli_real_escape_string($bdd, $_GET['url']);


$sql=mysqli_query($bdd, "SELECT url FROM achat WHERE url='".$url."'")or die(mysqli_error($bdd));
if (mysqli_num_rows($sql)==0) 
{

 mysqli_query($bdd, "INSERT INTO achat (clic, url) VALUES ('0', '".$url."')")or die(mysqli_error($bdd));
 }
 else 
 {
 
 mysqli_query($bdd, "UPDATE achat SET clic =clic + 1 WHERE url='".$url."'")or die(mysqli_error($bdd));
 }

header('Location: '.$_GET['url'].'');
Merci encore

Re: [RESOLU] Enregistrer dans base sql quand on clique sur un lien

Posté : 28 déc. 2016, 11:43
par moogli
de rien :)

pense à cliquer sur résolus (à gauche du titre) lorsque c'est le cas ;) (bon la je l'ai fait pour toi, mais que ça se reproduise pas hein :mrgreen:)

merci

Re: [RESOLU] Enregistrer dans base sql quand on clique sur un lien

Posté : 02 janv. 2017, 16:32
par cris84
Bonjour et bonne année à tous,

c'est noté, merci de la réponse et de l'action

:)