Page 1 sur 1
Aide bouton sans rechargement de page
Posté : 25 mars 2017, 16:48
par Larker
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. :/
Re: Aide bouton sans rechargement de page
Posté : 25 mars 2017, 17:09
par or 1
Re: Aide bouton sans rechargement de page
Posté : 25 mars 2017, 17:16
par Larker
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
Posté : 25 mars 2017, 17:27
par Larker
ç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
Posté : 26 mars 2017, 15:02
par Larker
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
Posté : 02 avr. 2017, 16:48
par Larker
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
Posté : 02 avr. 2017, 23:33
par Aureusms
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
Posté : 06 avr. 2017, 00:56
par Larker
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
Posté : 06 avr. 2017, 17:24
par Larker
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
Posté : 06 avr. 2017, 17:25
par Larker
Pas dans le log, dans la cpnsole *
Re: Aide bouton sans rechargement de page
Posté : 06 avr. 2017, 18:38
par Larker
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 ?