phpbar.de logo

Mailinglisten-Archive

[php] Arrays per POST übertragen

[php] Arrays per POST übertragen

Lutz Zetzsche php at sea-rescue.de
Mit Okt 8 17:59:04 CEST 2003


Hi Candid,

Zitat von Candid 'Dogfish' Dauth <Candid.Dauth at web.de>:

> > Das ist was anderes als im Original-Post. Da hiess es:
> > > [..] , ein Array per POST/GET zu übertragen,  [..]
>
> Okay, da hatte ich mich wohl ein Bisschen undeutlich ausgedrückt.
>
>
> > Mach doch mal print_r($array_name) Dann siehst Du ob es ein Array ist
> > und was drin steht.
>
> Wie bereits gesagt: Ich erhalte nur den String "Array". Wenn ich die Funktion
> ausführe, steht da nur "Array". Würde es sich um ein Array handeln, stände
> dort ja mindestens "Array ( )". Greife ich per $_POST['bla'][0] oder sonst
> wie auf den Wert zu, erhalte ich ein simples "A", wie es bei Strings der Fall
> ist.
>
> Ich hoffe, es ist jetzt klarer, was mein Problem ist.

ich habe folgenden Verdacht:

Du hast eine PHP-Seite mit einem Formular, dass Du an eine zweite PHP-Seite mit
der Methode POST abschickst. Dabei scheint es so zu sein, dass Du dynamisch in
den value-Parameter eines input-Felds des Formulars den Inhalt einer
PHP-Variable vom Typ Array einsetzt und dass Du Dich wunderst, dass auf der
zweiten Seite anstatt des Array-Objekts nur der String "Array" in der
$_POST-Variable ankommt.

D.h. Deine Seiten koennten in etwa so aussehen:

Seite 1:
<?php $einArray = Array('Candid', 'Dogfish', 'Dauth', 'Candid.Dauth at web.de'); ?>
<form action="meineVerarbeitungsseite.php" method="post">
<input type="hidden" name="derArray" value='<?php echo($einArray); ?>'></input>
<input type="submit" value="submit"></input>
</form>

Seite 2:
<?php
  echo($_POST['derArray']); // gibt als Wert "Array" aus
  echo($_POST['derArray'][0]); gibt als Wert "A" aus
?>

Damit das funktioniert, was Du moechtest, musst Du die Funktionen serialize()
und unserialize() verwenden:

http://de.php.net/manual/en/function.serialize.php
http://de.php.net/manual/en/function.unserialize.php

Etwas so:

Seite 1:
<input type="hidden" name="derArray" value='<?php echo(serialize($einArray));
?>'></input>

Seite 2:
<?php
  $_POST['derArray'] = str_replace('\"', '"', $_POST['derArray']);
  echo($_POST['derArray']); // gibt serialisierten Array aus
  $derArray = unserialize($_POST['derArray']);
  echo($derArray[0]); // gibt "Candid" aus
?>

So in etwa. :-)

Ich hoffe, dass Dein Problem war und dass ich es auf diese Weise geloest habe.
:-)

Die Zeile
$_POST['derArray'] = str_replace('\"', '"', $_POST['derArray']);
ist uebrigens nur erforderlich, sofern der Server bei der Uebergabe der
Formularfelder per automatisch addslashes() ausfuehrt.

Viele Gruesse

Lutz

php::bar PHP Wiki   -   Listenarchive