PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zweidimensionale Array mit POST übergeben


robotto7831a
04.04.2004, 14:27:59
Hallo zusammen,

ich muss ein zweidimensionales Array mittels POST an eine andere Seite übergeben.

Ein normales Array kann man ja mit implode zu einem String machen und dann übergeben. Aber wie mache ich das mit einem zweidimensionalen Array?

Frank

Dago
04.04.2004, 14:33:36
Wie wär's mit serialize() (php.net/serialize) und unserialize() (php.net/unserialize)?

robotto7831a
04.04.2004, 15:04:19
Das habe ich auch schon gefunden.

Aber wenn ich mir den Wert auf $_POST['aufstellung'] anschaue, ist da nichts drin.

seite1.php
echo("<input type=text name=aufstellung value="".serialize($aufstellung_array)."">");


seite2.php
$hilf = unserialize($_POST['aufstellung']);
echo $hilf;

Frank

Dago
04.04.2004, 15:16:45
Du musst den serialisieren String noch HTML-Konform machen. Der String enthält ja "-Zeichen, was den Browser irritiert.
Dafür gibt's htmlentities() (php.net/htmlentities)

robotto7831a
04.04.2004, 15:28:01
So?

echo("<input type=text name=aufstellung value="".htmlentities(serialize($aufstellung_array))."">");

Frank

Dago
04.04.2004, 15:28:54
Korrekt

robotto7831a
04.04.2004, 15:30:39
Und wie mache ich daraus dann wieder ein Array auf der anderen Seite?

Frank

Dago
04.04.2004, 15:32:15
Nur noch mit unserialize().
Die Übersetzung des HTML-Codes übernimmt ja schließlich schon der Browser.

robotto7831a
04.04.2004, 15:42:28
Aber wenn ich die Sachen mit POST übergebe, dann steht in

$hilf = unserialize($_POST['aufstellung']);
echo $hilf;

nichts drin.

Frank

Dago
04.04.2004, 15:45:54
We need more input, please :)

- Was ist in dem Array gespeichert?
- Könntest du mal nen größeren Codeblock posten?

robotto7831a
04.04.2004, 16:05:51
Im Array steht folgendes:

Array ( [0] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [1] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [2] => Array ( [0] => [1] => [2] => [3] => A [4] => [5] => [6] => B [7] => [8] => ) [3] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [4] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [5] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [6] => Array ( [0] => [1] => C [2] => [3] => D [4] => [5] => E [6] => [7] => F [8] => ) [7] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [8] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [9] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => G [6] => [7] => [8] => ) [10] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [11] => Array ( [0] => [1] => [2] => H [3] => [4] => [5] => [6] => I [7] => [8] => ) [12] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) [13] => Array ( [0] => [1] => [2] => [3] => [4] => J [5] => [6] => [7] => [8] => ) )

<form action=seite2.php method=post>

echo("<input type=text name=aufstellung value="".htmlentities(serialize($aufstellung_array))."">");

<input type=Submit value="Senden">

Auf der neuen Seite steht
<?PHP
$hilf = $_POST['aufstellung'];
$hilf = unserialize($hilf);
echo $hilf;
?>

Frank

Dago
04.04.2004, 16:09:57
<?PHP
$hilf = $_POST['aufstellung'];
$hilf = unserialize($hilf);
echo $hilf;
?>

Mit echo kommt man da nicht weit. Echo wird dir höchstens "Array" ausgabe und das war's dann.
Versuch's doch mal mit print_r($hilf);

Sorry, dass ich da nicht früher drauf gekommen bin.

robotto7831a
04.04.2004, 16:12:11
Geht auch nicht.


Ich habe jetzt aber die Lösung gefunden.

echo("<input type=text name=aufstellung value="".base64_encode(serialize($aufstellung_array))."">");

$hilf = base64_decode($_POST['aufstellung']);
$hilf = unserialize($hilf);
echo $hilf;
print_r($hilf);

Mit base64 geht es. Danke.

Frank

Dago
04.04.2004, 16:33:04
Komisch, bei mir läuft der obige Code einwandfrei - mit htmlentities.

robotto7831a
04.04.2004, 17:15:03
Das ist ja interessant.

Frank

Dago
04.04.2004, 17:16:56
Naja, sch* drauf.
Base64 ist sowieso besser, der String wird nicht so groß.

meikel (†)
04.04.2004, 18:13:30
Original geschrieben von palvoelgyi
ich muss ein zweidimensionales Array mittels POST an eine andere Seite übergeben.
29.1. Wie realisiere ich Sessions mit PHP?
http://www.dclp-faq.de/q/q-sessions-wie.html

<?php
# seite1.php
session_start();
$mein_feines_array = $_SESSION['mein_feines_array'];
?>
etwas HTML
<?php
$_SESSION['mein_feines_array'] = $mein_feines_array;
printf ('<a href="%s?%s">nächste Seite</a>', 'seite2.php', SID);
?>

<?php
# seite2.php
session_start();
$mein_feines_array = $_SESSION['mein_feines_array'];
?>
etwas HTML

robotto7831a
04.04.2004, 18:27:21
Das das mit Sessions geht weiss ich auch. Es musste aber mit POST gemacht werden.

Frank

meikel (†)
04.04.2004, 18:36:24
Original geschrieben von palvoelgyi
Es musste aber mit POST gemacht werden.
Ach so. Datenaustausch mit anderem Server? Dann würde ich nach dem serialize() allerdings rawurlencode() verwenden.

Dago
04.04.2004, 18:41:11
Original geschrieben von meikel
Ach so. Datenaustausch mit anderem Server? Dann würde ich nach dem serialize() allerdings rawurlencode() verwenden.

Warum denn das?
Wenn er's mit GET macht, leuchtet's mir ein... Aber mit POST?

robotto7831a
04.04.2004, 18:44:12
Nein. Es wird nur an eine andere Seite gesendet.

Es sollte aber ohne Sessions gemacht werden.

Frank

meikel (†)
04.04.2004, 21:34:49
Original geschrieben von palvoelgyi
Nein. Es wird nur an eine andere Seite gesendet.
Es sollte aber ohne Sessions gemacht werden.
Huch? Sollte das eine Strafarbeit zum Thema "Wie vermeide ich möglichst umständlich eine Session?" werden?

robotto7831a
05.04.2004, 12:48:36
Manchmal muss man manche Arbeitsaufträge nicht verstehen.

Frank