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

Langage PHP Discussion :

Passage de variable vers iframe ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut Passage de variable vers iframe ?
    Bonjour à tous

    J'ai un petit soucis quant-au passage d'une variable vers une iframe.
    Je m'explique rapidement:
    J'ai créer un éditeur WYSIWYG afficher via une iframe.
    apellée de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<iframe name="MMEditor" id="MMEditor" style="width:850px; height:530px; border:0px;" src="modules/RWE/index.php?editor='.$editorname.'>';
    Ca marchais bien... jusqu'a ce que je veuille éditer un texte.
    J'ai donc rusé et essayé de passé la chaine (corps de texte) dans l'url afin de pouvoir récupérer le texte déjà écris et l'insérer dans l'éditeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<iframe name="MMEditor" id="MMEditor" style="width:850px; height:530px; border:0px;" src="modules/RWE/index.php?editor='.$editorname.'&txt='.urlencode($txt).'>';
    Au début ça marchais plutot bien.
    Mais a force, sur de très long articles (style tuto) j'ai un soucis d'URL invalide

    Je voulais donc savoir quels étaient les différent moyen faire passer cette variable.
    J'ai bien penser écrire la chaine dans un fichier texte et le récupérer coté frame mais bon... :s
    Et, non je ne peux pas faire la requête db dans la frame plutôt que dans la page principale pour des raisons simples:
    1) Je code un CMS donc j'ai besoin d'un minimum de rigueur dans le code.
    2) Je n'utilise pas que Mon éditeur, mais aussi TinyMCE et JCE qui sont apellé par un simple <textarea[...]>".$texte."</textarea> donc la requête est déjà faire avant l'apelle de la frame quoi qu'il se passe.

    Merci d'avance pour vos réponses

  2. #2
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut,

    Je ne sais pas si ça marchera dans ton cas mais tu pourrais essayer de passer par les variables de session et par exemple définir une variable "$_SESSION['texte']" contenant ton texte que tu récupères ensuite dans le fichier php de ton éditeur.

    Voilà A++

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut
    Je garde cette solution en tant que réserve.

    Pour le moment j'essaye encore en javascript:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function RWE_get(editorid, txt){
    	var frame = frames['MMEditor'];
    	var divelem = frame.document.getElementById(editorid);
    	divelem.innerHTML = txt;
    }
    ça a l'air de fonctionner, mais problème:
    le script s'éxécute avant la fin du chargement du div en question, et donc ne fonctionne pas.
    y'a t'il un moyen de dire à javascript d'attendre que le div existe ?
    je crois qu'il y a moyen de tester l'existence d'un element non ? on peut faire le test en boucle jusqu'a ce que ça soit créer ?

    Edit (sans passé par onLoad qui doit forcement etre placer sur <body>)

    Merci d'avance.

  4. #4
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut !

    oui tu peux utiliser la fonction suivante qui vérifie si une variable existe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function isset(variable) {
        var undefined;
        return ( variable == undefined ? false : true );
    }
     
    // exemple
    if(isset(document.getElementById('ma_div')) {
      alert ('Ma div existe');
    }
    Par contre, attention au boucle infinie... Tu pourrais aussi appeler la fonction à la fin de ta page en utilisant le code suivant qui peut être placé n'importe où :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script language="javascript">
    window.onload() = function() { RWE_get(); }
    </script>
    A+

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut
    Je viens de finir mon script javascript, je me suis débrouillé autrement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function load_text(editorid, txt) {
    	var div = frames['MMEditor'].document.getElementById(editorid);
    	if (div) {
    		get_text(editorid, txt)
    	}
    	else {
    		setTimeout(function(){load_text(editorid, txt);}, 400);
    	}
    }
     
    function get_text(editorid, txt) {
    	var divelem = frames['MMEditor'].document.getElementById(editorid);
    	divelem.innerHTML = txt;
    }
    tant que le div n'existe pas, on re-test son existence toute les 400ms (c'est la moyenne de chargement de la page chez moi)
    Une fois que le div est trouvé, on y ajouter le texte "txt"

    Mais j'ai encore un soucis.
    Comment dois-je encodé ma chaine lors de l'apelle de la fonction ?

    si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type='text/javascript'>load_text('mondiv', '".$machainedecaractereenbbcode."');</script>
    ça fonctionne correctement pour les toute petites chaines, mais lorsque je veux charger un article complet ou une news ça marche pas.
    C'est compréhensible vu la source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    load_text("MMorph", "<div style="text-align: center;">[H2]Installation, Configuration et S&eacute;curisation serveur web Apache 2 base Debian 5[/H2]
    Sommaire:
    I] Introduction
    II] Installation de Debian
    </div>[HR]
    [H2]I] Introduction[/H2]
    Bonjour et Bienvenu &agrave; tous et &agrave; toute sur ce Tutoriel Apache.
    [.......])
    Avez vous une idée de comment encoder ma chaine sachant que je dois la décodé avant de l'insérer dans le textarea
    Au pire je ferrais un script ajax, mais je pense pas que ça soit nécessaire.

  6. #6
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Es-tu sur que les guillemets (double et simple) de ta news ou de ton article sont bien encodés ?

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

Discussions similaires

  1. [DOM] Passage de variable vers PHP
    Par popovitch130 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 05/07/2008, 22h13
  2. Passage de variable vers formulaire en div
    Par Digiduck dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2008, 11h48
  3. passage de variable vers un swf
    Par toujoursenretard dans le forum Flash
    Réponses: 6
    Dernier message: 24/10/2007, 12h44
  4. Passage de variables entre iFrames
    Par d4rkv4n dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 19/08/2007, 04h49
  5. passage de variable vers XML
    Par saidfes dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 16/05/2006, 16h20

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