PHP 4x Bilderupload mit MySql

paranoid64

Grünschnabel
Hallo an alle : )
Dieses Upload Skript funktioniere schon, es war nur ein Bildupload möglich.
Leider soll ich jetzt 3 weiter Upload Möglichkeiten einbauen.

So hat es Funktioniert :

Eingabemaske:
PHP:
	<input type="file" name="datei" size="50" maxlength="100000" accept="image">


Jetzt habe ich in die :google: diese Möglichkeit gefunden:
PHP:
<input type="file" name="datei[]" size="50" maxlength="100000" accept="image">

Dann habe ich in meine Eingabemaske so geändert:

PHP:
<input type="file" name="datei[0]" size="50" maxlength="100000" accept="image">
<input type="file" name="datei[1]" size="50" maxlength="100000" accept="image">
<input type="file" name="datei[2]" size="50" maxlength="100000" accept="image">
<input type="file" name="datei[3]" size="50" maxlength="100000" accept="image">

Die MySql Datenbank für die neuen Bilder erweitert.

Hier das uploadskript:

PHP:
<?php
ini_set('display_errors',true);
ini_set ('error_reporting', E_ALL);


$feld_user=getenv("REMOTE_USER");

$feld_time=date("H:i:s");

$feld_date=date("Y-m-d");

if ($datei[0] && $datei[1] && $datei[2] && $datei[3])

