Compteur de clic et enregistrement dans BDD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Compteur de clic et enregistrement dans BDD

Re: Compteur de clic et enregistrement dans BDD

par nanalala » 08 juin 2012, 11:56

Merci bien cela fonctionne à merveille, je n'ai pas encore la bonne logique quand je réfléchi parce que maintenant que j'ai fait ce que tu m'as dit cela me paraît évident.
Je te remercie encore pour toute l'aide que tu m'as donné, en plus tu répond rapidement est ça c'est vraiment cool.

Bonne journée à toi xTG

Re: Compteur de clic et enregistrement dans BDD

par xTG » 08 juin 2012, 11:44

Oulala non tu n'as rien compris de mon message...
Le code avec les fonctions était juste un exemple totalement hors de ton problème pour t'expliquer le principe sur quelque chose de plus facile et lisible...

Renommes tous tes attributs rel par la même valeur.
Et dans le sélecteur jquery ne mets que celui là.
Toutes les rel seront connectés à la même fonction.

Re: Compteur de clic et enregistrement dans BDD

par nanalala » 08 juin 2012, 11:11

Ok alors j'ai bien compris le principe mais visiblement je l'ai mal appliqué parce que cela ne marche plus, voici la partie initiale :
 mysql_free_result($req);
        echo '
        <script type="text/javascript">                
            // valable pour un seul lien à la fois
            $(document).ready(function(){
                // pour un autre lien il suffit simplement de changer le nom de l\'attribut REL 
                $(\'a[rel="Lien1"]\').click(function() {
                    $.ajax({
                        type:\'POST\',
                        url: \'libs/compteur-clic.php\', // ici on appel le fichier PHP pour compter le clique
                        data: { id : $(this).attr("id"), urlImg : $(this).find("img").attr("src") }, // Ici, on récupère l\id de notre source et le nom de limage (ne pas modifier)
                        async: false
                    });
                    return true;              
                });
            });
        </script>';            

Et voici ce que j'ai fait en suivant ton système :
        mysql_free_result($req);
  function traitement(){
	   echo '<script type="text/javascript">   
	                       $.ajax({
                        type:\'POST\',
                        url: \'libs/compteur-clic.php\', // ici on appel le fichier PHP pour compter le clique
                        data: { id : $(this).attr("id"), urlImg : $(this).find("img").attr("src") }, // Ici, on récupère l\id de notre source et le nom de limage(ne pas modifier)
                        async: false
                    });
	     </srcipt>';   
	   };
	    
	   function Lien1(){
	   echo'<script type="text/javascript">  
		 $(document).ready(function(){
                $(\'a[rel="Lien1"]\').click(function() {
				traitement();
				                    return true;              
                });
            });
         
				}
	   </script>';
	   } 
Mais cela ne me compte plus l'image 1, alors je ne dois pas faire comme il faut.... Je suis pas douée quand même, il y a toujours un truc qui ne va pas....

Re: Compteur de clic et enregistrement dans BDD

par xTG » 08 juin 2012, 08:16

Euh non bien sûr que ce n'était pas une blague...
Tu définis une valeur rel différente pour chaque lien, mais qui effectue la même fonction.
Donc autant mettre le même rel partout.

En gros ce que tu fais actuellement pourrait se rapporter à ceci :
function traitement(){};
function lien1(){
  traitement();
}
function lien2(){
  traitement();
}
function lien3(){
  traitement();
}

lien1();
lien2();
lien3();
Ici on simplifierai tout de suite en appelant directement la fonction traitement() puisque le traitement est le même.

Re: Compteur de clic et enregistrement dans BDD

par nanalala » 07 juin 2012, 22:32

Je suis désolée mais je ne te comprend pas, est ce une blague parce que ce que je veux faire est pas faisable?

Re: Compteur de clic et enregistrement dans BDD

par xTG » 07 juin 2012, 17:29

Pourquoi ne pas utiliser le même rel pour tes urls dans ce cas ? ^^

Re: Compteur de clic et enregistrement dans BDD

par nanalala » 07 juin 2012, 16:41

En fait j'ai une dernière question, cette question je me la pose souvent, comment rétrécir son code?
Et là j'aimerais supprimer ces trois script javascript et les rassembler en un seul script, j'ai essayé de faire ainsi :

[javascript] <script type="text/javascript">
// valable pour un seul lien à la fois
$(document).ready(function(){
$(\'a[rel="Lien1", "Lien2", "Lien3"]\').click(function() {
$.ajax({
type:\'POST\',
url: \'libs/compteur-clic.php\', // ici on appel le fichier PHP pour compter le clique
data: { id : $(this).attr("id"), urlImg : $(this).find("img").attr("src") }, // Ici, on récupère l\id de notre source et le nom de limage(ne pas modifier)
async: false
});
return true;
});
});
</script>'; [/javascript]

