PHP variable Variable in Funktion

  • Hallo! Ich bin verzweifelt auf der Suche nach den richtigen Steuerzeichen...
    Die Situation ist so: eine Selectbox soll eine bestimmte Zeile durch das attribut 'selected' ausgewählt sein. Welche Zeile es ist hängt von anderen Dingen ab.

    Ich versuche eine Funktion hierfür zu schreiben:

    FUNKTION:
    function selecta($selectid,$selectvalue)
    {
    echo "value=\"" . $selectvalue . "\"";
    if ( $selectvalue == $"$selectid" )
    {
    echo " selected=\"selected\"";
    }
    }

    FUNKTIONSAUFRUF:
    <select name="Format" id="Format">
    <option <?php selecta("Format","DIN A4"); ?>>DIN A4 (21,0 &times; 29,7cm)</option>
    <option <?php selecta("Format","DIN A5"); ?>>DIN A5 (14,8 &times; 21,0cm)</option>
    <option <?php selecta("Format","DIN A6"); ?>>DIN A6 (10,5 &times; 14,8cm)</option>
    <option <?php selecta("Format","DIN Lang"); ?>>DIN Lang (9,9 &times; 21,0cm)</option>
    <option <?php selecta("Format","GastroFormat"); ?>>GastroFormat (6,5 &times; 14,8cm)</option>
    <option <?php selecta("Format","sonstiges"); ?>>sonstiges - Bitte vermerken</option>
    </select>

    Als erstes soll der 2te übergebene Wert mit "value=" herum herausgegeben werden, dann soll geprüft werden ob $selectvalue mit dem Inhalt der Variable mit dem Namen von $selectid übereinstimmt. Wenn ja, soll dann das "selected" mit dahinter geschrieben werden.

    Jetzt meine Frage:
    if ( $selectvalue == $"$selectid" ) ist so nicht richtig von der Syntax!
    Wie schreibe ich also "Inhalt von der Variablen mit Namen..." ?

    Danke für Eure Hilfe!!!
    Arno

  • Oha, das sieht aber böse aus!! :D
    Also den Inhalt deiner Variable als Variablennamen zu nehmen machst du mit $$selectid.

    Trotzdem ist das was du da machst alles andere als schön. Wenn du ein bißchen mehr Code postest wären da sicherlich einige Verbesserungsvorschläge drin die dir das weitere coden leichtermachen.

    Edit: Das Forum hier hat übrigens schöne Formatierungsmöglichkeiten für PHP-Code: [ php ] [ /php ] bzw. [ html ] [ /html ] (jeweils ohne die Leerzeichen).
    Wenn du dann noch einrückst sieht dein Code so aus:

    PHP
    function selecta($selectid,$selectvalue)
    {
        echo "value=\"" . $selectvalue . "\"";
        if ( $selectvalue == $"$selectid" )
        {
            echo " selected=\"selected\"";
        }
    }
    HTML
    <select name="Format" id="Format">
      <option <?php selecta("Format","DIN A4"); ?>>DIN A4 (21,0 &times; 29,7cm)</option>
      <option <?php selecta("Format","DIN A5"); ?>>DIN A5 (14,8 &times; 21,0cm)</option>
      <option <?php selecta("Format","DIN A6"); ?>>DIN A6 (10,5 &times; 14,8cm)</option>
      <option <?php selecta("Format","DIN Lang"); ?>>DIN Lang (9,9 &times; 21,0cm)</option>
      <option <?php selecta("Format","GastroFormat"); ?>>GastroFormat (6,5 &times; 14,8cm)</option>
      <option <?php selecta("Format","sonstiges"); ?>>sonstiges - Bitte vermerken</option>
    </select>

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

    2 Mal editiert, zuletzt von SinnlosS (24. März 2009 um 21:24)

  • Ein Beispiel wie das schon schöner gelöst ist:

    An entsprechender Stelle dann eben ausgeben mit

    PHP
    echo "
    <select name='Format' id='Format'>
    {$options_formate}
    </select>";

    oder

    HTML
    <select name='Format' id='Format'>
    <?php echo $options_formate; ?>
    </select>

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Ok! Also ich hab mal 2 dummy-Dateien vorbereitet, die poste ich mal hier
    einfach mal in den xampp rein und probieren:
    dummy1.php:


    dummy1.php:

    also, was sagt ihr? :)

  • Hallo SinnlosS! Da haben wir wohl gleichzeitig gepostet :)
    Auf die Lösung

    wär ich blutiger Anfänger nicht gekommen :) Danke für deine Hilfe, die Lösung ist cool!
    Es gibt aber einen Unterschied: bei mir steht in den <option>-Tags nur value="Din A4", "Din A5" usw., die Formatangaben mit Zentimetern stehen nur im Text drin, den der User sieht, nicht bei Value. Ich probier jetzt, deinen Script dahin zu erweitern mit einem weiteren Array. Mal sehen, wie weit ich komme ... wenn du die Lösung schon weisst, wär echt nett wenn du die postest.

  • habs geschafft, yes :=)


    Nochmals vielen vielen Dank für deine Hilfe!!!!