{

	// Auf Fehler überprüfen


	if ($_FILES['datei[0]']['error'] == UPLOAD_ERR_NO_FILE || $_FILES['datei[0]']['error'] == UPLOAD_ERR_PARTIAL || $_FILES['datei[1]']['error'] == UPLOAD_ERR_NO_FILE || $_FILES['datei[1]']['error'] == UPLOAD_ERR_PARTIAL || $_FILES['datei[2]']['error'] == UPLOAD_ERR_NO_FILE || $_FILES['datei[2]']['error'] == UPLOAD_ERR_PARTIAL || $_FILES['datei[3]']['error'] == UPLOAD_ERR_NO_FILE || $_FILES['datei[3]']['error'] == UPLOAD_ERR_PARTIAL)

	{

		die("Die Datei wurde nicht korrekt hochgeladen. Bitte versuchen Sie es erneut.");

	}

	

   elseif ($_FILES['datei[0]']['error'] == UPLOAD_ERR_FORM_SIZE || $_FILES['datei[0]']['error'] == UPLOAD_ERR_INI_SIZE || $_FILES['datei[1]']['error'] == UPLOAD_ERR_FORM_SIZE || $_FILES['datei[1]']['error'] == UPLOAD_ERR_INI_SIZE || $_FILES['datei[2]']['error'] == UPLOAD_ERR_FORM_SIZE || $_FILES['datei[2]']['error'] == UPLOAD_ERR_INI_SIZE || $_FILES['datei[3]']['error'] == UPLOAD_ERR_FORM_SIZE || $_FILES['datei[3]']['error'] == UPLOAD_ERR_INI_SIZE) 		
	{

		die("Die hochgeladene Datei ist zu groß.");

	}

	else

	{

	@mysql_connect("localhost", "user", "pass");

	@mysql_select_db("db");



	// Temporäre Datei schreiben (ist wegen der Lese-Rechte nötig)

	// und auf die temp-Datei Lese Rechte vergeben

	move_uploaded_file($_FILES['datei[0]']['tmp_name'], "tmp/tempfile01.tmp");
	move_uploaded_file($_FILES['datei[1]']['tmp_name'], "tmp/tempfile02.tmp");
	move_uploaded_file($_FILES['datei[2]']['tmp_name'], "tmp/tempfile03.tmp");
	move_uploaded_file($_FILES['datei[3]']['tmp_name'], "tmp/tempfile04.tmp");
	

	chmod("tmp/tempfile01.tmp", 0644);

	chmod("tmp/tempfile02.tmp", 0644);
	chmod("tmp/tempfile03.tmp", 0644);
	chmod("tmp/tempfile04.tmp", 0644);
	

	// Daten aus Temp-Datei einlesen

	$zeiger01 = fopen("tmp/tempfile01.tmp", "rb");

	$size01 = $_FILES['datei[0]']['size'];
	
	$zeiger02 = fopen("tmp/tempfile02.tmp", "rb");

	$size02 = $_FILES['datei[1]']['size'];
	
	$zeiger03 = fopen("tmp/tempfile03.tmp", "rb");

	$size03 = $_FILES['datei[2]']['size'];
	
	$zeiger04 = fopen("tmp/tempfile04.tmp", "rb");

	$size04 = $_FILES['datei[3]']['size'];	



	// den Dateiinhalt in $data speichern

	$data01 = fread($zeiger01, $size01);

	fclose($zeiger01);
	
	$data02 = fread($zeiger02, $size02);

	fclose($zeiger02);


	$data03 = fread($zeiger03, $size03);

	fclose($zeiger03);
	
	$data04 = fread($zeiger04, $size04);

	fclose($zeiger04);	
	   

	// Temporäre Datei löschen

	@unlink("tmp/tempfile01.tmp");
	@unlink("tmp/tempfile02.tmp");
	@unlink("tmp/tempfile03.tmp");
	@unlink("tmp/tempfile04.tmp");



	// Damit die Datei jetzt in die mySQL Tabelle kann müssen wir sie vorher kodieren:

	$data01 = base64_encode($data01);
	$data02 = base64_encode($data02);
	$data03 = base64_encode($data03);
	$data04 = base64_encode($data04);



	// Leerzeichen im Dateinamen werden mit einem Unterstrich ersetzt

	$dateiname01 = str_replace(" ", "_", $_FILES['datei[0]']['name']);
	$dateiname02 = str_replace(" ", "_", $_FILES['datei[1]']['name']);
	$dateiname03 = str_replace(" ", "_", $_FILES['datei[2]']['name']);
	$dateiname04 = str_replace(" ", "_", $_FILES['datei[3]']['name']);
	

	// Und ab in die mySQL Tabelle...



$sql = "INSERT INTO details (id,user,date,time,titel,originaltitel,sortiertitel,suchbegriffe,produktionsjahr,produktionsland,produktionsland1,label,genre1,genre2,laufzeit,darsteller,regisseur,starttermin_kino,link_amazon,dvd_erscheinungstermin,fsk,link_ofdb,link_imdb,link_forum,inhalt,filmkritik,filmkritik_von,gesamtbewertung,filename,filetype,filecontent,filesize,art,onlinedatum,filename02,filetype02,filecontent02,filename03,filetype03,filecontent03,filename04,filetype04,filecontent04,filesize02,filesize03,filesize04,) VALUES ('','$feld_user','$feld_date','$feld_time','$feld1','$feld2','$feld3','$feld4','$feld5','$feld6','$feld7','$feld34','$feld37','$feld38','$feld11','$feld10','$feld9','$feld19','$feld17','$feld39','$feld13','$feld15','$feld16','$feld14','$feld18','$feld20','$feld21','$feld41','".$dateiname01."','".$_FILES['datei[0]']['type']."','".$data01."','".$size01."','$feld42','$feld43','".$dateiname02."','".$_FILES['datei[1]']['type']."','".$data02."','".$dateiname03."','".$_FILES['datei[2]']['type']."','".$data03."','".$dateiname04."','".$_FILES['datei[3]']['type']."','".$data04."','".$size02."','".$size03."','".$size04."')";



	if ($ergebnis=mysql_query($sql))

	{

	echo "<p>deine Daten wurden abgespeichert :-)</p>";

	}



	else

	{

	echo "<p>:-( ein Fehler trat beim Versuch auf Ihre Daten in der Datenbank abzuspeichern - Fehlermeldung=</p>".mysql_error();

	}

}

exit;



else

{

	// hier sind die mySQL Daten einzufüllen

	@mysql_connect("localhost", "user", "pass");

	@mysql_select_db("db");



$sql = "INSERT INTO details (id,user,date,time,titel,originaltitel,sortiertitel,suchbegriffe,produktionsjahr,produktionsland,produktionsland1,label,genre1,genre2,laufzeit,darsteller,regisseur,starttermin_kino,link_amazon,dvd_erscheinungstermin,fsk,link_ofdb,link_imdb,link_forum,inhalt,filmkritik,filmkritik_von,gesamtbewertung,art,onlinedatum) VALUES ('','$feld_user','$feld_date','$feld_time','$feld1','$feld2','$feld3','$feld4','$feld5','$feld6','$feld7','$feld34','$feld37','$feld38','$feld11','$feld10','$feld9','$feld19','$feld17','$feld39','$feld13','$feld15','$feld16','$feld14','$feld18','$feld20','$feld21','$feld41','$feld42','$feld43')";

	if ($ergebnis=mysql_query($sql))

	{

		echo "<p>deine Daten wurden abgespeichert :-)</p>";

	}

	else

	{

	echo "<p>:-( ein Fehler trat beim Versuch auf Ihre Daten in der Datenbank abzuspeichern - Fehlermeldung=</p>".mysql_error();

	}



}

exit;

}

