Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP/HTML] Formulardaten als Array (https://www.delphipraxis.net/109337-%5Bphp-html%5D-formulardaten-als-array.html)

Matze 28. Feb 2008 10:15


[PHP/HTML] Formulardaten als Array
 
Hallo,

ich habe ein Array, das so aufgebaut ist:

Code:
array(
    [0] = array(
        'name' => 'ein Name'
        'value1' => 'ein Wert'
        'value2' => 'noch ein Wert'
    [1] = array (
        'name' => 'ein weiterer Name'
        ...
...
)
Beim Absenden eines Formulars, soll dieses Array in versteckte Felder "zwischengespeichert" werden, damit ich es beim nächsten Absenden wieder auslesen kann.

Mit einem einzelnen Wert kann ich das so machen:

Code:
<input type="hidden" name="array_names[]" value="ein Name" />
<input type="hidden" name="array_names[]" value="ein weiterer Name" />
Dann erhalte ich über $_POST['array_names'] ein Array dieser Art:

Code:
array(
    [0] => 'ein Name'
    [1] => 'ein weiterer Name'
)
wie kann ich dies für mehrere zusammengehörende Werte umsetzen ohne dafür 3 extra Arrays nutzen zu müssen, die man dann manuell wieder zusammenführen müsste?

Grüße

DeddyH 28. Feb 2008 10:24

Re: [PHP/HTML] Formulardaten als Array
 
Hallo Matze, schau Dir mal die PHP-Funktion serialize an.

Xong 28. Feb 2008 10:32

Re: [PHP/HTML] Formulardaten als Array
 
Zitat:

Zitat von Matze
Beim Absenden eines Formulars, soll dieses Array in versteckte Felder "zwischengespeichert" werden, damit ich es beim nächsten Absenden wieder auslesen kann.

Du suchst Sessions! =)
Niemals nie kannst du dich auf die clientseitigen Angaben verlassen. Mit einer Session behältst du die Kontrolle über deine Daten und hast sogar die Garantie, dass sie noch vorhanden sind.

Edit: Um das Serialisieren der Daten brauchst du dich dann auch nicht kümmern. Die Objekte, die in einer Session gespeichert werden sind sofort wieder verfügbar.

LG,
Xong

Matze 28. Feb 2008 11:38

Re: [PHP/HTML] Formulardaten als Array
 
Hallo, danke euch.

@Detlef: Stimmt, damit müsste es gehen. :)
@Xong: Ein Session-System nutze ich, doch wenn es ums Ausfüllen eines Formulars geht, dann möchte ich diese Eingaben nicht über Sessions laufen lassen.

Grüße

Xong 28. Feb 2008 11:46

Re: [PHP/HTML] Formulardaten als Array
 
Zitat:

Zitat von Matze
Ein Session-System nutze ich, doch wenn es ums Ausfüllen eines Formulars geht, dann möchte ich diese Eingaben nicht über Sessions laufen lassen.

Ich muss dir widersprechen. Genau dafür sind Sessions gedacht. Mit deiner Methode produzierst du nur weitere Fehlerquellen, die du abfangen musst (Falsche Werte in den versteckten Elementen, etc.). Besser ist, du speicherst das Array (!) als Sessionobjekt.
Eine einfache Zuweisung über $_SESSION['array_names'] = $MyArray sollte genügen.

Ich verstehe nicht ganz, wo du da ein Problem siehst...

Matze 28. Feb 2008 11:57

Re: [PHP/HTML] Formulardaten als Array
 
Hm, also es handelt sich um ein Formular, bei dem man Kategorien wählen und Dateien hochladen kann.

Um anzuzeigen, welche Kategorien/Dateien bereits gewählt wurden, brauche ich das ganze.

Ich könnte das theoretisch schon über Sessions lösen, nur nutze ich nicht die Session-Funktionen von PHP, sondern etwas eigenes, wobei die Sessions in der Datenbank/Cookies gespeichert werden.
Vielleicht kann ich die PHP-Funktionen zusätzlich nutzen. Einfach auf die superglobale $_SESSION zugreifen wird wohl nicht reichen. Nicht, dass die Session zu früh abläuft oder ähnliches.

Xong 28. Feb 2008 13:06

Re: [PHP/HTML] Formulardaten als Array
 
Zitat:

Zitat von Matze
Nicht, dass die Session zu früh abläuft oder ähnliches.

Das kann man einstellen.
Christian Seiler hat das im Selfhtml-Forum sehr schön erklärt (http://forum.de.selfhtml.org/archiv/...41138/#m917053):
Zitat:

»» Wie kann man bei einer Session die Gültigkeitsdauer festlegen?

Da gibt's zwei Einstellungen:
  1. Wann der Garbage Collektor von PHP die Session als ungültig betrachtet, d.h. ab wie viel Sekunden seit dem letzten Zugriff eine Session komplett gelöscht werden soll. Danach kann jemand zwar noch die gleiche Session-ID verwenden, allerdings wird dann eine neue Session gestartet, da die alte Session weg ist. Die Einstellung heißt session.gc_maxlifetime und Du kannst sie mittels ini_set('session.gc_maxlifetime', $AnzahlSekunden); setzen.
  2. Wie lange der Session-Cookie gültig ist. Die Einstellung ist unabhängig von der obigen, da Session-IDs ja nicht ausschließlich über Cookies übertragen werden können, und die Angabe der Gültigkeitsdauer des Cookies sowieso nur eine Empfehlung für den Browser ist, der Browser sich aber nicht unbedingt daran zu halten braucht. Die Einstellung kannst Du mittels session_set_cookie_params() ändern. Eine Gültigkeitsdauer von 0 heißt, der Cookie bleibt bis zum Ende der Browsersitzung gültig, ansonsten ist dort die Anzahl der Sekunden einzutragen, die der Cookie gültig bleiben soll. Mit der Funktion können ferner noch einige andere Cookie-Einstellungen modifiziert werden, siehe dazu die Funktion setcookie() für eine Erklärung.
Wichtig ist: Alle Einstellungen müssen *VOR* session_start() vorgenommen werden, ansonsten funktioniert das ganze nicht oder nicht richtig.
LG,
Xong

Matze 28. Feb 2008 13:30

Re: [PHP/HTML] Formulardaten als Array
 
Danke, aber ich bleibe bei den Hidden-Fields.
Diese Session-Lösung würde auch nicht funktionieren, falls man parallel an 2 Einträgen arbeitet. Hinzu kommt, dass ich die Eingabewerte so oder so validieren muss.

Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz