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 :

[DOM] insérer du code HTML dans un noeud [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 159
    Par défaut [DOM] insérer du code HTML dans un noeud
    Bonjour,

    J'ai créé une classe pour écrire du HTML via DOMDocument. Il s'agit d'une structure à base de DIV avec un header, un footer et un div de contenu.
    Je souhaite implémenter une fonction pour écrire du code HTML personnalisé dans le div de contenu, mais quand je l'ajoute en tant que texte, il encode les caractères HTML.
    J'ai également essayé de créer un nouveau DOMDocument à partir de ma chaîne de code HTML, sans succès.

    Quelqu'un aurait une idée ?
    Merci d'avance.

    La classe (ça coince au niveau de la fonction setContent) :
    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
    50
    51
    class Popup {
    	static $id;
    	static $html;
     
    	public function __construct($id){
    		$this->id = $id;
     
    		$dom = new DOMDocument('1.0', 'iso-8859-1');
    		$popupdiv = $dom->createElement('div');
    		$popupdiv->setAttribute('id',$id);
    		$popupdiv->setAttribute('class','popup');
    		$popupdiv->setAttribute('style','display:block;');
    		$dom->appendChild($popupdiv);
     
    		$headerdiv = $dom->createElement('div');
    		$headerdiv->setAttribute('class','popup_header');
    		$popupdiv->appendChild($headerdiv);
    		$maindiv = $dom->createElement('div');
    		$maindiv->setAttribute('class','popup_main');
    		$popupdiv->appendChild($maindiv);
    		$footerdiv = $dom->createElement('div');
    		$footerdiv->setAttribute('class','popup_footer');
    		$popupdiv->appendChild($footerdiv);
     
    		$this->html = $dom;
    	}
     
    	public function setTitle($title){
    		$headertext = $this->html->createTextNode($title);
    		$this->html->firstChild->firstChild->appendChild($headertext);
    		$this->html->firstChild->firstChild->replaceChild($headertext, $this->html->firstChild->firstChild->firstChild);
    	}
     
    	public function setContent($content){
    		$contenthtml = new DOMDocument('1.0', 'iso-8859-1');
    		$contenthtml->loadHTML($content);
    		$this->html->firstChild->childNodes->item(1)->appendChild($contenthtml);
    	}
     
    	public function addCancelButton($label="Annuler"){
    		$button = $this->html->createElement('input');
    		$button->setAttribute('type','button');
    		$button->setAttribute('value',$label);
    		$button->setAttribute('onclick',"javascript:document.getElementById('".$this->id."').style.display='none';");
    		$this->html->firstChild->childNodes->item(2)->appendChild($button);
    	}
     
    	public function display(){
    		echo $this->html->saveHTML();
    	}	
    }
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $pop = new Popup("testpopup");
    $pop->setTitle("Test");
    $pop->setContent("<p>bla <strong>bla</strong> bla</p><p>lol</p>");
    $pop->addCancelButton();
    $pop->display();

  2. #2
    Membre très actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155

  3. #3
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    J'ai également essayé de créer un nouveau DOMDocument à partir de ma chaîne de code HTML, sans succès.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $doc = new DOMDocument;
    $doc->loadHTML($html);
    Tu devrais faire tes popups en JavaScript.
    Si tu souhaite vraiment générer tes vues avec DOMDocument, ce qui peut se comprendre, alors tu devrais éviter de mélanger les chaines de caractères et les DOMNodes.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 159
    Par défaut
    Bonjour,

    J'ai résolu mon problème avec DOMDocument::createDocumentFragment()
    Merci beaucoup pour vos réponses.

    Mad

  5. #5
    Invité de passage
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 1
    Par défaut
    Bonjour,
    J'ai le même type de problème. Je suis parti dans la même direction que toi
    @madislak :
    Bonjour,

    J'ai résolu mon problème avec DOMDocument::createDocumentFragment()
    Merci beaucoup pour vos réponses.

    Mad
    Je ne trouve pas comment. Tu y est arrivé, comment as tu fait?
    Merci

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

Discussions similaires

  1. [Twig] Insérer du code html dans une variable
    Par flow10000 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 03/10/2011, 22h35
  2. [OL-2003] Comment insérer du code HTML dans Outlook 2003 ?
    Par fefe69 dans le forum Outlook
    Réponses: 0
    Dernier message: 25/07/2009, 18h42
  3. Insérer un code HTML dans une form ?
    Par Invité(e) dans le forum Débuter
    Réponses: 2
    Dernier message: 03/07/2009, 15h28
  4. [phpBB] Insérer du code php dans une page html
    Par hash95 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 26/02/2009, 15h11
  5. comment faire pour insérer du code HTML dans un textarea ?
    Par hicham285 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 18/05/2008, 03h35

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