Uploaden mit mehreren Feldern ( Fehler )

Snake3333

Mitglied
Guten Tag zusammen,

Ich habe ein Problem mit meinem Upload Skript, ich habe 2 Felder zum Hochladen eingefügt, dies funktioniert auch alles perfekt. Nur wenn man dann nur eine Datei hochladen möchte, sprich das andere Feld leer lässt, dann zeigt er mir bei der Ergebnissseite einen Fehler beim 2. Feld an.
Wie bekomme ich das genau hin das das Skript selber weiß ob nur eine oder zwei Dateien hochgeladen wurden.
Hier die beiden Seiten;

Formular:
PHP:
<html>
<head>
<title>Hundeschule Red Bone UploadSkript</title>
</head>
<body bgcolor="#FFD39B">

<div align=right><iframe height="30" width="35%" src="http://hundeschule-redbone.de/test.php" scrolling="yes"> 

</iframe></div>

<?php

echo 

'<p><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs

p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="6">
</font><u><font size="5">Herzlich Wilkommen im Upload System der Hundeschule Red
Bone</font></u></b><p>&nbsp;<p>&nbsp;<p>
<form action="upload_offiziel.php" method="post" enctype="multipart/form-data">
<fieldset>
<legend>Datei hochladen</legend><input name="agreecheck" type="checkbox" onclick="this.form.subm.disabled=!this.checked">Ich
habe die <a href="http://hundeschule-redbone.de/upload/regeln.html"> Upload Regeln</a> gelesen und akzeptiere Sie mit dem 

Kreuz im Kästchen.
<br><input type="file" name="datei" /><br />
<input type="file" name="datei2" /><br />
<input type="Submit" value="Hochladen" name="subm" disabled>
&nbsp;
<p>* Es werden zur Zeit alle Dateitypen in allen Größen akzeptiert. Je nach
Größe kann es dennoch ein klein wenig dauern.</p>
<p><a href="http://hundeschule-redbone.de/upload/up_erklärung.html">Allgemeine
Erklärung des Hochlade Service</a></form></p>
</fieldset>
<center><table border="0" cellspacing="1" cellpadding="2" width="95%" >
<tr><td class="ifo1"><center><p><font size="2">Coding and Design Copyright 2005-2008 by <a 

href="http://12921.homepagemodules.de/user.php?board=12921&id=153079"><span class="tarea">Snake</span></a>*</font></p>
<p><font size="1">*Wenn nicht anders Angegeben.</font></p>
<p><font size="1">Sie möchten auch Hilfe oder Betreuung bei ihrer Homepage oder bei ihren Forum?
<br>Dann melden Sie sich einfach bei Snake per E-Mail oder ICQ.</font></p>
    </center>
</table></center>';
?>
</body>
</html>

Ergebnissseite;
PHP:
<html>
<head><title>Hundeschule Red Bone UploadSkript|Ergebniss</title>
        
<body bgcolor="#FFD39B">
<font 

size="5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n

bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><u>Herzlich Wilkommen im Upload System der Hundeschule Red
Bone<br><center>Ergebniss des Uploads</center></u></b></font>
<?php
echo '
<p>';

if (isset($_FILES['datei'])) {
    $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/upload/';
    
    $uploadfile = $uploaddir.$_FILES['datei']['name'];
    $filename = $_FILES['datei']['name'];
    if (move_uploaded_file($_FILES['datei']['tmp_name'], $uploadfile)){
echo "<p style='color:#CD7054'>Sie haben soebend<br>http://hundeschule-redbone.de/upload/<strong>$filename</strong> 

<br>erfolgreich hochgeladen.<a  href='/upload/$filename'>Voransicht</a><br>Zum Einfügen ins Forum können  Sie auch folgende 

Cods benutzen:<br><hr>[ img]  http://hundeschule-redbone.de/upload/$filename
[ /img]<br><hr>[grafik]
http://hundeschule-redbone.de/upload/$filename
[/grafik]";
    } else {
        echo "<p style='color:#c00'>$filename konnte  <strong>nicht</strong> hochgeladen  

werden!".$_FILES['userfile']['error']."</p>";
    }
}

