forminhalt dynamisch erzeugen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • forminhalt dynamisch erzeugen

    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):

    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";
               }

        }

    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
    PHP-Code:
    count($element_inhalt
    Also, wie kann ich die ANzahl aller Inhalte auslesen?

    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);
    ?>
    Hat jemand eine Idee?

    Viele Grüße

    Mb

  • #2
    PHP-Code:
    $i 0;
    foreach(
    $array as $el)
    {
       echo 
    $i.'<br />';
       
    $i++;

    warum nicht sowas?

    Kommentar


    • #3
      Ja wenn es so einfach wäre. Ich weiß auch nicht mehr weiter.

      Kommentar


      • #4
        Original geschrieben von Maxe80
        Ja wenn es so einfach wäre. Ich weiß auch nicht mehr weiter.
        Es IST so einfach. Oben genannter Schnipsel funktioniert.

        Grüsse, Chris
        [COLOR=orangered]Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil![/COLOR]

        cubetech in Bern » Webdesign, Infrastruktur, Social Media, VoIP

        Kommentar


        • #5
          Ja er funktioniert, aber nicht bei meinem XML-Parser. Jene Funktion "cdata" wird bei jedem XML-Element durchlaufen, somit wird die Variable i standig wieder auf Null gesetzt und um 1 erhöht.
          Ich werde es auf die lange Tour machen. Werde ich zum Abschluss, wenn fertig, noch posten.

          Wenns trotzdem besser geht, dann her mit den brandheißen News

          Greetz M
          Zuletzt geändert von Maxe80; 14.05.2006, 19:06.

          Kommentar


          • #6
            dann mach $i global (ist zwar eine dreckige lösung, aber ich verstehe nicht ganz, warum du nicht jeden aufruf dieser funktion abfangen kannst und den zähler etwa durch einen parameter übergibst).

            Kommentar


            • #7
              Jo was anderes bleibt mir wohl nicht übrig.

              Hier der CODE (achtet auf i):

              PHP-Code:
              function cdata($parser$element_inhalt) {
              global 
              $ausgabe;
              global 
              $hiddendata;
              global 
              $i;
              //echo $a;
              // 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) {
                          
              $i++;
                          
              $ausgabe .= "<p><td>Wert:</td> <td><input type=\"text\" name=\"$i\" value=\"$temp\"></td></p>";
                          
              $hiddendata .=$temp";
                          
                         }

                  }

              Vielen Dank für die Hilfe.
              Viele Grüße

              Max

              Kommentar

              Lädt...
              X