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

XSL/XSLT/XPATH XML Discussion :

pb eval pour le code php dans une feuille xslt


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Par d�faut pb eval pour le code php dans une feuille xslt
    bonsoir,

    j'ai lu le tutoriel de bob super int�ressant

    mais j'ai un souci pour �valuer du code php plac� dans la feuille de style xsl

    article.php

    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
     
    <?php
     
    $xh	= xslt_create();
     
    $file	=	fopen("source.xml","r");
    $xml	=	fread($file,16384);
    fclose($file);
     
    $file	=	fopen("article.xsl","r");
    $xsl	=	fread($file,16384);
    fclose($file);
     
    $xslt_params["id"] = (isset($_GET['id']) ? $_GET["id"] : 1);
     
    $arguments = array(
    			'/_xml' => $xml,
    			'/_xsl' => $xsl
    );
     
    $resultat = xslt_process($xh,'arg:/_xml','arg:/_xsl',NULL,$arguments,$xslt_params);
     
    xslt_free($xh);
     
     
    $resultat=str_replace("<php>","<?php",$resultat);
    $resultat=str_replace("</php>","?>",$resultat);
     
     
    $chaine = '"?".chr(62).$resultat.chr(60)."? "';
    $resultat= eval("$chaine");
     
    include("accueil.html");
     
     
    ?>

    extrait de article.xsl

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    <xsl:if test="$cpos = $id">
     
    			<div align="center">notre cours . <php> echo "test"; </php></div>
    			<table> etc.....

    et l'erreur qui me prend la t�te

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
     
    Parse error: parse error, unexpected $ in c:\program files\easyphp\www\xmlphp\article.php(30) : eval()'d code on line 1
    Je ne vois pas pourquoi �a ne marche pas
    Si vous avez d'autres alternatives, je suis preneur.

    Merci pour une �ventuelle aide.

  2. #2
    Membre exp�riment�

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par d�faut
    As-tu essay� d'afficher le contenu de ta variable $chaine pour contr�ler avant de la passer � eval ?


    Cordialement, Julp

  3. #3
    Membre habitu�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Par d�faut
    merci pour ta r�ponse mais oui elle se passe bien

    les
    <php>
    et
    </php>
    sont bien remplac�s par les
    <?php
    et
    ?>
    Je ne vois pas pourquoi �a ne marche pas

    D'autres solutions, d'autres pistes ?

  4. #4
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par d�faut Re: pb eval pour le code php dans une feuille xslt
    dans ton code l� tu mets "<?" au lieu de "<?php" pour le d�but du code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    $chaine = '"?".chr(62).$resultat.chr(60)."? "';
    $resultat= eval("$chaine");
    tu peux faire �a directement � la place:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $resultat = eval("?>$resultat<?php ");

  5. #5
    Membre habitu�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Par d�faut
    bonsoir,

    tu avais raison pour l'ouverture du tag <?php mais malheureusement le message d'erreur est le m�me

  6. #6
    Membre habitu�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Par d�faut
    pour ajouter de l'eau au moulin, j'ai test� avec une simple cha�ne et �a marche

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    $resultat ="du texte <php> echo 'test'; </php>";
     
    $resultat=str_replace("<php>","<?php ",$resultat);
    $resultat=str_replace("</php>","?>",$resultat);
     
     
    $resultat = eval("?>$resultat<?php ");
    article.xsl

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:param name="id"/>
    <xsl:variable name="tchap">
    	<xsl:value-of select="count(//chapitre)"/>
    </xsl:variable>
     
    <xsl:variable name="mpart">
    	<xsl:value-of select="count(//chapitre//partie)"/>
    </xsl:variable>
     
     
    <xsl:template match="root">
    	<xsl:apply-templates/>
    </xsl:template>
     
    <xsl:template match="chapitre">
     
    	<xsl:variable name="cchap">
    		<xsl:value-of select="position() div 2" />
    	</xsl:variable>
     
    	<xsl:for-each select="partie">
     
    		<xsl:variable name="cpos">
    			<xsl:value-of select="count(//chapitre[not(position()>=$cchap)]//partie)+position()"/>
    		</xsl:variable>
     
    		<xsl:variable name="pcpos">
    			<xsl:value-of select="$cpos - 1"/>
    		</xsl:variable>
    		<xsl:variable name="ncpos">
    			<xsl:value-of select="$cpos+1"/>
    		</xsl:variable>
     
    		<xsl:if test="$cpos = $id">
     
    			<div align="center">notre cours . 
    				<php> 
    						$t=3;
    						echo $t;
    				</php>
    			</div>
    			<table>
    			<tr>
    				<xsl:if test="$cpos=1">
    					<td>precedent</td>
    				</xsl:if>
     
    				<xsl:if test="$cpos > 1">
    					<td><a href="article.php?id={$pcpos}">precedent</a></td>
    				</xsl:if>
     
    				<td><a href="index.php">INDEX</a></td>
     
    				<xsl:if test="$cpos = $mpart">
    					<td>SUIVANT</td>
    				</xsl:if>
     
    				<xsl:if test="not($cpos = $mpart)">
    					<td><a href="article.php?id={$ncpos}">SUIVANT</a></td>
    				</xsl:if>
    			</tr>
    			</table>
    			<h1>Chapitre <xsl:value-of select="$cchap"/></h1>
    			<h2><xsl:value-of select="../@titre"/></h2>
    			<p>
    				<xsl:value-of select="position()"/>
    				<xsl:value-of select="./@titre"/>
    			</p>
    			<xsl:apply-templates/>
    		</xsl:if>
     
    	</xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>

    source.xml

    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
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <?xml-stylesheet href="article.xsl" type="text/xsl"?>
    <root>
    <chapitre titre="titre du chapitre 1">
    	<partie titre="titre de la partie 1 chapitre 1">
    		Ceci est le texte de la partie 1
    	</partie>
    	<partie titre="titre de la partie 2 chapitre 1">
    		Ceci est le texte de la partie 2
    	</partie>
    </chapitre>
     
    <chapitre titre="">
    	<partie titre="titre de la partie 1 chapitre 2">
    		Ceci est le texte de la partie 1.
    	</partie>
    	<partie titre="titre de la partie 2 chapitre 2">
    		Ceci est le texte de la partie 2.
    	</partie>
    </chapitre>
    </root>

    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
     
    <?php
     
    $xh	= xslt_create();
     
    $file	=	fopen("source.xml","r");
    $xml	=	fread($file,16384);
    fclose($file);
     
    $file	=	fopen("article.xsl","r");
    $xsl	=	fread($file,16384);
    fclose($file);
     
    $xslt_params["id"] = (isset($_GET['id']) ? $_GET["id"] : 1);
     
    $arguments = array(
    			'/_xml' => $xml,
    			'/_xsl' => $xsl
    );
     
    $resultat = xslt_process($xh,'arg:/_xml','arg:/_xsl',NULL,$arguments,$xslt_params);
     
    xslt_free($xh);
     
     
    $resultat=str_replace("<php>","<?php ",$resultat);
    $resultat=str_replace("</php>","?>",$resultat);
     
    $resultat = eval("?>$resultat<?php ");
    A priori cela doit �tre un pb peut-�tre d'apostrophe dans le fichier article.xsl ou source.xml ???
    Si quelqu'un voit quelque chose de pas bon du tout, je suis preneur !

    MERCI

  7. #7
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par d�faut
    Citation Envoy� par julp
    As-tu essay� d'afficher le contenu de ta variable $chaine pour contr�ler avant de la passer � eval ?
    en faisant �a tu verras tout de suite ce qui ne vas pas pour l'�valuation du code PHP

  8. #8
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par d�faut
    ca se corse, je viens d'essayer les 3 fichiers chez moi et je n'ai aucune erreur !

  9. #9
    Membre habitu�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Par d�faut
    trouv�

    dans le php.ini

    Mettre � short_open_tag = Off of course !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MySQL] Execution de code PHP dans une BDD
    Par calenfeaion dans le forum PHP & Base de donn�es
    R�ponses: 19
    Dernier message: 30/06/2006, 13h34
  2. [MySQL] R�cup�ration de code php dans une base de donn�es
    Par kitana dans le forum PHP & Base de donn�es
    R�ponses: 4
    Dernier message: 21/03/2006, 00h25
  3. Transcrire code PHP dans une DLL
    Par LEK dans le forum C++
    R�ponses: 16
    Dernier message: 26/09/2005, 14h17
  4. Mettre un code php dans une variable...
    Par kedare dans le forum Langage
    R�ponses: 6
    Dernier message: 19/09/2005, 12h55
  5. [Conception] Code php dans une base de donn�e
    Par krfa1 dans le forum PHP & Base de donn�es
    R�ponses: 8
    Dernier message: 13/09/2005, 10h58

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