echo '
<br><hr>
<hr><br>
<p>';

if (isset($_FILES['datei2'])) {
    $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/upload/';
    
    $uploadfile = $uploaddir.$_FILES['datei2']['name'];
    $filename = $_FILES['datei2']['name'];
    if (move_uploaded_file($_FILES['datei2']['tmp_name'], $uploadfile)){
echo "<p style='color:#CD7054'>Die zweite Datei <br>http://hundeschule-redbone.de/upload/<strong>$filename</strong> <br>wurde 

auch erfolgreich hochgeladen.<a  href='/upload/$filename'>Voransicht</a><br>Zum Einfügen ins Forum können  Sie auch folgende 

Cods benutzen:<br><hr>[ img]  http://hundeschule-redbone.de/upload/$filename
[ /img]<br><hr>[grafik]
http://hundeschule-redbone.de/upload/$filename
[/grafik]";
    } else {
        echo "<p style='color:#c00'>Zweite Datei $filename konnte  <strong>nicht</strong> hochgeladen  

werden!".$_FILES['userfile']['error']."</p>";
    }
}

echo '



</table></center>';

?>

</body>


</html>
 
Wie wäre es mit Prüfe ob Feld 1 bzw Feld 2 einen inhalt hat und nur wenn ein Feld einen inhalt hat, soll es auch benutzt werden:

Beispiel:
PHP:
if($_POST['feld1'])
 
Bin leider nicht so das Ass in sachen PHP.
Können Sie mir wohl sagen wie ich das dann einauen muss.
Habe die if Konstruktion von ihnen über die If Konstruktion von dem Ergebnissfenster von datei2 gemacht, dadurch ist dann der komplette Abschitt nicht mehr angezeigt worden.

PHP:
<html>
<head><title>Hundeschule Red Bone UploadSkript|Ergebniss</title>
        
<body bgcolor="#FFD39B">
<font 

size="5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n

bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><u>Herzlich Wilkommen im Upload System der Hundeschule Red
Bone<br><center>Ergebniss des Uploads</center></u></b></font>
<?php
echo '
<p>';

if (isset($_FILES['datei'])) {
    $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/upload/';
    
    $uploadfile = $uploaddir.$_FILES['datei']['name'];
    $filename = $_FILES['datei']['name'];
    if (move_uploaded_file($_FILES['datei']['tmp_name'], $uploadfile)){
echo "<p style='color:#CD7054'>Sie haben soebend<br>http://hundeschule-redbone.de/upload/<strong>$filename</strong> 

<br>erfolgreich hochgeladen.<a  href='/upload/$filename'>Voransicht</a><br>Zum Einfügen ins Forum können  Sie auch folgende 

Cods benutzen:<br><hr>[ img]  http://hundeschule-redbone.de/upload/$filename
[ /img]<br><hr>[grafik]
http://hundeschule-redbone.de/upload/$filename
[/grafik]";
    } else {
        echo "<p style='color:#c00'>$filename konnte  <strong>nicht</strong> hochgeladen  

werden!".$_FILES['userfile']['error']."</p>";
    }
}

echo '
<br><hr>
<hr><br>
<p>';
if($_POST['datei2'])
if (isset($_FILES['datei2'])) {
    $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/upload/';
    
    $uploadfile = $uploaddir.$_FILES['datei2']['name'];
    $filename = $_FILES['datei2']['name'];
    if (move_uploaded_file($_FILES['datei2']['tmp_name'], $uploadfile)){
echo "<p style='color:#CD7054'>Die zweite Datei <br>http://hundeschule-redbone.de/upload/<strong>$filename</strong> <br>wurde 

auch erfolgreich hochgeladen.<a  href='/upload/$filename'>Voransicht</a><br>Zum Einfügen ins Forum können  Sie auch folgende 

Cods benutzen:<br><hr>[ img]  http://hundeschule-redbone.de/upload/$filename
[ /img]<br><hr>[grafik]
http://hundeschule-redbone.de/upload/$filename
[/grafik]";
    } else {
        echo "<p style='color:#c00'>Zweite Datei $filename konnte  <strong>nicht</strong> hochgeladen  

werden!".$_FILES['userfile']['error']."</p>";
    }
}