Comme tu peux le voir $(\'a[rel="Lien1", "Lien2", "Lien3"]\').click(function() { renferme mes trois liens alors qu'avant c'était séparé $(\'a[rel="Lien1"]\').click(function() {, $(\'a[rel="Lien2"]\').click(function() {
Seulement cela ne fonctionne pas, alors je pense que ma réflexion n'est pas la bonne, est ce que tu peux encore m'aider pour réduire tout ce code en triple?

Merci

Re: Compteur de clic et enregistrement dans BDD

par nanalala » 07 juin 2012, 14:34

Ouii c'est tout bon, en effet ça marche mieux si basename est dans la requête.

Merci beaucoup xTG, tout fonctionne, et j'ai bien appris avec toi.
Je n’hésiterais pas à revenir sur ce forum si j'ai besoin d'aide.
Merci encore pour ton aide.

Bonne aprem

Re: Compteur de clic et enregistrement dans BDD

par xTG » 07 juin 2012, 14:18

Oui elle ne sert pas à grand chose... Il faut la mettre dans ta partie PHP qui exécute la requête.
Cette fonction est là pour que tu ne récupères que le nom de l'image.
A moins que tu ne souhaites enregistrer le chemin complet. A toi de voir. :)

Re: Compteur de clic et enregistrement dans BDD

par nanalala » 07 juin 2012, 14:15

C'est bon cela remarche, j'avais fait une erreur toute bête, j'ai pas eu besoin de débuguer le code PHP.
Alors j'ai réécrit le code pour récupérer et enregistrer le nom de l'image comme on avait vu ce matin et j'ai voulu donc utiliser la fonction basename() que tu m'as donné mais je ne suis pas sur de l'utiliser au bon endroit, parce que je n'ai pas de résultat.

Je te montre ce que j'ai fait :
        mysql_free_result($req);
               
        // Script jqeury pour compter le clique
        echo '
        <script type="text/javascript">                
            // valable pour un seul lien à la fois
            $(document).ready(function(){
                $(\'a[rel="Lien1"]\').click(function() {
                    $.ajax({
                        type:\'POST\',
                        url: \'libs/compteur-clic.php\', // ici on appel le fichier PHP pour compter le clique
                        data: { id : $(this).attr("id"), urlImg : $(this).find("img").attr("src") }, // Ici, on récupère l\id de notre source et le nom de limage(ne pas modifier)
                        async: false
                    });
                    return true;              
                });
            });
        </script>';                
        // lien de téléchargement
        echo "<div id='pub_flottante_main_container_1'>"."<a rel='Lien1' id=".$IdFichier1." href=".$LienFichier1." >"."<img src='images/" . $imageA . "' alt='Random Image' />"."</a>"."</div>" ;
       
	    $chemin = 'images/" .$imageA. ';
		$fichier = basename($chemin, ".jpg");
		?>
J'ai mis ma fonction à la suite du chemin de mon image (ci dessus) et j'ai changer $_POST['urlImg'] par ma variable $fichier (ci-dessous).
if ($ClicValide) {
    $insertion = mysql_query("INSERT INTO compteur_clic (`c_id_source`,`mon_fichier`,`c_date_clic`,`c_ip_visiteur`) VALUES (".intval($_POST['id']).",'".mysql_real_escape_string($_POST['$fichier'])."','".mysql_real_escape_string(date("Y-m-d"))."','".mysql_real_escape_string($_SERVER["REMOTE_ADDR"])."')") or die(mysql_error());
}
J'ai pas d'erreur mais ça change rien, ça ne marche pas. Est ce que la fonction est mal placée?

Re: Compteur de clic et enregistrement dans BDD

par xTG » 07 juin 2012, 12:26

Il faut alors debug le code PHP.
Tu peux récupérer l'affichage généré par le PHP en rajoutant ceci dans la fonction :

Code : Tout sélectionner

success: function(data) { alert(data); },

Re: Compteur de clic et enregistrement dans BDD

par nanalala » 07 juin 2012, 11:46

Aucune erreur, le compteur ne fonctionne pas c'est tout. Mais je me demande si cela ne viendrait pas du fait que j'ai divisé mon code PHP initial en trois parties, est ce possible?

Re: Compteur de clic et enregistrement dans BDD

par xTG » 07 juin 2012, 11:44

Une erreur javascript de générée ?
Qu'en est-il du code PHP utilisé ?

Re: Compteur de clic et enregistrement dans BDD

par nanalala » 07 juin 2012, 11:40

Oui mais dans cette version je ne me suis pas encore occupée de récupérer le nom de mon image, j'ai commencé simplement avec ce que j'avais à la base, puis je comptais rajouté ce qu'on a vu petit à petit mais là déjà c'est tout le système du compteur de clic qui ne marche pas. Et c'est ça que je ne comprend pas...

Re: Compteur de clic et enregistrement dans BDD

par xTG » 07 juin 2012, 11:32

Le dossier images tel que je le disais précédemment ?
Car dans ton exemple fixe tu ne charges pas une image se trouvant dans un sous-dossier, donc il n'y a que le nom de l'image qui est envoyé.
C'est pour cela que cela marche. ;)