Variable Anzahl von INPUT-Feldern



  • Ich bräuchte mal einen Rat, wie ich etwas benutzerfreundlich umsetzen könnte. Folgende Situation, der Benutzer kann zu einer bestimmten Kategorie einen Eintrag machen. Dabei soll es ihm möglich sein, in dem Eintrag eine Auflistung von Optionen zu machen, die Anzahl dieser Optionen kann stark varieren, von 0 bis ins Unendliche. Allerdings kann ich schlecht 1000 INPUT-Felder auf die Seite klatschen, der Benutzer sollte also nach Möglichkeit einen Button mit "Weitere Option hinzufügen" haben, um die Anzahl der Optionen zu vergrößern und ein weiteres INPUT-Feld hinzuzufügen. Ich hoffe ihr habt es verstanden, allerdings wie kann man sowas realisieren ? Ich bin ein wenig ratlos und will auch auf JS verzichten, wüsste jemand Rat ?


  • Mod

    geht nur mit script sprachen.

    ohne JS ist es etwas kompliziert:

    der user hat einen button:
    weitere Eingabe Felder (oder so)
    dann wird die form submitted, zu einer 'proxy' seite hin

    diese seite checkt ob "eintragen" oder "weitere felder" gedrueckt wurde - je nachdem wird der user per header("location:") zu einer anderen seite geleitet.

    wenn er wieder zur eingabemaske geleitet wird, hat er mehr eingabefelder und alle bestehdenen daten sind trotzdem (denn die proxy seite hat ja alle submitteten daten bekommen und diese per GET wieder an die eingabe seite geleitet)

    das ist n bisschen umstaendlich, aber funktioniert einwandfrei. solange der user nicht zu viele daten eingibt und die maximal groesse von GET ueberschreitet - in diesem fall muss man mit sessions arbeiten um zwischen der proxy seite und der eingabe-seite zu kommunizieren.



  • Shade, was erklärst du das so kompliziert.

    Michamab, du machst einfach einen zweiten Submit Button mit einem anderen Namen. Im Skript prüfst du dann welcher Button gedrückt wurde und fügst entweder ein input Feld hinzu (und setzt bei den alten input Felder über value den alten Wert) oder du bearbeitest die Anfrage, weil sie fertig ist.

    Mit GET hat das wenig zu tun, geht doch alles über POST.



  • HM, die Idee ist nicht schlecht, so ähnlich hatte ich mir das auch vorgestellt 🙂


  • Mod

    Loggy schrieb:

    Shade, was erklärst du das so kompliziert.

    weils spaeter war 🙂



  • So, ich habe die Sache nun mehr oder weniger hinbekommen, habe allerdings noch ein kleines Problem, was ich unbedingt noch heute lösen muß und ich hab noch tierische Kopfschmerzen von gestern abend 🙄

    Also, der Benutzer klickt auf den Button um ein weiteres Intputfeld hinzuzufügen, Seite wird neu geladen, alle Werte werden eingetragen, außer die der variablen Inputfelder:

    ...
    echo("<input type=\"hidden\" name=\"inputcount\" value=\"");
    if(isset($inputcount)) {echo($inputcount);} else {echo("0");}
    echo("\"> ...");
    if(isset($inputcount) && $inputcount > 0)
    {
    $tname = array($_REQUEST["name"]);
    $i = 1;
    while($i < $count)
    {
    echo("<tr><td><input type=\"Text\" name=\"name[]\" value=\"" . $tname[$i] . "\" size=\"40\" maxlength=\"60\"></td></tr>");
    $i++;
    }
    echo("<tr><td>... Neues INPUT-Feld ...</td></tr>");
    }
    ...
    

    Das ganze heut irgendwie nicht hin, weiß jemand was ich falsch mache ?



  • Woher kommt count? Bist du dir bewusst, dass bei Arrays das erste Element den Index 0 hat? Werden die leeren Input-Felder ausgegeben, oder gar keine?



  • Das mit dem Array-INDEX ist mir allerdings bisher noch nicht aufgefallen, habe ich schnell geändert, ändert aber nichts am Grundproblem 🙄
    In der ersten Zeile von INPUT-Feldern wird erstmal nur der String "Array" reingeschrieben, danach nichts mehr, egal was ich eingebe.



  • Achso, sehe es jetzt erst:

    $tname = array($_REQUEST["name"]);
    

    das macht natürlich keinen Sinn! So sollte es heißen:

    $tname = $_REQUEST["name"];
    


  • Danke, funktioniert 🙂


Anmelden zum Antworten