Hallo,
ich möchte dynamisch eine Form generieren, was auch gut klappt. Jedoch möchte ich die Form an ein anderes pHP Dokument schicken und die INPUT-Felder mit einer Nummer versehen. Die Nummer soll durch die Anzahl der Schleifendurchläufe generiert werden.
Meine Funktion (Teil eines XML-Parsers):
Wie Ihr seht habe ich den "INPUT NAME" schon mit einem $i versehen. Ich müsste theoretisch nur die Anzahl der "element_inhalt"e hochzählen, aber wie?
Er durchsucht ja jedes XML-Element einzeln und würde mir nur eine 1 zurückgeben bei
Also, wie kann ich die ANzahl aller Inhalte auslesen?
Vielleicht nochmal der gesamtcode:
Hat jemand eine Idee?
Viele Grüße
Mb
ich möchte dynamisch eine Form generieren, was auch gut klappt. Jedoch möchte ich die Form an ein anderes pHP Dokument schicken und die INPUT-Felder mit einer Nummer versehen. Die Nummer soll durch die Anzahl der Schleifendurchläufe generiert werden.
Meine Funktion (Teil eines XML-Parsers):
PHP-Code:
function cdata($parser, $element_inhalt) {
global $ausgabe;
global $hiddendata;
// Der normale Text wird an $ausgabe angehängt
$element_inhalt = trim($element_inhalt);
if(!empty($element_inhalt)) {
//Mehr als 2 Leerzeichen ersetzt durch eines
$element_inhalt = preg_replace('/ {2,}/', ' ', $element_inhalt);
//Datenwerte nach Leerzeichen trennen und in ein ARRAY schreiben
$element_inhalt = explode(" ",$element_inhalt);
foreach($element_inhalt as $temp) {
$ausgabe .= "<p><td>Wert:</td> <td><input type=\"text\" name=\"$i\" value=\"$temp\"></td></p>";
$hiddendata .=" $temp";
}
}
}
Er durchsucht ja jedes XML-Element einzeln und würde mir nur eine 1 zurückgeben bei
PHP-Code:
count($element_inhalt)
Vielleicht nochmal der gesamtcode:
PHP-Code:
<?php
function startElement($parser, $element_name, $element_attribute) {
global $ausgabe;
global $hiddenattrib;
//Umwandeln in Kleinbuchstaben
$element_name = strtolower($element_name);
//Überprüfung des Elementnames
if (strpos($element_name, 'rotationangle') === 0) {
$ausgabe .= '<tr><td><b><u>'.$element_name.'</u>:</b></td></tr>';
}
if (strpos($element_name, 'princpointautocoll') === 0) {
$ausgabe .= '<tr><td><b><u>Hauptpunkt (Principal Point): </u></b></td></tr>';
}
}
function endElement($parser, $element_name) {
global $ausgabe;
// in Kleinbuchstaben umwandeln
$element_name = strtolower($element_name);
}
function cdata($parser, $element_inhalt) {
global $ausgabe;
global $hiddendata;
// Der normale Text wird an $ausgabe angehängt
$element_inhalt = trim($element_inhalt);
if(!empty($element_inhalt)) {
//Mehr als 2 Leerzeichen ersetzt durch eines
$element_inhalt = preg_replace('/ {2,}/', ' ', $element_inhalt);
//Datenwerte nach Leerzeichen trennen und in ein ARRAY schreiben
$element_inhalt = explode(" ",$element_inhalt);
foreach($element_inhalt as $temp) {
$ausgabe .= "<p><td>Wert:</td> <td><input type=\"text\" name=\"$i\" value=\"$temp\"></td></p>";
$hiddendata .=" $temp";
}
}
}
$xmlFile = file("Test.xml");
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "cdata");
foreach($xmlFile as $elem)
{
xml_parse($parser, $elem);
}
xml_parser_free($parser);
echo($ausgabe);
?>
Viele Grüße
Mb
Kommentar