echo '



</table></center>';

?>

</body>


</html>
 
also wenn das nicht geklappt hat, probier's mit is_uploaded_file().
füge vor der ganzen upload-prozedur mal das ein:
PHP:
if(is_uploaded_file($_FILES['datei']['tmp_name']))
{
   //Upload-Skript
} else {
   //Feld ist leer
}

so hats bei mir funktioniert...

lg
 
Guten Abend nochmal,
gibt es auch eine möglichkeit zu überprüfen ob der Name schon vorhanden ist und wenn er Vorhanden ist, dass der Name geändert abgespeichert wird.
Z.B. so;
Der Name "Datei" ist schon vergeben, somit kommt dann eine Meldung mit "Dieser Name war schon vergeben, das Bild wurde unter den Namen "Datei2" abgespeichert."
Also das dann automatisch eine zufällige Zahl angehängt wird.

Wie gesagt, bin leider nicht so das Ass in Sachen php, habe aber schon über die Suche nach ähnlichen Themen gesucht, ohne Erfolg.
 
du kannst vorher mit file_exists() überprüfen, ob die Datei bereits vorhanden ist:

PHP:
$datei = $upload_dir.$_FILES['file']['name'];

if(file_exists($datei))
{
   $datei = $upload_dir.$_FILES['file']['name'.'2']; //Hier wird zum Dateinamen 2 angehängt. Du kannst natürlich dazugeben was du willst...
   echo 'Dateiname bereits vorhanden! Die Datei wurde unter '.$datei.' abgespeichert!';
}

//Hier dann den Fileupload mit Hilfe von $datei ausführen....

Sollte
PHP:
$upload_dir.$_FILES['file']['name'.'2'];
nicht funktioneren, probier's mit
PHP:
$upload_dir.$_FILES['file']['name'].'2';

lg Andi
 
Leider funktioniert es aber nicht richtig, es wird nicht richtig überprüft ob es die Datei schon gibt.
Hier der Cod denn ich so nun aufgestellt ;
PHP:
<?php
echo '
<p>';
if(is_uploaded_file($_FILES['datei']['tmp_name']))
if (isset($_FILES['datei'])) {
    $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/upload/';
    
    $uploadfile = $uploaddir.$_FILES['datei']['name'];
    $filename = $_FILES['datei']['name'];
$datei = $upload_dir.$_FILES['file']['name'];

if(file_exists($datei))
{
   $upload_dir.$_FILES['file']['name'].'2';  //Hier wird zum Dateinamen 2 angehängt. Du kannst natürlich dazugeben was du 

willst...
   echo 'Dateiname bereits vorhanden! Die Datei wurde unter '.$datei.' abgespeichert!';
}

//Hier dann den Fileupload mit Hilfe von $datei ausführen....  
    if (move_uploaded_file($_FILES['datei']['tmp_name'], $uploadfile)){
echo "<p style='color:#CD7054'>Sie haben soebend<br>http://hundeschule-redbone.de/upload/<strong>$filename</strong> 

<br>erfolgreich hochgeladen.<a  href='/upload/$filename'>Voransicht</a><br>Zum Einfügen ins Forum können  Sie auch folgende 

Cods benutzen:<br><hr>[ img]  http://hundeschule-redbone.de/upload/$filename
[ /img]<br><hr>[grafik]
http://hundeschule-redbone.de/upload/$filename
[/grafik]";
    } else {
        echo "<p style='color:#c00'>$filename konnte  <strong>nicht</strong> hochgeladen  

werden!".$_FILES['userfile']['error']."</p>";
    }
}

echo '
<br><hr>
 
Zurück