[RESOLU] Aide bouton sans rechargement de page

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 : [RESOLU] Aide bouton sans rechargement de page

Re: Aide bouton sans rechargement de page

par Larker » 06 avr. 2017, 18:38

Du coup la fonction marche correctement. C'est l'envoie à la bdd qui bloque. Je pensais que ça pouvait peut être venir de là : $id_serie = $_GET['id'];
Vu qu'il n'y a plus de rechargement de page avec url comment faire ? Le GET ne peut pas fonctionner techniquement ?

Re: Aide bouton sans rechargement de page

par Larker » 06 avr. 2017, 17:25

Pas dans le log, dans la cpnsole *

Re: Aide bouton sans rechargement de page

par Larker » 06 avr. 2017, 17:24

Ca ne fonctionne pas. Quand je vais dans le log j'ai ceci : <a hrefid="2754" mod="top-serie" class="watchlist">
Ca ne recharge pas la page mais le soucis c'est que le formulaire ne s'envoie pas. :/

Re: Aide bouton sans rechargement de page

par Larker » 06 avr. 2017, 00:56

Merci ! Je vais tester ça demain et je te dirais ce qu'il en est ! Merci encore pour ton aide !

Re: Aide bouton sans rechargement de page

par Aureusms » 02 avr. 2017, 23:33

Je pense que tu as un problème dans ton lien.
Je te propose ceci :

le bout de javascript doit envoyer vers module-top-serie.php les données quand tu cliques sur le DOM qui possède la classe .whatchlist (pourquoi se limiter à la balise <a>?)
$(document.body).on({
	click : function (event) {
		event.stopPropagation(); //on bloc sur l'élément clické
		event.preventDefault();  //on enlève l'action par défaut
		var element = event.target||event.srcElement; //on récupère l'élement dans le DOM
		var f = $(element);  //puis on le définit dans jQuery
		
		if (f.is('a')) { //est ce que c'est un lien <a> ?
			$.ajax ({
				url : "module-top-serie.php",
				data : {id : f.attr('hrefid'), mod : f.attr('mod')},
				type : "get",	
				cache : false,
				complete : function (xhr, result) {
					if (result != "success") return;				
					var reponse = xhr.responseText;	
					//autre code de réponse si module-top-serie retourne un texte par exemple.
				}
			});
		}
	}
},'.whatchlist');
et les liens devront avoir cette forme pour que cela fonctionne
 <a hrefid="<?php echo $getTop['id']; ?>" mod="top-serie" class="watchlist">Envie de voir cette série</a>

Re: Aide bouton sans rechargement de page

par Larker » 02 avr. 2017, 16:48

Personne pour m'aider ? je sens que je suis tout prêt de la solution mais je ne vois pas pourquoi ça ne fonctionne pas.

Le code :
Page header:
<script>
$(document).ready(function(){
    $("a.watchlist").click(function(e){
  e.preventDefault();
        $.get("module-top-serie.php", function(data, status){
            alert("Data: " + data + "\nStatus: " + status);
        });
    });
});
</script>

Page module-top-serie.php
<?php
 $succes=0;
  $erreur=0;
  if (isset ($_GET['id']) && isset ($_SESSION['id'])){
        $posteur = $_SESSION['id'];;
        $id_serie = $_GET['id'];
        $date = date('Y-m-d');
        $getEnvieMembre = $bdd->query("SELECT * FROM `envie_serie` WHERE id_membre=$posteur AND id_serie=$id_serie");
if( $getEnvieMembre->fetch() !== false )
{  
  $erreur=1;
 }
      else
{
        $addwatchliste = $bdd->prepare("INSERT INTO `envie_serie` VALUES ('', ?, ?, ?)");
        $addwatchliste->execute(array($id_serie, $posteur, $date));			
        $succes=1;
  }
  }
?>
 <a href="?mod=top-serie&id=<?=$getTop['id']; ?>" name="envie_add" class="watchlist">Envie de voir cette série</a>
Merci d'avance !

Re: Aide bouton sans rechargement de page

par Larker » 26 mars 2017, 15:02

Bon du coup j'ai modifié un peu le code. Maintenant le rechargement de la page est bloqué. par contre l'envoie à la bdd ne fonctionne pas.
<script>
$(document).ready(function(){
    $("a.watchlist").click(function(e){
	e.preventDefault();
        $.get("module-top-serie.php", function(data, status){
            alert("Data: " + data + "\nStatus: " + status);
        });
    });
});
</script>
<?php
 $succes=0;
  $erreur=0;
  if (isset ($_GET['id']) && isset ($_SESSION['id'])){
        $posteur = $_SESSION['id'];;
        $id_serie = $_GET['id'];
        $date = date('Y-m-d');
        $getEnvieMembre = $bdd->query("SELECT * FROM `envie_serie` WHERE id_membre=$posteur AND id_serie=$id_serie");
if( $getEnvieMembre->fetch() !== false )
{  
  $erreur=1;
 }
      else
{
        $addwatchliste = $bdd->prepare("INSERT INTO `envie_serie` VALUES ('', ?, ?, ?)");
        $addwatchliste->execute(array($id_serie, $posteur, $date));			
        $succes=1;
  }
  }
?>
 <a href="?mod=top-serie&id=<?=$getTop['id']; ?>" name="envie_add" class="watchlist">Envie de voir cette série</a>

Re: Aide bouton sans rechargement de page

par Larker » 25 mars 2017, 17:27

ça ne fonctionne pas. En fait c'est sur un lien donc je modifie bien cette ligne : $("a").click(function(){
Sauf que je voulais savoir comment préciser le name du lien envie_add car j'ai plusieurs envoies de formulaire sur cette page et je voudrais tester avec un seul pour le moment.
Pour le moment ça recharge toujours la page.

Re: Aide bouton sans rechargement de page

par Larker » 25 mars 2017, 17:16

D'accord merci je vais tester ! Mais du coup je voulais savoir pour le $get je met le fichier ou se trouve mon envoie de formulaire ?

Re: Aide bouton sans rechargement de page

par or 1 » 25 mars 2017, 17:09

Aide bouton sans rechargement de page

par Larker » 25 mars 2017, 16:48

Bonjour,

Je bloque depuis plusieurs semaines maintenant sur quelque chose qui peut paraitre idiot : L'envoie d'un formulaire via bouton sans que ça ne recharge la page.
J'arrive à faire la partie php mais je ne vois vraiment pas comment faire la partie ajax ? Il s'agit d'un bouton qui permet aux membre d'informer les autres qu'ils ont envie de voir une série tv.

Voilà mon code pour le moment :
	$succes=0;
	$erreur=0;
	if (isset ($_GET['id']) && isset ($_SESSION['id'])){
				$posteur = $_SESSION['id'];;
				$id_serie = $_GET['id'];
				$date = date('Y-m-d');
				$getEnvieMembre = $bdd->query("SELECT * FROM `envie_serie` WHERE id_membre=$posteur AND id_serie=$id_serie");
if( $getEnvieMembre->fetch() !== false )
{  
  $erreur=1;
 }
			else
{
				$addwatchliste = $bdd->prepare("INSERT INTO `envie_serie` VALUES ('', ?, ?, ?)");
				$addwatchliste->execute(array($id_serie, $posteur, $date));			
				$succes=1;
	}
	}
                            <div class="movie__btns">
                               	<form method="post" action="">
                                <a href="?mod=top-serie&id=<?=$getTop['id']; ?>" name="envie_add" class="watchlist">Envie de voir cette série</a>
			      </form>
                            </div>
Merci d'avance pour votre aide ! Je bloque vraiment dessus et je ne comprends vraiment pas comment faire. :/