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

  1. #1
    Membre régulier
    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
    Points : 108
    Points
    108
    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 actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    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
    Points : 275
    Points
    275

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    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
    Points : 7 762
    Points
    7 762
    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 régulier
    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
    Points : 108
    Points
    108
    Par défaut
    Bonjour,

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

    Mad

  5. #5
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    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