Guma
Dateinamen beim Dateiupload - zwei Dateien ein FORM
- php
Hallo Zusammen, ich verwende folgendes Scriptauszug um zwei Dateien auf meinen Server hochzuladen: (Info: Die File-Inputs im Form haben den Namen files[])
<?
//mehrere dateien hochladen
while(list($key,$value) = each($_FILES[files][name]))
{ if(!empty($value))
{ $filename = $value;
$add = "$uploadpath."images/".$filename";
copy($_FILES[files][tmp_name][$key], $add);
chmod("$add",0777);}}
$db->query("INSERT INTO $n_table (titel,bild1,bild2) VALUES ('$TITEL','$files[0]','$files[1]')");
?>
Ich benötige den jeweiligen Namen der hochgeladenen Datei um diese in meine SQL-Tabelle einzutragen. Muss ich die beim Durchlaufen der Schleife generienen oder liegt der bereits im Array ($files[0] ?,$files[1] ?)vor?
Have a nice and sunny day! Guma
Soherum stimmts. Sorry bin heute etwas durcheinander, denn ich habe den Jackpot geknackt.
Guma
n'abend,
Soherum stimmts. Sorry bin heute etwas durcheinander, denn ich habe den Jackpot geknackt.
das ist aber schön! Dann darf sich SELFHTML wohl auf eine Spende deinerseits freuen?!
weiterhin schönen abend...
Moin!
Ich benötige den jeweiligen Namen der hochgeladenen Datei um diese in meine SQL-Tabelle einzutragen. Muss ich die beim Durchlaufen der Schleife generienen oder liegt der bereits im Array ($files[0] ?,$files[1] ?)vor?
Das ist eine Frage, die ein schlichtes var_dump($_FILES) dir auch hätte beantworten können.
- Sven Rautenberg
Das ist eine Frage, die ein schlichtes var_dump($_FILES) dir auch hätte beantworten können.
Danke Sven Rautenberg,
nur wie verwende ich die jetzt?!
array(1) { ["files"]=> array(5) { ["name"]=> array(2) { [0]=> string(19) "mccse2.jpg" [1]=> string(18) "klettern2.jpg" }
$files[0] und $files[1] gibt nichts aus. was mache ich falsch?
Guma
Moin!
Das ist eine Frage, die ein schlichtes var_dump($_FILES) dir auch hätte beantworten können.
Danke Sven Rautenberg,
nur wie verwende ich die jetzt?!
Du siehst die Struktur?
(PS: Wenn du den Textinhalt in <pre> setzt, wird es dir optisch noch deutlicher dargestellt)
array(1) { ["files"]=> array(5) { ["name"]=> array(2) { [0]=> string(19) "mccse2.jpg" [1]=> string(18) "klettern2.jpg" }
Du hast ein Array mit einem Eintrag, darin ist ein Schlüssel "files", welches ein Array mit 5 Einträgen ist, darin ein Schlüssel "name" mit zwei Einträgen, der erste hat den Index 0 und den Inhalt "mxxse2.jpg", der zweite den Index 1 und den Inhalt "klettern2.jpg".
Setzt das mal zusammen.
$files[0] und $files[1] gibt nichts aus. was mache ich falsch?
Logisch, weil du mit $_FILES arbeitest, nicht mit $files. :)
Das $_FILES-Array ist anders strukturiert, als du meinst.
- Sven Rautenberg
Nochmal ich,
ich habe das array vorliegen, kann aber nicht drauf zugreifen, da ich nicht erkenne, wie ich es ausgeben kann:
Array
(
[files] => Array
(
[name] => Array
(
[0] => xberge.jpg
[1] => test.jpg
)
So habe ich versucht xberge.jpg und test.jpg zu bekommen:
$_FILES[0]
$_FILES[1]
$name[0]
$name[1]
ging nicht..
Uff. ich bekomms nicht hin...!
Guma
hi,
ich habe das array vorliegen, kann aber nicht drauf zugreifen, da ich nicht erkenne, wie ich es ausgeben kann:
Bitte beschäftige dich doch endlich mal ein wenig mit den Grundlagen - dein Wissen über Arrays in PHp scheint ja mehr als löchrig zu sein, fast eher durch Nichtexistenz zu glänzen.
Array
(
[files] => Array
(
[name] => Array
(
[0] => xberge.jpg
[1] => test.jpg
)So habe ich versucht xberge.jpg und test.jpg zu bekommen:
$_FILES[0]
$_FILES[1]
Es gibt keine Element mit den nummerischen Indices 0 oder 1 in deinem Array $_FILES.
Zunächst mal gibt es darin einen Eintrag mit dem Index 'name'. Also, wie spricht man den wohl an?
$name[0]
$name[1]
ging nicht..
Das ist ja auch noch absurder. Wo soll denn ein Array $name herkommen? Davon ist weit und breit nichts zu sehen.
gruß,
wahsaga
Zunächst mal gibt es darin einen Eintrag mit dem Index 'name'. Also, wie spricht man den wohl an?
Danke Wahsager,
so auch nicht:?!
$files[name][0]
ich komme nicht an die Lösung ran. Mehrdimensionale Arrays (wenn es einer ist) finde ich schwierig auszulesen. Hilfe oder Tipps?
Guma
n'abend,
$files[name][0]
zunächst einmal möchtest du mit $_FILES arbeiten, welches definitiv nicht per $files ansprechbar ist. Außer du setzt $files = $_FILES -- was eindeutig wenig Sinn machen würde.
Das Kapitel Steuerung von Dateiuploads solltest du dir mal kurz durchlesen. Auch die ("leider" in Englisch verfassten) User Contributed Notes sind des Öfteren recht lesenswert ;)
weiterhin schönen abend...
hi,
so auch nicht:?!
$files[name][0]
Nee, so auch nicht.
globe hat's jetzt noch mal gesagt, und auch Sven hatte es bereits erwähnt - $files ist nicht $_FILES.
Möchtest du nicht langsam mal mit etwas Logik und Verstand an die Sache rangehen, anstatt immer wieder nur wild rumzuprobieren?
Mehrdimensionale Arrays (wenn es einer ist) finde ich schwierig auszulesen. Hilfe oder Tipps?
Lerne erst mal, mit solchen Datenstrukturen umzugehen, spielerisch und an Hand einfacherer Beispiele/Anwendungsfälle - und lasse so lange, bis du das abgeschlossen hast, die Finger von Sachen, die dein Verständnis übersteigen.
gruß,
wahsaga
Moin!
$files[name][0]
ich komme nicht an die Lösung ran. Mehrdimensionale Arrays (wenn es einer ist) finde ich schwierig auszulesen. Hilfe oder Tipps?
Schritt 1: Dein Array heißt $_FILES. Verwende nur $_FILES, keine anderen Variablennamen.
Schritt 2: Der Index kommt in eckigen Klammern hinter den Variablennamen des Arrays. Wie der erste Index heißt, sagt dir var_dump(). Wobei Zahlenindices nicht in Anführungszeichen stehen müssen, Textindices aber schon! Ohne Anführungszeichen sind nur Konstanten und Variablennamen erlaubt, falls der Textindex in einer Konstanten oder Variablen als String steht.
Schritt 3: Weitere Unterarrays werden einfach durch weitere eckige Klammerangaben angesprochen. Regeln siehe Schritt 2.
Bedenke am Rande: PHP kennt keine mehrdimensionalen Arrays im klassischen Sinne. PHP kennt eigentlich nicht mal Arrays im klassischen Sinn. Das, was PHP als Array verkauft, sind eindimensional indizierte geordnete Listen, die man wie Arrays verwenden kann. Die meiste Zeit reicht es allerdings, diese Datenstruktur als Array zu betrachten.
Im Gegensatz zu anderen Programmiersprachen hat man mit diesen PHP-Arrays deshalb ein paar extrem angenehme Freiheiten, nicht die Nachteile von Perl-Hashes (die sind unsortiert), und was die Mehrdimensionalität angeht: PHP-Arrays sind eindimensional, jeder Wert kann aber wieder ein Array enthalten. Dabei hat aber die Dimension eines solchen Unterarrays keinerlei Auswirkungen auf irgendein anderes Unterarray. Im Gegensatz dazu sind echte mehrdimensionale Arrays anderer Programmiersprachen tatsächlich in jeder Dimensionszeile/spalte gleich groß - und meist auch irgendwo fix vordefiniert und schwer zur Laufzeit änderbar.
- Sven Rautenberg