Mailinglisten-Archive |
Clemens Staub schrieb am Donnerstag, den 7. Oktober 1999:
> Situation:
> ich schicke aus einer multipart/form-data FORM eine File
> (Ich habe an die MAX_FILE_SIZE gedacht) an ein Skript.
>
> Die INPUT Felder sind mit "data[]" benannt, das geht soweit
> auch gut. Ich kann $data_name[0], $data_type[0] etc... auslesen.
Tatsächlich?
Nach meinen eigenen Tests (allerdings mit einem alten PHP V3.0.2a)
geht nämlich schon das nicht und es werden Variablen mit den Namen
'data[]', 'data[]_name', 'data[]_type' und 'data[]_size' erzeugt,
die man so gar nicht selber erzeugen erzeugen oder nutzen kann,
außer per $GLOBAL['data[]_name'].
> Problem :
> Jetzt aber, wenn ich mehrere INPUT Felder mit "data[]" benenne, die
> File also nachher z.B. mit $data[5] aufrufe, existiert nur noch die
> Variable $data[5], die entsprechenden $data_name[5] nicht mehr, das
> geht auch nicht wenn ich die das INPUT FELD eindeutig mit data[5]
> benenne !
Genau das gleiche hier. Du könntest z.B. $GLOBALS['data[5]'] und
$GLOBALS['data[5]_name'] verwenden.
So ganz in Deinem Sinne ist das aber nicht ... ;-)
Die kurze Antwort ist also, daß Du beim File-Upload nicht mit Arrays
arbeiten kannst, sondern normale Variable verwenden solltest.
Eine nur mittelhäßliche Ausweichmöglichkeit wäre noch, daß Du im
Formular _doch_ 'data[0]', 'data[1]' usw. als Feldnamen verwendest,
und dann im PHP-Skript die dadurch entstehnden Variablen am Anfang in
ein echtes Array umträgst:
for($i=0; isset($GLOBALS["data[$i]"]); $i++ ) {
$data[$i] = $GLOBALS["data[$i]"];
$data_name[$i] = $GLOBALS["data[$i]_name"];
$data_type[$i] = $GLOBALS["data[$i]_type"];
$data_size[$i] = $GLOBALS["data[$i]_size"];
}
Ciao,
Martin
--
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 5244 5EF3 B0B1 3826 E4EC 8058 7B31 3AD7
php::bar PHP Wiki - Listenarchive