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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Points : 6
    Points
    6
    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.
    Nipepsi ni cola only tea

  2. #2
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Points : 6
    Points
    6
    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 ?
    Nipepsi ni cola only tea

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    bonsoir,

    tu avais raison pour l'ouverture du tag <?php mais malheureusement le message d'erreur est le même
    Nipepsi ni cola only tea

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Points : 6
    Points
    6
    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
    Nipepsi ni cola only tea

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    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 éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    trouvé

    dans le php.ini

    Mettre à short_open_tag = Off of course !
    Nipepsi ni cola only tea

+ 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