Kleines Problem...

QUEST08

Erfahrenes Mitglied
Hallo und einen schönen Sonntag an alle :-)

Ich habe hier ein Problem bei dem ich nicht weiterkomme. Habe natürlich die
Suchfunktion benutzt und auch Google, aber Google war wohl nicht mein Freund.

Folgendes:

Ich möchte eine Art "Multi-Upload" realisieren. Bei einerm Input-Feld geht alles, ABER bei z.B. 3 Feldern habe ich Probleme. Wenn ich auf senden klicke prüft er in einer schleife die dateien auf size typ usw. wenn ich nun aber z.b. feld2 leer lasse und somit nur in feld 1 und feld 3 dateien sind, zeigt er mir MEINEN fehler, dass keine datei ausgewählt wurde. Ist ja schön, dass das geht, aber:

Wie realisiere ich folgendes:
Ich habe 5 Input-Felder für Dateien ("Durchsuchen...")´
Wenn jetzt Feld 2 leer ist, soll er auch keinen Fehler anzeigen und das sozusagen überspringen und bei Feld 3 weiter machen.

Ich hoffe jemand versteht was ich meine :-)

Danke schon mal für eure Hilfe.
 
Zeig mal die Stelle aus deinem Code, der die übergebenen Daten behandelt und ggf. Fehlermeldungen ausgegeben werden.

Ohne Code kann man den Fehler an vielen Stellen vermuten.
 
PHP:
// Datei auslesen

$tempname = isset($_FILES['datei']['tmp_name']) ? strip_tags($_FILES['datei']['tmp_name']) : "";
$name     = isset($_FILES['datei']['name'])     ? strip_tags($_FILES['datei']['name'])     : "";
$type     = isset($_FILES['datei']['type'])     ? strip_tags($_FILES['datei']['type'])     : "";
$size     = isset($_FILES['datei']['size'])     ? strip_tags($_FILES['datei']['size'])     : "";
$send     = isset($_POST['send'])               ? strip_tags($_POST['send'])               : "";

//Aufbauen der Datenbankverbindung

include "system_files/connection.php";

//Prüfen ob Datei in Blacklist

$result = @mysql_query("SELECT * FROM `t_files_blacklist` WHERE dateiname = '$name' AND dateigroesse = '$size'") or die(mysql_error());
while ($row = mysql_fetch_array ($result)) 
{
 if(mysql_num_rows($result)>0) {header("Location:upload_check_false_8.php");};
 exit();
};

// Auslesen der minimalen Zeichenlänge der Datei

$result = @mysql_query("SELECT * FROM `t_settings` WHERE bezeichnung = 'minname'") or die(mysql_error());
while ($row = mysql_fetch_array ($result)) 
{
 $minname = $row['wert'];
};

// Auslesen der maximalen Zeichenlänge der Datei

$result = @mysql_query("SELECT * FROM `t_settings` WHERE bezeichnung = 'maxname'") or die(mysql_error());
while ($row = mysql_fetch_array ($result)) 
{
 $maxname = $row['wert'];
};

// Auislesen der maximalen Dateigröße

$result = @mysql_query("SELECT * FROM `t_settings` WHERE bezeichnung = 'maxupload'") or die(mysql_error());
while ($row = mysql_fetch_array ($result)) 
{
 $maxupload = $row['wert'];
};

// Auslesen der minimalen Dateigröße

$result = @mysql_query("SELECT * FROM `t_settings` WHERE bezeichnung = 'minupload'") or die(mysql_error());
while ($row = mysql_fetch_array ($result)) 
{
 $minupload = $row['wert'];
};

// Auslesen des Speicherortes

$result = @mysql_query("SELECT * FROM `t_settings` WHERE bezeichnung = 'zielverzeichnis'") or die(mysql_error());
while ($row = mysql_fetch_array ($result)) 
{
 $zielverzeichnis = $row['wert'];
};

// Prüfen der Datei auf korrekte Eigenschaften

if ($name == "")
  {
  // Datei hat keinen Namen
  header("Location:upload_check_false_1.php");
  }
elseif (strlen($name) < $minname)
  {
  // Dateiname ist zu kurz
  header("Location:upload_check_false_2.php");
  }
elseif (strlen($name) > $maxname)
  {
  // Dateiname ist zu lang
  header("Location:upload_check_false_3.php");
  }
elseif ($size <= $minupload)
  {
  // Dateigröße ist zu klein
  header("Location:upload_check_false_4.php");
  }
elseif ($size > $maxupload)
  {
  // Dateigröße ist zu groß
  header("Location:upload_check_false_5.php");
  }
else
  {

Das hier ist jetzt der Code für eine Datei (nur prüfung ohne upload etc.). Wenn ich nun davor eine Schleife setze, die ich 5 mal ablaufen lasse, und Feld 2 leer ist, zeigt er mir logischerzweise meinen fehler an.

Wie kann ich nun also am anfang prüfen welche felder gesetzt sind bzw. wie regle ich es, wenn ein feld leer ist, dass er dann zum nächsten feld über geht?
 
Du musst natürlich innerhalb der Schleife prüfen, ob eine Datei angegeben wurde.
Einfach z.B.
PHP:
if ( empty( $size ) ) continue;
Somit überspringt die Schleife diesen einen Durchgang und macht beim nächsten weiter.
 
Frag vor der gesamten Verarbeitung den Tempnamen des jeweiligen Feldes ab. Wenn der leer ist, wurde nichts hochgeladen also brauchst du die Verarbeitung nicht zu starten.
 
Perfekt :-) Genau das continue habe ich gesucht :-)

werde das ganze mal einbauen und feedback geben, wenn alles läuft.

vielen Dank!
 
Zurück