html <form> in PHP erstellen?

Hi,

nun hätte ich gern noch die hauptspeisen mit ausgelesen, so wie ich dachte (foreach($menu_ausw->vorspeisen->eintrag as $eintrag, foreach($menu_ausw->hauptspeisen->eintrag as $eintrag)) geht das leider nicht, also ich kann da nicht mit , trennen.

nein, so etwas geht nicht, da musst Du schon 2 Schleifen nacheinander machen.

LG
 
Moin,

verzichte doch besser auf diese Schleifen und transformiere dein Dokument per XSLT.

Du wirst begeistert sein, wie einfach das geht :)
 
Damit du ordentlich Appetit auf XSLT bekommst(anfangs mag das beim Neueinstieg etwas verwirrend sein), hier ein Beispiel-XSL:

Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- root-Element(menu->form)-->
<xsl:template match="/menu">
<form action = "auswertung.php" method = "post"><xsl:apply-templates/><br/><input type="submit"/></form>
</xsl:template>

<!-- Auswahl-Liste(eintrag->select)-->
<xsl:template name="list">
  <xsl:param name="id" />
  <div><strong><xsl:value-of select="name"/></strong><br /><i><xsl:value-of select="beschr"/></i><br />
  <xsl:element name="select">
    <xsl:attribute name="name"><xsl:value-of select="$id"/></xsl:attribute>
    <xsl:call-template name="options">
      <xsl:with-param name="count" select="9" />
      <xsl:with-param name="pos" select="0" />
    </xsl:call-template>
  </xsl:element>
  </div>
</xsl:template>

<!-- optionen-->
<xsl:template name="options">
  <xsl:param name="count" />
  <xsl:param name="pos" />
  <xsl:variable name="preis"><xsl:value-of select="preis"/></xsl:variable>
  <xsl:choose>
  <xsl:when test="$pos &lt;= $count">
  <xsl:element name="option">
    <xsl:attribute name="value"><xsl:value-of select="$pos"/></xsl:attribute>
    <xsl:value-of select="$pos"/>x(<xsl:value-of select="format-number(preis * $pos,'#0.00')"/>€)
    <xsl:call-template name="options">
     <xsl:with-param name="pos" select="$pos + 1" />
     <xsl:with-param name="count" select="$count" />
    </xsl:call-template>
  </xsl:element>
  </xsl:when>
  <xsl:otherwise></xsl:otherwise>
 </xsl:choose>
</xsl:template>

<!-- kinder von menu->div-->
<xsl:template match="/menu/*">
  <div><h1><xsl:value-of select="name()"/></h1><xsl:apply-templates/></div>
</xsl:template>

<!-- Template list aufrufen und id übergeben-->
<xsl:template match="eintrag">
  <xsl:call-template name="list">
    <xsl:with-param name="id" select="@id" />
  </xsl:call-template>
</xsl:template>


</xsl:stylesheet>

Es sieht vielleicht nach viel aus, aber PHP-seitig brauchst du jetzt nur noch dies:
PHP:
<?php
$xml = simplexml_load_file("menu.xml");
$xsl = simplexml_load_file("menu.xsl");
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); 
$xslt=$proc->transformToDoc($xml);
echo $xslt->saveXML($xslt->documentElement);
?>

Habs mal als funktionierendes Beispiel rangehängt, hatte grad Lust dazu.
 

Anhänge

Zurück