?>

Bekomme trotz ini_set('display_errors',true); ini_set ('error_reporting', E_ALL); keine Fehlermeldung.

Was ich bekomme ist ein weißen Bildschirm -> Quellcode ist leer oder er gibt mein „Echo“ aus das er es gemacht hat. dies stimmt aber leider nicht, die db ist leer.

der tmp Ordner hat die Rechte 777 auch die anderen Rechte stimmen.
An die error_log komme ich nicht ran, leider.

Leider komme ich nicht mehr weiter :-( !

Hiermit bitte ich um Hilfe ; )
 
Hallo!
Danke für deine Hilfe, leider hat das nicht funktioniert. Aber es ist sehr hilfreich :).
habe auch dies probiert:
PHP:
$_FILES['datei']['error'][3]
PHP:
$_FILES['datei'][3]['error']

Habe noch etwas gefunden:

http://www.rrze.uni-erlangen.de/dienste/web/php/artikel/datei-uploads.shtml

die 4 Upload flächen sehen so aus:
PHP:
<input type="file" name="datei[]" size="50" maxlength="100000" accept="image">
<input type="file" name="datei[]" size="50" maxlength="100000" accept="image">
<input type="file" name="datei[]" size="50" maxlength="100000" accept="image">
<input type="file" name="datei[]" size="50" maxlength="100000" accept="image">
Aber hab wieder nur eine leere HTML seite
PHP:
<?php
ini_set('display_errors',true);
ini_set ('error_reporting', E_ALL);


$feld_user=getenv("REMOTE_USER");

$feld_time=date("H:i:s");

$feld_date=date("Y-m-d");

if ($datei)

