[AJAX] Reload avec Ajax vers une autre page .php
Bonjour à toutes et à tous,
Explication du problème : Dans un formulaire de modification d'une publication effectuée par un producteur dans son espace perso, j'ai un bouton modifier avec une action javascript en jQuery permettant d'afficher un textarea avec le contenu de la dernière publication pour modification.
Lorsque je soumets le formulaire avec le bouton submit le contenu du champ textarea est "updaté" dans la base des publications (donc ok) par contre la page
renvoyée par le serveur est la page contenant le script php de mise à jour de la publication et non la page contenant la publication mise à jour.
Voici les fichiers impliqués :
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
|
<code type="javascript">
/** script traitant de la mise à jour de la zone de texte de publication dans l'espace producteur */
$(document).ready(function() {
$(".modifier").click(function() {
// récupérer dans une variable la valeur de la zone de publication
var publication = $(".zone_publier").text();
/**
objectif : Une fois que nous avons récupéré la valeur textuelle de la div stockant la dernière publication
du producteur, nous devons afficher le champ textarea du formulaire. Cependant ce champ textarea
doit contenir la dernière publication du producteur afin que ce dernier puisse modifier celle-ci.
*/
// il faut créer un nouveau formulaire pour la modification du dernier texte publié par le producteur.
// pour effectuer "un retour à la ligne" dans du texte il faut concaténer ce texte avec l'opérateur +
var $form =
$('<form name="form3" id="formTextModif" method="post" action="modif_publierTexte.php">'
+ '<textarea name="contenu" rows="15" cols="130" maxlength="5000" required="required">'
+ publication + '</textarea>'
+ '<div id="loader" style="display:none"><img src="img/loader.gif" alt="loader" /></div>'
+ '<p><input type="submit" class="publier" name="submit2" id="submit2" value="Publier" /></p>'
+ '</form>');
// on utilise la méthode prepend() pour ajouter le texte du formulaire dans la div modifierTexte du fichier zone_producteur.php
$("#modifierTexte").prepend($form);
$(".modifier").fadeOut(2000);
$(".zone_ajout").fadeOut(2000);
}); // fin $(".modifier").click(...)
// lors de la soumission du formulaire
$("#formTextModif").submit(function(e) {
// pendant la soumission on affiche le loader d'attente ajax
$("#loader").show();
e.preventDefault(); // empêcher le navigateur de soumettre lui même le formulaire
// on récupère la valeur modifiée du champ textarea du formulaire
var contenu = $(this).find("textarea[name=contenu]").val();
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
error: function() { alert("erreur !"); },
success: function(retour){ alert("Données obtenues : " + retour ); }
}); // fin $.ajax
}); // fin ("#formTextModif").submit()
}); //fin $(document)
</code> |
et le fichier php permettant la mise à jour dans la table des publications
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
|
<code type="php">
<?php
/** Script effectuant le traitement de la mise à jour dans la table publicationS du texte publié depuis le formulaire*/
session_start(); // on débute une session pour récupérer les variables de session
require_once 'includes/inc_connexion.php'; // pour se connecter à la Base de données
include 'includes/inc_identification.php'; // pour accéder à l'identifiant de connexion
$conn=opendb_conn(); // on se connecte à la Base de données
if(isset($_POST['contenu']) && !empty($_POST['contenu']) && isset($_SESSION['id'])) {
$contenu = htmlspecialchars($_POST['contenu']);
$id = $_SESSION['id']; // id du producteur stocké en base
//$date = date("Y-m-d H:i:s");
// requête pour la mise à jour de la publication du producteur en base
$req =
"update publications
set texte=:texte, date=NOW()
where idproducteur=:id
order by publication_id desc limit 1";
// on prépare le traitement de la requête
$stm=$conn->prepare($req);
// Tentative de mise à jour en base d'une (nouvelle) publication en utilisant le mode transactionnel
// bloc try ... catch()
try {
// on débute la transaction
$conn->beginTransaction();
// on associe les marqueurs nommés avec les variables crées plus haut
$stm->bindParam(':texte', $contenu, PDO::PARAM_STR);
$stm->bindParam(':id', $id, PDO::PARAM_INT);
// exécution de la requête
$stm->execute();
// on commit
$conn->commit();
print 'Mise à jour effectuée ...';
} catch(PDOException $e) {
// on rollback si cela se passe mal
$conn->rollback();
// on affiche un message d'erreur
print '</br>';
print "Erreur lors de la mise à jour en base !: " . $e->getMessage() . "</br>";
} // fin bloc try ... catch()
} // if(isset(...))
?>
</code> |
Merci d'avance,
Transact.