Elegantere Lösung für x-fach Array Post

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Elegantere Lösung für x-fach Array Post

    Hallo,

    ich habe ein Formular das x-fache Arrays anzeigt und eine neue Eingabezeile für den User. Das Form wird solange aufgerufen bis der User mitteilt dass er keine weiteren Daten mehr erfassen möchte und auf eine andere Datei verlinkt wird um die erfassten Daten zu verarbeiten. In Grundzügen sieht das so aus:

    PHP-Code:
    switch ($_POST['para']) {
    // Wenn erster Seitenzugriff dann passiert nichts
    case "0":
        break;
    // Eintrag der letzten Formularerfassung ins Array
    default:
    $datensatz[$zeile][0] = $_POST['anz'];
    $datensatz[$zeile][1] = $_POST['text'];
    $datensatz[$zeile][2] = $_POST['preis'];
    $datensatz[$zeile][3] = $_POST['ust'];
    $datensatz[$zeile][4] = $_POST['manod'];
    while (
    $i <= $zeile) {
    echo 
    "<tr height='20'>\n";
    echo 
    "<td class='desc' width='28' height='20'>&nbsp;" $datensatz[$i][0] . "</td>\n";
    echo 
    "<td class='desc' width='652' height='20'>&nbsp;" $datensatz[$i][1] . "</td>\n";
    echo 
    "<td class='desc' width='92' height='20'>&nbsp;" number_format($datensatz[$i][2],2,",",".") . "</td>\n";
    echo 
    "<td class='desc' width='45' height='20'>&nbsp;" $datensatz[$i][3] . "</td>\n";
    echo 
    "<td class='desc' width='45' height='20'>&nbsp;" $datensatz[$i][4] . "</td>\n";
    echo 
    "<td height='20'></td>\n";
    echo 
    "</tr>";
    $i++;

    $zeile++;
    break;

    Es folgen die 5 Eingabefelder für 'anz', 'text', 'preis', 'ust' und 'manod' sowie ein Button für Übernahme und ein Button für Ende. Bei Button Übernahme wird auf SELF verwiesen, bei Button Ende auf Folgedatei die Daten abarbeitet.

    $_POST['para'] ist beim ersten Aufruf 0, dann wird immer 1 übergeben.
    $zeile wird jeweils um Wert 1 erhöht übergeben, $i wird jeweils mit 0 übergeben:
    <input type="hidden" name="para" value="1">
    <input type="hidden" name="zeile" value='<?php echo $zeile?>'>
    <input type="hidden" name="i" value="0">

    Schließlich übergebe ich die bisher erfassten Datensätze:
    PHP-Code:
    $a = 0;
    while ($a <= $zeile) {
    echo "<input type='hidden' name='datensatz[" . $a . "]' value='<?php echo $datensatz[" . $a . "?>'>\n";
    $a++;
    }
    Das funktioniert ja soweit, nur man stelle sich mal vor der User erfasst beispielsweise 30 Datensätze oder mehr, dann bläst sich die Übergabe ganz schön auf. Ich habe schon daran gedacht die Arrays Datensätze in der Session zu übergeben und nach Abarbeiten einfach die Session zu löschen, allerdings habe ich in der Session bereits einiges an Daten, unter anderem 2 Variablen die auf der ganzen Site Gültigkeit haben, somit kann ich die Session nicht löschen. Könnte sie nur auf der Seite auf der die Daten abgearbeitet werden löschen und sofort neu eröffnen um diese beiden Variablen wieder zur Verfügung zu haben.
    Kann man eigentlich 2 Sessions parallel laufen lassen? Dann wäre es relativ einfach.

    Wie gesagt, dass Ganze funktioniert eigentlich, nur finde ich dass ich es nicht elegant gelöst habe. Hat wer ne Idee wie es besser ginge?

    Gruß
    Alexander

  • #2
    Und wieso machst du nicht einfach ein unter-Array in der Session?
    $_SESSION['die_daten'] = blabla;

    wenn sie nicht mehr gebraucht werden
    unset($_SESSION['die_daten']);

    Wenn da in $_SESSION['username'] oder so noch was drin ist, ist das doch total egal~

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Danke ghostgambler,

      genau das ist es. Auf die logischsten Lösungen kommt man meist nicht selbst ...

      Gruß Alexander

      Kommentar

      Lädt...
      X