Problem mit Array-Übergabe per Formular

E

encom

Hallo, ich habe ein Formular mikt mehreren checkboxen (dynamisch aus DB)

Code:
<input type="checkbox" name="HDIDS[]" value="'.$r_hd['id'].'">

Ich übergebe die Werte per POST und lese diese auf der nächsten Seite so aus

PHP:
if(isset($_POST['HDIDS'])) 
  {
    echo 'Festplatten: ';
    foreach ($HDIDS as $elem) 
    {
      echo $elem.', ';
    }
  }

Auf dieser Seite habe ich ein weiteres Formular, da ich die zuzvor eingegebenen Werte weiter verwenden will, übergebe ich diese nun in einem hidden-feld

Code:
<input type="hidden" name="HDIDS" value="<?php echo $_POST['HDIDS'];?>">

Wenn ich nun auf der nächsten Seite die Werte wieder mit dem oben angegebenen Code ausgeben will, erhalte ich diese Fehlermeldung

Warning: Invalid argument supplied for foreach() in D:\SERVER\Homepages\Kleiner-Elektronik\inc\header.inc.php on line 22

Warum kann ich die Werte nicht mehr auslesen?

Danke
 
Hi,

das liegt daran, dass du ein Array per HTML weitergeben willst, da HTML aber keine Arrays kennt, müsstest du sowas ähnliches wie

PHP:
$hdids = implode($_POST['HDIDS']);

machen, da du sonst immer nur bei dem übergebenen (hidden) Wert ein 'Array' drinstehen hast.

Das ist ja dasselbe wenn du ein array per echo ausgeben willst, dann steht auch nur 'Array' da.

Es ist auch oft hilfreich, sich einfach mal die kompletten übermittelten Werte auszugeben.
PHP:
echo "<pre>";
var_dump($_POST);
echo "</pre>";

Auch ein Blick in den Quelltext der Seite ist manchmal hilfreich ;)

mfg

Devil
 
Danke für die Tips,
das Problem ist aber jetzt folgendes.

ich übergebe die HDS mit der ID 2 und 5

wenn ich nun diese Wete mit implode übergebe, dann habe ich 25.

Hättest du noch einen kleinen Tip? ;-)

Danke
 
Ja das habe ich ja benutzt

$hdids = implode($_POST['HDIDS']); und was da raus kommt sind alle Werte zusammengeschrieben
 
Ach, da hab ich ja was vergessen.

Also zuerst machst du
PHP:
$hdids = implode(",", $_POST['HDIDS']);

und nach der Übergabe kannst du per
PHP:
$hdids = explode(",", $_POST['HDIDS']);

wieder ein Array drausmachen.

Hoffe das hilft dir weiter.

mfg

Devil
 
Original geschrieben von ensacom
$hdids = implode($_POST['HDIDS']); und was da raus kommt sind alle Werte zusammengeschrieben
Du sollst ja auch serialize() verwenden, in Deinem implode fehlt die Angabe eines Trennzeichens drum schreibts alles zamm.
serialize() funktioniert auch mit mehrdimensionalen Arrays.
 
Zurück