Kiska Kogtistaya: Dynamische Variablennamen

Hallo,

hoffe, dass es hier, um einen Blackout handelt, und nicht um ein schwerwiegendes Problem.

Frage: Es werden Formularfelder dynamisch generiert, insbesondere deren Namen:

for ($i=0; $i<=$num; $i++) {
 echo "<input name=bla$i><br>";
}

In der nächsten Datei angekommen will ich die schon existierenden Variablen (bla1, bla2, bla3 usw.) wieder in einer Schleife ansprechen, aber wie setze ich den Namen den Variablennamen zusammen:

for ($i=0; $i<=$num; $i++) {
 echo "$bla$i<br>";
              ^^^^^^
}
Das Markierte ist falsch. Kennt jemand die Lösung?

Danke. Kiska.

  1. Hallo!

    Frage: Es werden Formularfelder dynamisch generiert, insbesondere deren Namen:

    for ($i=0; $i<=$num; $i++) {
    echo "<input name=bla$i><br>";
    }

    In der nächsten Datei angekommen will ich die schon existierenden Variablen (bla1, bla2, bla3 usw.) wieder in einer Schleife ansprechen, aber wie setze ich den Namen den Variablennamen zusammen:

    for ($i=0; $i<=$num; $i++) {
    echo "$bla$i<br>";
                  ^^^^^^
    }
    Das Markierte ist falsch. Kennt jemand die Lösung?

    Du kannst alle Variablen über die Umgebungsvariable $_POST, $_GET usw. entgegen nehmen. Es stehen Dir die Variablennamen und Variableninhalt in einem assoziatives Array zur Verfügung. Über variable Variablen baust Du Dir nun alle Variablen oder Du arbeitest nur das array ab, was IMHO einfacher ist.

    Nehmen wir mal an, Du hast das Formular über POST versendet.

    while(list($var_name, $var_inhalt)=each($_POST))
      {
        ${$var_name}=$var_inhalt;
      }

    echo $bla1;
    usw.

    http://www.php.net/manual/de/language.variables.predefined.php
    http://www.php.net/manual/de/language.variables.variable.php

    MfG, André Laugks

  2. Frage: Es werden Formularfelder dynamisch generiert, insbesondere deren Namen:

    for ($i=0; $i<=$num; $i++) {
    echo "<input name=bla$i><br>";
    }

    In der nächsten Datei angekommen will ich die schon existierenden Variablen (bla1, bla2, bla3 usw.) wieder in einer Schleife ansprechen, aber wie setze ich den Namen den Variablennamen zusammen:

    Du möchtest die Variablen aus dem Formular von der vorigen Seite ansprechen? Du bekommst diese Variablen in einem Feld namens $HTTP_POST_VARS (ältere PHP-Versionen) bzw. $_POST (aktuelle PHP-Version) (falls das Formular per GET verschickt wurde, Feldnamen entsprechend ändern).
    Die Variablen solltest Du also einfach folgendermaßen ansprechen können:

    for ($i=0; $i<=$num; $i++)
       {
        irgendwas_mit_variablen_machen($_POST["bla".$i]);
       };

    Tipp: Mal phpinfo() aufrufen.

    Gruß,
      soenk.e

    1. Ahoi soenk.e,

      Die Variablen solltest Du also einfach folgendermaßen ansprechen können:

      for ($i=0; $i<=$num; $i++)
         {
          irgendwas_mit_variablen_machen($_POST["bla".$i]);
         };

      Sei mit einem virtuellen Küßchen belohnt.

      Tipp: Mal phpinfo() aufrufen.

      habe ich mit phpinfo(INFO_VARIABLES); schon gemacht. Ich wußte ja, dass die Variablen ankommen, nur die beim "Namen nennen" - das war das Problem.

      Die Lösung von André ist auch gut, nur nicht so übersichtlich (sei mir verziehen).

      Die Lösung von matthias liefert bei mir einen String mit allen Werten aus allen Formularfeldern zurück. Ist nicht das, was ich wollte, aber irgendwann werde ich das auch gebrauchen.

      Danke, danke, danke. Kiska

  3. Hallo,

    hoffe, dass es hier, um einen Blackout handelt, und nicht um ein schwerwiegendes Problem.

    Frage: Es werden Formularfelder dynamisch generiert, insbesondere deren Namen:

    for ($i=0; $i<=$num; $i++) {
    echo "<input name=bla$i><br>";
    }

    In der nächsten Datei angekommen will ich die schon existierenden Variablen (bla1, bla2, bla3 usw.) wieder in einer Schleife ansprechen, aber wie setze ich den Namen den Variablennamen zusammen:

    for ($i=0; $i<=$num; $i++) {
    echo "$bla$i<br>";
                  ^^^^^^
    }
    Das Markierte ist falsch. Kennt jemand die Lösung?

    Danke. Kiska.

    Hi Kiska,

    daran habe ich auch lange gerätzelt, also die lösung heißt variable variablen. (findet du auch im php manual)
     Zuerst definierst du in einer schleife die variablen variablen, du muss also aus der vorherigen datei übergeben, wie oft die schleife durchgeführt werden muss. Übergebe also per post oder get $num. bei deinem beispiel wären $num=3.

    for ($i=0; $i<=$num; $i++) {
    $bla='bla'.$i;
    $$bla;}

    Jetzt kannst du die einzelnen Variablen ansprechen indem du angibst:

    for ($i=0; $i<=$num; $i++) {
    echo"bla ist ${$bla}";

    }

    Hoffe ich konnte dir helfen