Brauche Hilfe bei einem Array Problem
Brauche Hilfe bei einem Array Problem
Ich habe ein Uploadformular.
code:
for ($j=0; $j<5; $j++) {
echo "<input type=file name=img[] size=30><br>";
}
5 Felder zum uploaden von Bildern.
Die Bilder werden dann ja in ein array gepackt.
Dann hochgeladen.
code:
$test = date("Y_m_d_");
if ($_REQUEST['submitted']){
for ($i=0; $i<$number_of_uploads; $i++) {
@copy($img[$i], "$abpath/$test$img_name[$i]") or $log .= "Couldn't copy image 1 to server<br>";
}
}
Wie bekomme ich jetzt die Dateinamen wieder aus dem Array herraus, um das ich diese als Variablen weiter zur verfügung habe?
Dabei ist zu beachten, das dem Dateiname beim schreiben auf Festplatte mit $test das aktuelle Datum vorrangestellt wird. Es ist also nicht mehr der Dateiname aus dem ursprünlichen Formular.
Ps.: die Dateinamen sollen später in eine DB eingetragen werden.
code:
for ($j=0; $j<5; $j++) {
echo "<input type=file name=img[] size=30><br>";
}
5 Felder zum uploaden von Bildern.
Die Bilder werden dann ja in ein array gepackt.
Dann hochgeladen.
code:
$test = date("Y_m_d_");
if ($_REQUEST['submitted']){
for ($i=0; $i<$number_of_uploads; $i++) {
@copy($img[$i], "$abpath/$test$img_name[$i]") or $log .= "Couldn't copy image 1 to server<br>";
}
}
Wie bekomme ich jetzt die Dateinamen wieder aus dem Array herraus, um das ich diese als Variablen weiter zur verfügung habe?
Dabei ist zu beachten, das dem Dateiname beim schreiben auf Festplatte mit $test das aktuelle Datum vorrangestellt wird. Es ist also nicht mehr der Dateiname aus dem ursprünlichen Formular.
Ps.: die Dateinamen sollen später in eine DB eingetragen werden.
-
stefanpropehan
- Posts: 335
- Joined: 2002-12-17 22:25
- Location: Berlin
Re: Brauche Hilfe bei einem Array Problem
Du müstest im PHP ein array namesn $_FILES haben am besten machst einfach ein
dann siehtst du genau wie das array aufgebaut ist oder du schaust einfach hier http://de3.php.net/manual/de/features.file-upload.php
Code: Select all
if ($_REQUEST['submitted']){
var_dump($_FILES);
}Re: Brauche Hilfe bei einem Array Problem
Da bekomm ich diese Ausgabe:
Und nun weiter? Das waren 4 Bilder hochgeladen. wie komm ich jetzt an den Datienamen/Variablen für die Dateinamen?
Code: Select all
array(1) { ["img"]=> array(5) { ["name"]=> array(4) { [0]=> string(12) "Shot0018.jpg" [1]=> string(12) "Shot0048.jpg" [2]=> string(12) "Shot0050.jpg" [3]=> string(12) "Shot0051.jpg" } ["type"]=> array(4) { [0]=> string(11) "image/pjpeg" [1]=> string(11) "image/pjpeg" [2]=> string(11) "image/pjpeg" [3]=> string(11) "image/pjpeg" } ["tmp_name"]=> array(4) { [0]=> string(29) "J:PHPuploadtempphp4363.tmp" [1]=> string(29) "J:PHPuploadtempphp4364.tmp" [2]=> string(29) "J:PHPuploadtempphp4365.tmp" [3]=> string(29) "J:PHPuploadtempphp4366.tmp" } ["error"]=> array(4) { [0]=> int(0) [1]=> int(0) [2]=> int(0) [3]=> int(0) } ["size"]=> array(4) { [0]=> int(69803) [1]=> int(80062) [2]=> int(68743) [3]=> int(72023) } } }-
stefanpropehan
- Posts: 335
- Joined: 2002-12-17 22:25
- Location: Berlin
Re: Brauche Hilfe bei einem Array Problem
na ganz einfach
habe das aber net getestet must nochmal schauen ob parse fehler drin sind
Code: Select all
$uploaddir = 'ein/verzeichniss/';
for ($i=0; $i<$number_of_uploads; $i++)
{
if (move_uploaded_file($_FILES['img']['tmp_name'][$i], $uploaddir.$_FILES['img']['name'][$i]))
{
echo $uploaddir.$_FILES['img']['name'][$i]; // der name + pfad
}
}Re: Brauche Hilfe bei einem Array Problem
Nein ;)
So komm ich nicht weiter.
Ich brauche eine Möglichkeit, um die Upgelodeten Dateien in eine sql Datenbank einzutragen. Also nicht die Dateien, sondern nur den Namen.
Unz zwar incl. dem mit $test hinzugefügtem Datum.
Irgendwann muss ich ja dann die SQL abrage machen,
Dazu brauche ich ja die Variablen $b1 $b2 $b3 $b4
Also muss ich ja den Dateinamen incl. Datum mit einer Variable definieren.
Irgendwie komm ich da jetzt nicht weiter... :(
So komm ich nicht weiter.
Ich brauche eine Möglichkeit, um die Upgelodeten Dateien in eine sql Datenbank einzutragen. Also nicht die Dateien, sondern nur den Namen.
Unz zwar incl. dem mit $test hinzugefügtem Datum.
Irgendwann muss ich ja dann die SQL abrage machen,
Code: Select all
MYSQL_CONNECT($db_host, $db_user, $db_pass)
or die ( "Datenbank ist nicht erreichbar");
$sqlab = "insert into bilder";
$sqlab .= "(bild_1, bild_2, bild_3, bild_4) values ";
$sqlab .= "('$b1','$b2','$b3','$b4')";
mysql_db_query("$db_name", $sqlab);
$num = mysql_affected_rows();
if ($num>0){
echo "<br><big>Bilder wurden hinzugef></big><br/>";
Also muss ich ja den Dateinamen incl. Datum mit einer Variable definieren.
Irgendwie komm ich da jetzt nicht weiter... :(
-
stefanpropehan
- Posts: 335
- Joined: 2002-12-17 22:25
- Location: Berlin
Re: Brauche Hilfe bei einem Array Problem
mhh ich baue dir jetzt eigentlich nicht deine applikation aber hier nochmal ein denkanstoss... die dateien werden beim hochladen temporär gespeichert - wenn du diese also weiter verwenden willst must du sie erst kopieren
dann kannst du dir die query bauen die denn pfad der neuen dateien in die db einträgt... zb so...
obwohl das kein guter code ist...
Code: Select all
move_uploaded_file($_FILES['img']['tmp_name'][$i], uploaddir.$_FILES['img']['name'][$i])Code: Select all
$sqlab = "insert into bilder";
$sqlab .= "(bild_1, bild_2, bild_3, bild_4) values ";
$sqlab .= "("$_FILES['img']['name'][0]", "$_FILES['img']['name'][1]", usw...)"; Re: Brauche Hilfe bei einem Array Problem
Irgendwie komme ich damit garnicht zurecht. In die DB wird dabei nu Humbug geschreiben...ich habs anders versucht:
So ich benutze nun folgendes Uploadscript :
Mit foreach zerlege ich das Array in passende Variablen, die ich dann in eine DB eintragen kann.
Das Problem dabei ist, erden jetzt nicht alle Uploadfelder genutzt, bekomme ich als Array die ungenutzen Felder trotzdem mit vorrangestelltem Datum. Damit bleibt das Feld in der Datenbank nicht leer. Das aber ist schlecht.
Beispiel für array mit nur 2 durchgeführten Uploads:
Die 2 letzten Datumsangaben dürfen da nicht sein....auch das abschliessende Komma ist nicht wirklich gut da...
@stefanpropehan
Danke für deine Hilfe. Du sollst nicht meine Scripte schreiben...ich frag nur, weil ich nicht weiterkomme. Wenn du nicht magst, musst du hier nicht posten....
So ich benutze nun folgendes Uploadscript :
Code: Select all
<?
$abpath = "/home/www/web3/bilder";
$sizelim = "no";
$size = "2500000";
$number_of_uploads = 4;
$dateadd = date("Y_m_d_");
if ($_REQUEST['submitted']){
$cert1 = "image/pjpeg";
$cert2 = "image/jpeg";
$cert3 = "image/gif";
$cert4 = "image/ief";
$cert5 = "image/png";
$cert6 = "image/tiff";
$cert7 = "image/bmp";
$cert8 = "image/vnd.wap.wbmp";
$cert9 = "image/x-cmu-raster";
$cert10 = "image/x-x-portable-anymap";
$cert11 = "image/x-portable-bitmap";
$cert12 = "image/x-portable-graymap";
$cert13 = "image/x-portable-pixmap";
$cert14 = "image/x-rgb";
$cert15 = "image/x-xbitmap";
$cert16 = "image/x-xpixmap";
$cert17 = "image/x-xwindowdump";
$log = "";
for ($i=0; $i<$number_of_uploads; $i++) {
if ($img_name[$i] == "") {
$log .= "No file selected for upload $i<br>";
}
if ($img_name[$i] != "") {
if (file_exists("$abpath/$dateadd$img_name[$i]")) {
$log .= "File $i already existed<br>";
} else {
if (($sizelim == "yes") && ($img_size[$i] > $size)) {
$log .= "File $i was too big<br>";
} else {
if (($img_type[$i] == $cert1)
or ($img_type[$i] == $cert2)
or ($img_type[$i] == $cert3)
or ($img_type[$i] == $cert4)
or ($img_type[$i] == $cert5)
or ($img_type[$i] == $cert6)
or ($img_type[$i] == $cert7)
or ($img_type[$i] == $cert8)
or ($img_type[$i] == $cert9)
or ($img_type[$i] == $cert10)
or ($img_type[$i] == $cert11)
or ($img_type[$i] == $cert12)
or ($img_type[$i] == $cert13)
or ($img_type[$i] == $cert14)
or ($img_type[$i] == $cert15)
or ($img_type[$i] == $cert16)
or ($img_type[$i] == $cert17))
{
@copy($img[$i], "$abpath/$dateadd$img_name[$i]") or $log .= "Couldn't copy image 1 to server<br>";
if (file_exists("$abpath/$dateadd$img_name[$i]")) {
$log .= "File $i was uploaded<br>";
}
} else {
$log .= "File $i is not an image<br>";
}
}
}
}
}
foreach ($img_name as $value) {
echo "$dateadd$value, ";}
?>
<html>
<head>
<title>Image Report</title>
</head>
<body>
<p>Log:<br>
<?
echo "$log";
?>
</p>
<body>
</html>
<?
exit;
}
?>
<html>
<head>
<title>Upload Image</title>
</head>
<body>
<form method=POST action=<? $php_self ?>enctype=multipart/form-data>
<p>Files to upload:<br>
<?
for ($j=0; $j<$number_of_uploads; $j++) {
echo"<input type=file name='img[]' size='30'><br>";
}
?>
<input type="hidden" name="submitted" value="true">
<input type="submit" name="submit" value="Upload">
</form>
</body>
</html>Das Problem dabei ist, erden jetzt nicht alle Uploadfelder genutzt, bekomme ich als Array die ungenutzen Felder trotzdem mit vorrangestelltem Datum. Damit bleibt das Feld in der Datenbank nicht leer. Das aber ist schlecht.
Beispiel für array mit nur 2 durchgeführten Uploads:
Code: Select all
2003_09_17_bild1.jpg, 2003_09_17_bild2.jpg, 2003_09_17_, 2003_09_17_, @stefanpropehan
Danke für deine Hilfe. Du sollst nicht meine Scripte schreiben...ich frag nur, weil ich nicht weiterkomme. Wenn du nicht magst, musst du hier nicht posten....
-
stefanpropehan
- Posts: 335
- Joined: 2002-12-17 22:25
- Location: Berlin
Re: Brauche Hilfe bei einem Array Problem
war ja auch net böse gemeint :-DBolle wrote: @stefanpropehan
Danke für deine Hilfe. Du sollst nicht meine Scripte schreiben...ich frag nur, weil ich nicht weiterkomme. Wenn du nicht magst, musst du hier nicht posten....
aber so ganz verstehe ich das script net... wenn du schauen willst ob es ein array_element gibt - könntest du mit
Code: Select all
isset($value) bzw empty($value) arbeitenRe: Brauche Hilfe bei einem Array Problem
Das Script soll 2 Sachen machen.
1. ein oder mehrere Bilddateien uploaden
2. die geuppten Bilddateien mit Dateiname und vorrangestelltem Datum in eine Datenbank eintragen, um das die Bilder später, im zusammenhang mit anderen Daten aus der Datenbank, mittels einer SQL Abfrage angezeigt werden können.
Nach foreach kommt dann das SQL Querry, das die Dateinamen einträgt. Das soll dann in etwa so aussehen:
Nun kann es auch sein, das ich auf dem völlig falschen Dampfer bin...so fit bin ich in PHP noch nicht ;)
1. ein oder mehrere Bilddateien uploaden
2. die geuppten Bilddateien mit Dateiname und vorrangestelltem Datum in eine Datenbank eintragen, um das die Bilder später, im zusammenhang mit anderen Daten aus der Datenbank, mittels einer SQL Abfrage angezeigt werden können.
Nach foreach kommt dann das SQL Querry, das die Dateinamen einträgt. Das soll dann in etwa so aussehen:
Code: Select all
....
....
....
}
foreach ($img_name as $value) {
$sqlab = "insert into bilder";
$sqlab .= "(bild_1, bild_2, bild_3, bild_4) values ";
$sqlab .= "($dateadd$value, )";
...
echo " Die Bilder: $dateadd$value, wurden in die Datenbank eingetragen.";
}
?>