IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Reload avec Ajax vers une autre page .php


Sujet :

AJAX

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut [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 : 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
     
    <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 : 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
     
    <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.

  2. #2
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    En étudiant mon code, je constate que la partie de soumission du formulaire en Ajax n'est jamais effectué.
    Il semblerait que cela vienne du formulaire crée dans le fichier modifierZoneTexte.js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    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="sModifPublier" id="sModifPublier" value="Publier" /></p>'
    			+ '</form>');
    Cette partie n'est jamais exécuté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $.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

  3. #3
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Le problème vient du fait que tu lie l'évènement submit du formulaire avant le moment ou tu le crée.

    Déplace la fonction $("#formTextModif").submit(function(e) { ... } a la fin
    de la fonction $(".modifier").click(function() { ... } pour tester.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  4. #4
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    [Résolu]
    Merci encore marcha, c'est exactement ce que je souhaitais ... et que je ne parvenais pas à trouver.
    Je note "la coquille" faite qui pourra aider d'autres personnes.

    Bonne journée.
    Transact.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème redirection vers une autre page PHP
    Par dekalima dans le forum Langage
    Réponses: 2
    Dernier message: 03/01/2011, 13h21
  2. Réponses: 9
    Dernier message: 15/04/2009, 15h09
  3. redirection vers une autre page php
    Par j2eejsp dans le forum Langage
    Réponses: 3
    Dernier message: 04/02/2009, 01h45
  4. [AJAX] Pop up qui renvoie vers une autre page
    Par gettingway dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/07/2008, 15h06
  5. [AJAX] Lien vers une autre page
    Par claire13 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/11/2007, 20h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo