Alex: Dynamische Variable einlesen

Hallo zusammen!

Folgendes Problem:
Ich habe ein Formular, das dynamisch viele zellen aufbaut

<?
$anzahl = $x; // dynamisch

for ($i=1;$i<=$anzahl;$i++){
     echo "
     <tr>
       <td>Zelle$i:</td><td><input type='text' name='input_zelle$i' size='40'></td>
<td>Info$i:</td><td><input type='text' name='input_info$i' size='40'></td>

</tr>
     ";
}
?>

Beim verarbeiten des Formulars möchte ich das ganze in ein array schreiben. Natürlich auch dynamisch.

$daten = array();
for ($i=1;$i<=$anzahl;$i++){
    $daten[] = array($input_zelle$i,$input_info$i);
}

Allerdings funktioniert "$input_zelle$i" ja nicht ... weis jemand wie ich das hinbekomme ?

Vielen dank schon mal.

mfG - Alex

  1. Moin,

    Allerdings funktioniert "$input_zelle$i" ja nicht ... weis jemand wie ich das hinbekomme ?

    ich weiss zwar nicht, ob es das ist was du willst, aber du könntest es ja so versuchen ${$input_zelle.$i}.

    MfG,
      Juan

    1. Danke aber es hat nicht geholfen - leider

      ich will im prinziip, dass

      for ($i=0;$i<=5;$i++){
          echo ${$input_zelle.$i};
      }

      das gleiche ergibt wie

      echo $input_zelle0;
          echo $input_zelle1;
          echo $input_zelle2;
          echo $input_zelle3;
          echo $input_zelle4;
          echo $input_zelle5;

      also dass der die variable am ende (0 bis 5) selber hochzählt und die jeweilige "Zelle" ausgibt.

      zumindest hat das bei mir nicht funktioniert :/

      1. Moin,

        ich will im prinziip, dass

        for ($i=0;$i<=5;$i++){
            echo ${$input_zelle.$i};
        }

        ich glaub das Problem ist die geschweifte Klammer.
        So sollte jeweils das gleiche rauskommen:
            $input_zelle0 = 0;
            $input_zelle1 =1;
            $input_zelle2 = 2;
            $input_zelle3 = 3;
            $input_zelle4 = 4;
            $input_zelle5 = 5;

        echo $input_zelle0;
            echo $input_zelle1;
            echo $input_zelle2;
            echo $input_zelle3;
            echo $input_zelle4;
            echo $input_zelle5;
        echo "<hr>";
        for ($i=0;$i<=5;$i++){
            echo $$input_zelle.$i;
        }

        MfG,
          Juan

        1. ah habs entdeckt :D

          also die geschweifte klammer hat schon gepasst nur eine sache war falsch.

          for ($j=1;$j<=5;$j++){
              echo ${input_zelle.$j};
          }

          vor dem input selber durfte kein $ mehr stehen.

          jetzt gehts.

          vielen Dank für die Hilfe !!

  2. Hallo,

    Ich habe ein Formular, das dynamisch viele zellen aufbaut

    werden diese Dialogfelder erst am Client aufgebaut, oder bereits auf dem Server vorbereitet und dann als fertiger HTML-Code ausgeliefert?

    LG
    Chris

    1. werden auf dem Server aufgebaut per php

      also der user gibt an wieviele eingaben er machen will und dann gehts in die 2te stufe

      lösung ist schon gefunden - aber danke für das Engagement

      1. Hallo Alex,

        werden auf dem Server aufgebaut per php

        also der user gibt an wieviele eingaben er machen will und dann gehts in die 2te stufe

        lösung ist schon gefunden - aber danke für das Engagement

        Dann solltest Du sicherheitshalber Deine Lösung hier nochmals posten. Könnte ja eventuelle sein, dass es noch bessere Lösungen gibt. Und warum solltest Du Dich mit halben Sachen zufrieden geben? :-)

        LG
        Chris

        1. Klar mach ich das ... am Ende lieg ich komplett falsch !?  ;)

          So wird dynamisch das Formular erweitert

          <?

          $anzahl = 5; // kann man dynmisch einstellen :)

          for ($i=1;$i<=$anzahl;$i++){
               echo "
               <tr>
                 <td><br>Probe$i:</td>
                 <td><input type='text' name='input_zelle$i' size='40'></td>
                 <td>Info$i:</td>
                 <td><input type='text' name='input_info$i' size='40'></td>
               </tr>
               ";
          }
          ?>

          Nach dem submit gehts zur Verarbeitung der Daten:

          <?
          for ($i=0;$i<=4;$i++){ // schleife um dynamische variablen einzulesen
              ${probe.$i} = array(${input_zelle.$i},${input_info.$i}); // jaaa hier wird das array eingelesen
          }
          ?>

          jetzt kann das array ausgelesen werden mit den wichtigen daten.

          echo ${probe.$i}[0];
          oder was man halt damit machen will.

          Noch Fragen ?  ^^

          Meine Frage ging um folgendes:
          ${input_zelle.$i}

          1. Hallo Alex,

            Klar mach ich das ... am Ende lieg ich komplett falsch !?  ;)

            *mmh* zumindest ungeschickt, da Du eine Automatik von PHP nicht nutzt, sondern versuchst, diese nochmals selber nachzubauen...

            <?php

            $anzahl = 5; // kann man dynmisch einstellen :)

            $liste = "";
               for ($i=1; $i<=$anzahl; $i++)
               {
                  $liste .= "
                  <tr>
                    <td><br>Probe $i:</td>
                    <td><input type='text' name='input_zelle[$i]' size='40'></td>
                    <td>Info$i:</td>
                    <td><input type='text' name='input_info[$i]' size='40'></td>
                  </tr>
                  ";
               }
            ?>

            Nach dem submit gehts zur Verarbeitung der Daten:

            <?php
              if(isset($_POST['input_zelle'] and is_array($_POST['input_zelle'])
              {
                ausgabe($_POST['input_zeile']);
              }

            if(isset($_POST['input_info'] and is_array($_POST['input_info'])
              {
                ausgabe($_POST['input_info']);
              }

            ?>

            Das Ausgeben eines Arrays kann man mittels foreach() vornehmen.

            Deine Versäumnisse sind so vielfältig, dass ich im Moment leider keine Zeit habe, darauf einzugehen.

            • Zergliederung von Datenstrukturen
            • Zugriff auf evtl. nicht gesetzte Variablen
            • Einschleppung über ggf. gesetztes register_globals
            • ...

            LG
            Chris

            1. Deine Versäumnisse sind so vielfältig, dass ich im Moment leider keine Zeit habe, darauf einzugehen.

              • Zergliederung von Datenstrukturen
              • Zugriff auf evtl. nicht gesetzte Variablen
              • Einschleppung über ggf. gesetztes register_globals
              • ...

              vielen dank für diese Liste ... das könnte ich vielleicht auch mal gut gebrauchen

              meine Form brauch ich nur um sie per E-Mail weiterzuschicken.
              deswegen sind einige von diesen "Versäumnissen" nicht so wichtig.

              Ich hab ja auch nur einen kleinen Teil von dem Script hier reingeschrieben, in dem es um diese Variablenbildung geht.

              das mit der Liste werd ich wohl auch mal ausprobieren (müssen).

              Vielen Dank für die Hilfe !

              mfG - Alex

              PS: Die Erwähnung der Versäumnisse hat mir auch schon geholfen. Danke :)