[AJAX] Fonction PHP sur ONCLICK
Bon... Je vais essayer d'être clair.
Premièrement, bonjour à tous, je suis débutant en ajax...
Ce que j'essaie de faire depuis un temps, c'est de mettre une fonction php à l'intérieur d'un "ONCLICK". J'ai compris que ca ne se faisait pas et donc me suis tourné vers ajax... J'ai trouvé des tutos sur xAjax et j'ai tenté quelque chose.
Alors ce que je veux faire est très simple mais est très compliqué à faire, apparemment. C'est que sur le "CLICK" de mon lien (qui m'envoie sur une page d'un autre site), je veux insérer dans ma bdd les données $user, $ip $time et genre, un titre, le nom du lien (Flux RSS, par exemple). Tout ça, tout simplement pour compter le nombre de clics sur ce lien...
Après avoir tout codé d'après les tutos que j'ai lus, aucun message d'erreur ne m'est renvoyé et le lien fonctionne bien. Par contre, aucune insertion ne se fait dans la bdd. Voici donc les codes...
Donc, au début de ma page sur laquelle se trouve le lien à cliquer en question:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
<?php
require_once('./xajax_core/xajax.inc.php');
$xajax = new xajax(); // On initialise l'objet xajax.
$xajax->register(XAJAX_FUNCTION, 'compteur_lien_rss'); // Déclaration de la fonction MaFonctionPHP.
$xajax->processRequest(); // Fonction qui va se charger de générer le Javascript à partir des données que l'on a fournies à xAjax.
?>
<script type="text/JavaScript">
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
function compteur_lien_rss( user, ip, time){
var user; var ip; var time;
var xhr = getXhr()
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
alert(xhr.responseText);
}
}
xhr.open("POST","compteur_lien_rss.php",true);
xhr.send('user='+user+'&ip='+ip+'&time='+time);
}
</script>
<?
$user = $HTTP_COOKIE_VARS['username'];
if ($user == "") { $user = "Visiteur"; }
$ip = $REMOTE_ADDR;
$time = time();
?> |
Ensuite, je dois appeler une fonction PHP dans rsslib.php alors comme suit:
Code:
1 2 3 4 5 6
|
<?php
require_once("rsslib.php");
$url = "http://www.quebechebdo.com/Rss/c/13617/Volleyball";
echo RSS_Display($url, 15, false, true);
?> |
Dans mon fichier rsslib.php, j'ai plusieurs fonctions que je ne vous montrerai pas mais je ne mettrai que le bout de code qui affiche le lien à cliquer...
Code:
1 2 3 4
|
$page .= '
<tr><td><font size="1">'.$description.'</font></td></tr>
<tr><td align="right"><font size="1"><a onclick=\'xajax_compteur_lien_rss(\''.$user.'\',\''.$ip.'\',\''.$time.'\');\' href="'.$link.'">[Lire la suite...]</a></font></td></tr>'; |
Et pour terminer, mon fichier compteur_lien_rss.php qui serait supposé insérer les données dans la bdd:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<?php
// recuperation des donnees transmises
$user = (isset($_POST['user']))? mysql_real_escape_string($_POST['user']) : '';
$ip = (isset($_POST['ip']))? mysql_real_escape_string($_POST['ip']) : '';
$time = (isset($_POST['time']))? mysql_real_escape_string($_POST['time']) : '';
// insertion en bdd
db_connex();
$sql = "INSERT INTO clics VALUES ('','RSS','$user', '$ip', '$time')";
mysql_query ($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
?> |
J'espère avoir fourni assez de renseignements... Merci d'avance pour votre réponse!
:D