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] Récupération de données avec NicEdit


Sujet :

AJAX

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 35
    Points
    35
    Par défaut [AJAX] Récupération de données avec NicEdit
    Bonjour

    Autant prévenir tout de suite, je vais être un peu long mais c'est pour la bonne compréhension de mon problème.

    J'ai réalisé une page composée d'un formulaire, lui même composé de 2 input et 2 textarea et d'1 bouton Submit. L'un de ces textarea est "piloté" par NicEdit (enrichissement de texte du type : Bold, Italic, Underline...).

    Etant donné que je veux pouvoir soumettre ce formulaire sans avoir à rafraichir la totalité de ma page, j'ai utilisé de l'Ajax afin que les données soient envoyer au serveur web sur un script PHP.

    Le script PHP traite les données reçues, les enregistre dans une base SQL puis renvoi le contenu de ces variables à la page du formulaire.

    LE PROBLEME
    Bref, rien de bien compliqué (à priori). Lors de l'enregistrement dans la base, seuls les 2 input et 1 textarea s'enregistrent correctement. Par contre, le textarea piloté par NicEdit n'est pas pris en compte.


    LES SCRIPTS

    Le formulaire HTLM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form method="POST">
        <input id="redact_titre" type="texte" />
        <textarea id="redact_chapo"></textarea>
        <textarea id="redact_article"></textarea> <!-- Le TEXTAREA QUI POSE PROBLEME -->
        <input id="redact_signature" />
        <input name="articleSub" id="articleSub" type="button" onclick="jouer();" value="Enregistrer" />&nbsp;<img id="charge" src="chargeur.gif" />
    </form>
    Les scripts Ajax
    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
    /* FORMULAIRE ARTICLE **************/
    function jouer() {
        objectXHR = creationXHR();
        var parametres = "redact_titre="+ codeContenu("redact_titre")+"&"+"redact_chapo="+ codeContenu("redact_chapo")+"&"+"redact_article="+ codeContenu("redact_article")+"&"+"redact_signature="+ codeContenu("redact_signature")+"&"+"redact_cookie="+ codeContenu("redact_cookie");
        objectXHR.open("post","article_post.php", true) ;
        objectXHR.onreadystatechange = actualiserPage;
        objectXHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        document.getElementById("articleSub").disabled= true;
        document.getElementById("charge").style.visibility="visible";
        objectXHR.send(parametres);
    }
     
    /* ENRICHISSEMENT TEXTE NicEdit ****/
    bkLib.onDomLoaded(function() {
        var editor = new nicEditor({buttonList : ['justify','bold','italic','underline','subscript','superscript','link','unlink','removeformat','save'], onSave : function(content, id, instance) {
              alert(content);
            }}).panelInstance('redact_article');
    });
     
    /* ACTUALISER ARTICLE **************/
    function actualiserPage() {
        if(objectXHR.readyState == 4) {
            if(objectXHR.status == 200) {
                var nouveauResultat = objectXHR.responseText.split(":::");
                remplacerContenu("redact_titre", decodeURI(nouveauResultat[0]));
                remplacerContenu("redact_chapo", decodeURI(nouveauResultat[1]));
                remplacerContenu("redact_article", decodeURI(nouveauResultat[2]));
                remplacerContenu("redact_signature", decodeURI(nouveauResultat[3]));
                remplacerContenu("redact_cookie", decodeURI(nouveauResultat[4]));
                document.getElementById("articleSub").disabled= false;
                document.getElementById("charge").style.visibility="hidden";
            } else {
                var erreurServeur = objectXHR.responseText="Erreur serveur";
            }
        }
    }
     
    /* TEST NAVIGATEUR *****************/
    function testerNavigateur() {
        objectXHR = creationXHR();
        if(objectXHR==null) {
            document.getElementById("articleSub").disabled= true;
            var erreurNavigateur="Erreur Navigateur : Creation d'objet XHR impossible";
        }
        document.getElementById("articleSub").onclick=jouer();
    }
     
    /* TEST DU NAVIGATEUR AU CHARGEMENT */    
    window.document.onload=testerNavigateur();
    Le Script PHP de traitement
    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
    <?php
    require ("connect_bdd_sql.php");
    header("Content-Type: text/plain ; charset=utf-8");
    header("Cache-Control: no-cache, private");
    header("Pragma: no-cache");
    sleep(2);
    $redact_titre=$_REQUEST['redact_titre'];
    $redact_chapo=$_REQUEST['redact_chapo'];
    $redact_article=$_REQUEST['redact_article'];
    $redact_signature=$_REQUEST['redact_signature'];
    mysql_query ("INSERT INTO extra_archive (arch_titre, arch_chapo, arch_article, arch_auteur) VALUES ('$redact_titre', '$redact_chapo', '$redact_article', '$redact_signature')");
    mysql_close();
    $resultat=$redact_titre.":::".$redact_chapo.":::".$redact_article.":::".$redact_signature;
    echo $resultat;
    ?>
    CONCLUSION
    Vous remarquerez dans le script JS "Enrichissement de texte NicEdit" que j'effectue une alerte afin de comprendre comment récupérer la variable dont j'ai besoin. Bien entendu, ceci est un test et ne constitue pas le script définitif.
    J'aimerais savoir comment transmettre le contenu intégral de cette "Alerte" à mon script PHP afin que l'enregistrement s'effectue correctement.

    Merci de m'avoir lu jusqu'à la fin et merci par avance, de vos réponses.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    juste une question (et demi) pour l'instant : quel est cet "évènement" onSave ?

    Le problème ne viendrait-il pas de là ?

    A+

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 35
    Points
    35
    Par défaut
    Bonjour E.Bzz

    Et tout d'abord, félicitations pour avoir détecté cette instruction. Je t'explique...

    Afin de comprendre comment étaient traitées les variables dans le pseudo TEXTAREA de NicEdit, j'ai utilisé une fonction intégrée à ce produit. Elle permet d'afficher une petite "disquette" cliquable qui (je le pensais), sert à sauvegarder le contenu du textarea. Or, cette fonction ne sert qu'à afficher dans une alerte le contenu du textarea.

    Cela n'est donc pas satisfaisant. Mais une chose est certaine, puisqu'on peut afficher le contenu du Textarea dans une alerte, on doit pouvoir le récupérer dans une variable qu'on transmettrait au script PHP (chose que je ne vois pas comment faire, d'ailleurs).

    J'espère avoir répondu à ta question. Si besoin, je peux te livrer le code JS de NicEdit ou éventuellement, une url de consultation de ma page html.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Alors, pour commencer simplement, que donne un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.getElementById("redact_article").value)
    dans ta fonction jouer() ?

    A+

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 35
    Points
    35
    Par défaut
    Il ne se passe rien. Ou plus exactement, une alerte sans message apparait mais sans retranscrire le contenu du Textarea (que j'avais pris soins de remplir auparavant, bien entendu ).

    Peut-on en conclure qu'il faut fouiller dans le code de NicEdit pour corriger le problème ?

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Ton problème ne serait-il pas celui soulevé par ThomasR dans ce thread ?

    A+

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 35
    Points
    35
    Par défaut
    Non, je ne pense pas. Dans le cas que tu indiques, lors du rafraichissement de la page, le contenu du textarea semble disparaitre (si j'ai bien compris).

    En ce qui me concerne, le contenu reste mais il n'est pas récupéré par mon script PHP. De la même manière que l'alerte que tu m'as fait écrire ne fait rien apparaitre alors que le textarea contine bel et bien du texte.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bon ben ne connaissant pas nicEdit, je ne peux pas t'aider plus (un problème d'accès sûrement lié aux scripts associés à l'objet).
    As-tu essayé avec les équivalents : FCKEditor, TyniMCE ...
    (une recherche sur le forum JAvascript t'en dira plus)

    Je connais pas non plus, mais il y a plus d'infos sur les forums et les problèmes sont en général résolus

    A+

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Points : 35
    Points
    35
    Par défaut
    Merci de tes réponses et de ta patience. Si je trouve la solution, je la posterai sur ce topic.

    Et bien entendu, si quelqu'un a la réponse, qu'il ne se prive pas

    ++

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Salut

    Afin de comprendre comment étaient traitées les variables dans le pseudo TEXTAREA de NicEdit, j'ai utilisé une fonction intégrée à ce produit. Elle permet d'afficher une petite "disquette" cliquable qui (je le pensais), sert à sauvegarder le contenu du textarea. Or, cette fonction ne sert qu'à afficher dans une alerte le contenu du textarea.
    ca ressemble beaucoup (et c'est normal) à la petite disquette proposée par tinyMce pour enregistrer.

    Seulement dans ton cas le click sur cette icone lance juste un alert avec le texte de ton éditeur, ce qui prouve qu'il est bien récupéré par le click sur la disquette.

    Donc soit tu trouve la fonction (qui doit être en attente d'une instruction autre que le simple alert) lancé par le click sur cette icone et tu remplace le alert par une requête Ajax vers la page qui écrit dans la BDD, soit tu crée une nouvelle icone (qui peut être la même disquette d'ailleurs) et tu défini la fonction lancée par l'evènement onclick.

    Voilà je peux pas te dire exactement ou trouver ta fonction dans niceEdit mais le principe est le même dans TinyMce pour jQuery (je te conseille d'y jetter un coup d'oeil )

    Bonne journée

Discussions similaires

  1. [AJAX] Passer des données avec caracteres speciaux
    Par linar009 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 10/01/2007, 12h42
  2. [MySQL] Erreur lors d'une récupération de données avec critère de sélection
    Par Squalthor dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/11/2006, 12h28
  3. [D6 => XML] Récupération de données avec une boucle.
    Par Bason_sensei dans le forum Delphi
    Réponses: 1
    Dernier message: 23/05/2006, 14h50
  4. [MySQL] Problème récupération de données avec un SELECT DISTINCT
    Par 12_darte_12 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2005, 15h48
  5. Réponses: 13
    Dernier message: 20/03/2003, 09h11

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