{

	// Auf Fehler überprüfen


	if ($_FILES['datei']['error'] == UPLOAD_ERR_NO_FILE || $_FILES['datei']['error'] == UPLOAD_ERR_PARTIAL)

	{

		die("Die Datei wurde nicht korrekt hochgeladen. Bitte versuchen Sie es erneut.");

	}

	

   elseif ($_FILES['datei']['error'] == UPLOAD_ERR_FORM_SIZE || $_FILES['datei']['error'] == UPLOAD_ERR_INI_SIZE) 		
	{

		die("Die hochgeladene Datei ist zu groß.");

	}

	else

	{

	@mysql_connect("localhost", "xxx", "xxx");

	@mysql_select_db("xxx");



	// Temporäre Datei schreiben (ist wegen der Lese-Rechte nötig)

	// und auf die temp-Datei Lese Rechte vergeben
	$str_ziel = 'tmp/' .$_FILES['datei']['name'];
   move_uploaded_file($_FILES['datei']['tmp_name'], $str_ziel);

	chmod($str_ziel, 0644);
	

	// Daten aus Temp-Datei einlesen

	$zeiger01 = fopen($str_ziel, "rb");

	$size01 = $_FILES['datei']['size'];



	// den Dateiinhalt in $data speichern

	$data01 = fread($zeiger01, $size01);

	fclose($zeiger01);
	   

	// Temporäre Datei löschen

	@unlink($str_ziel);



	// Damit die Datei jetzt in die mySQL Tabelle kann müssen wir sie vorher kodieren:

	$data01 = base64_encode($data01);




	// Leerzeichen im Dateinamen werden mit einem Unterstrich ersetzt

	$dateiname01 = str_replace(" ", "_", $_FILES['datei']['name']);
	

	// Und ab in die mySQL Tabelle...



$sql = "INSERT INTO details (id,user,date,time,titel,originaltitel,sortiertitel,suchbegriffe,produktionsjahr,produktionsland,produktionsland1,label,genre1,genre2,laufzeit,darsteller,regisseur,starttermin_kino,link_amazon,dvd_erscheinungstermin,fsk,link_ofdb,link_imdb,link_forum,inhalt,filmkritik,filmkritik_von,gesamtbewertung,filename,filetype,filecontent,filesize,art,onlinedatum,filename02,filetype02,filecontent02,filename03,filetype03,filecontent03,filename04,filetype04,filecontent04,filesize02,filesize03,filesize04,) VALUES ('','$feld_user','$feld_date','$feld_time','$feld1','$feld2','$feld3','$feld4','$feld5','$feld6','$feld7','$feld34','$feld37','$feld38','$feld11','$feld10','$feld9','$feld19','$feld17','$feld39','$feld13','$feld15','$feld16','$feld14','$feld18','$feld20','$feld21','$feld41','".$dateiname01."','".$_FILES['datei']['type']."','".$data01."','".$size01."','$feld42','$feld43','".$dateiname01."','".$_FILES['datei']['type']."','".$data01."','".$dateiname01."','".$_FILES['datei']['type']."','".$data01."','".$dateiname01."','".$_FILES['datei']['type']."','".$data01."','".$size01."','".$size01."','".$size01."')";



	if ($ergebnis=mysql_query($sql))

	{

	echo "<p>deine Daten wurden abgespeichert :-)</p>";

	}



	else

	{

	echo "<p>:-( ein Fehler trat beim Versuch auf Ihre Daten in der Datenbank abzuspeichern - Fehlermeldung=</p>".mysql_error();

	}

}

exit;



else

{

	// hier sind die mySQL Daten einzufüllen

	@mysql_connect("localhost", "xxx", "xxx");

	@mysql_select_db("xxx");



$sql = "INSERT INTO details (id,user,date,time,titel,originaltitel,sortiertitel,suchbegriffe,produktionsjahr,produktionsland,produktionsland1,label,genre1,genre2,laufzeit,darsteller,regisseur,starttermin_kino,link_amazon,dvd_erscheinungstermin,fsk,link_ofdb,link_imdb,link_forum,inhalt,filmkritik,filmkritik_von,gesamtbewertung,art,onlinedatum) VALUES ('','$feld_user','$feld_date','$feld_time','$feld1','$feld2','$feld3','$feld4','$feld5','$feld6','$feld7','$feld34','$feld37','$feld38','$feld11','$feld10','$feld9','$feld19','$feld17','$feld39','$feld13','$feld15','$feld16','$feld14','$feld18','$feld20','$feld21','$feld41','$feld42','$feld43')";

	if ($ergebnis=mysql_query($sql))

	{

		echo "<p>deine Daten wurden abgespeichert :-)</p>";

	}

	else

	{

	echo "<p>:-( ein Fehler trat beim Versuch auf Ihre Daten in der Datenbank abzuspeichern - Fehlermeldung=</p>".mysql_error();

	}



}

exit;

}

?>
 
PHP:
echo "<pre>"; print_r($_FILES); echo "</pre>";
sollte Dir zeigen, wie Du auf das Array zugreifen musst.
 
Zurück