Dynamische Variablennamen?

  • Hi,

    folgende "Aufgabenstellung": ich generiere in einer whileschleife ein Formular, das aus sovielen Teilen besteht, wie man will. Der Benutzer stellt in einem Feld ein, wieviele von den Feldern er braucht, 10 sind bereits da, bei Klick auf "aktualisieren" wird die gewünschte Anzahl Textfelder angezeigt.

    Bleibt aber das Problem, den Text, der bereits eingegeben wurde, mittels "value=" wieder in die bisher bereits dagewesenen Formulare einzugeben.

    meine Variablennamen werden ja auch in der whileschleife generiert und heissen daher zB Feld1-Feldx. Ich kann diese also nicht wirklich weiterverarbeiten, weil es ja nichts bringen würde, zB $Feld$i als variable zu nehmen.

    Kennt da irgendwer einen Workaround? Ich bin doch sicher nicht der Erste mit dem Problem? Oder ist sowas nicht in php machbar? Oder N.P.-vollständig? ;)

    Danke im Voraus,

    lG,
    Murmel

  • In PHP werden alle request variablen in dictionaries (~ assiziativen arrays) gespeichert:

    $_GET, $_POST (je nach protokoll), bzw. $_REQUEST für alle.

    mit funktionen wie
    array_keys bekommst du eine liste aller schlüssel in diesem array, also aller feldnamen.

    Ich hab schon länger nichts mehr mit PHP machen müssen, aber eine Lösung könnte ca so aussehen:

    je nach restlichem code kann $_REQUEST natürlich noch andere parameter enthalten, die musst du dann halt vorher rausfiltern.

  • thx für die flotte Hilfe!

    Hab das jetzt ausprobiert, aber das gibt mir nur die Namen von den Feldern aus, nicht ihre Werte. Da wär dann wieder das Problem, dass ich aus dem Namen keine Variable machen kann, weil er selber schon eine Variable ist.

    Abgesehen davon sind sie, sobald es mehr als 10 Felder gibt, nicht gut sortiert, weil Feld10 bekanntlich vor Feld1 kommt.

    lG,
    Murmel

    EDIT: Hab gefunden, was ich gesucht habe! Variable Variablen macht man mit speziellen Klammern, zB: $a {$a}
    s. auch http://at.php.net/manual/de/language.variables.variable.php

    Sorry, nächstes Mal les ich mich genauer durch das Manual bevor ich hier poste. Danke trotzdem für die Hilfe!

  • Ich bin mir jetzt nicht sicher, ob ich dein Problem richtig verstanden habe. Ich löse Formulare mit unbekannter Anzahl an Elementen auf jeden Fall immer mit Arrays, und nicht mit dynamischen Variablen:

    HTML
    <form action="blah.php">
    <input type="text" name="form_text[]" value="a">
    <input type="text" name="form_text[]" value="b">
    <input type="text" name="form_text[]" value="c">
    </form>


    PHP würde aus daraus folgendes Array konstruieren:

    Code
    $_REQUEST['form_text'][0] == 'a'
    $_REQUEST['form_text'][1] == 'b'
    $_REQUEST['form_text'][2] == 'c'


    Um das Array zu durchlaufen, würde ich eine foreach-Schleife empfehlen:

    PHP
    foreach ($_REQUEST['form_text'] as $key => $value) {
      echo "$key: $value<br>\n";
    }

    bzw.

    PHP
    $count = 0;
    foreach ($_REQUEST['form_text'] as $value) {
      echo $count++ . ": $value<br>\n";
    }


    Mit solchen Arrays solltest du eigentlich alles, was es so an formulartechnischen Problemen gibt, lösen können.

  • Zitat von beefy


    <input type="text" name="form_text[]" value="a">
    <input type="text" name="form_text[]" value="b">


    Interessant, wusste gar nicht, dass das mit arrays auch so geht. Wieder was gelernt, thx!

    lG,
    Murmel

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!