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:
Ensuite, je dois appeler une fonction PHP dans rsslib.php alors comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); ?>
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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); ?>
Et pour terminer, mon fichier compteur_lien_rss.php qui serait supposé insérer les données dans la bdd:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>';
J'espère avoir fourni assez de renseignements... Merci d'avance pour votre réponse!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()); ?>
![]()
Partager