Probleme bei Dateiupload

Html

Erfahrenes Mitglied
Frohe Ostern zusammen ;)

Mit folgendem Code erzeuge ich mir Input-Felder um Dateien zum Upload auszuwählen. Der Code funktioniert soweit ohne Probleme jedoch wenn ich auf die Input-Felder, welche über den JavaScript Code hinzugefügt werden können zugreife ist meine $Files Variable immer leer.

Die anderen Input-Felder die über die Schleife erzeugt werden funktionieren...

PHP:
<!--  Javascript zum erzeugen neuer Inputfelder  -->
<!--------------------------------------------------------------------------------------->

<script type="text/javascript">


	function clone_this(button, objid)
 	{
    	// Tabelle innerhalb des DIVs mit ID "new_passage" clonen
    	var clone_me = document.getElementById(objid).cloneNode(true);

    	// Im Parent-DIV vor dem Kindknoten "button" einhängen
    	button.parentNode.insertBefore(clone_me, button);
	} 

</script>

<!--------------------------------------------------------------------------------------->


<?php
  
include "db_config.php";


$ordner= $_POST['kategorie']."_".$_POST['jahr']; // Ordner ermitteln





echo "<form name='form1' method='post' action=".$_SERVER['PHP_SELF']." >";
	
echo "Anzahl: <input name='anzahlderbilder' type='text' size='4' maxlength='2' value='".$_POST['anzahlderbilder']."'></input>"; 
echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>";
echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='seite' value='" . $_POST['seite'] . "'>";
echo "<input type='submit' name='Weiter' value='Weiter'><br><br>";
	
echo "</form>";





// Button "weiter" gewählt
###################################################################################################################################################
If (isset($_POST['Weiter']))

{ 

	echo "<form name='form2' method='post' action='upload.php' enctype='multipart/form-data'>";
    
	// Benötigte Input-felder erzeugen
	for ($i=0; $i < $_POST['anzahlderbilder']; $i++)
    	echo "<input type='file' name='imagefile[]'><br><br>"; 
    	
    
	
?>

<!--geklontes Element-->
<!--------------------------------------------------------------------------------------->

<div style="visibility:hidden; display:none">
<div id="new_passage">
<input  type="file" name="imagefile[]"><br><br>
</div>
</div>

<br>
<input value="mehr" onclick="javascript:clone_this(this, 'new_passage');" type="button"></input>

<!--------------------------------------------------------------------------------------->

<?	
	

echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>";
echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='seite' value='" . $_POST['seite'] . "'>";
echo "<input type='submit' name='Upload' value='Bilder uploaden'>";
echo "</form>";

}
?>
 
Wo benutzt du denn die File Variable ? Ich sehe gar nicht, dass du die irgendwo verwertest. Vielleicht liegt es daran, dass die Variable eigentlich $_FILES und nicht $files heißt? Versuchs mal aus, vielleicht bringts was.
 
Nein, nein das war jetzt nur ein Schreibfehler in meinem Post.

Ich greife in der upload.php auf die Dateien zu! Aber wie gesagt, Dateien die ich über die in der Schleife generierten Input-Felder ausgewählt habe werden hochgeladen.

Aber wenn ich auf "mehr" klicke und mir somit per Javascript ein weiteres Input-Feld erzeuge, erscheint das auch auf dem Bildschirm, ich kann auch eine Datei auswählen aber in meiner upload.php ist die $FILES - Variable leer

Möglicherweise ist das auch ein Problem im Javascript-Code !?
 
ich würde dir da sehr gerne helfen, aber ich habe keine ahnung von js. hast du vielleicht msn oder icq? ich hätte in einem anderen zusammenhang interesse daran dynamisch neue input felder hinzuzufügen. hast du das aus einem script oder einem tut?
 
Sorry, weder noch!
Hatte mir das von irgendeiner Seite ausm Quelltext kopiert, habe das aber auch schon etwas verändert gehabt-vielleicht gehts deshalb nicht richtig!

Leider finde ich den Link zur Seite nicht mehr :(
 
Ich hab das Problem gefunden! Ganz schön tricki ;)

Also dieses hidden-Input Feld, welches bei Bedarf geklont werden kann und sichtbar wird, ist auch in meinen Formular erfasst!
Hab mir das ganze mal mit dem FirefoxWebdeveloper angeschaut und mir dir Formularinformationen anzeigen lassen:

Ich habe also zwei (vorher Anzahl=1 eingegeben) Input-Felder in meinen Formular registriert:

input[0] - durch Schleife erzeugt
input[1] - hidden Input Feld zum klonen

In meiner Verarbeitung zähle ich die gesendeten Inputfelder und lade so die Daten in einer Schleife hoch. Nun habe ich aber die "Anzahl Input-Felder" - 1 gesetzt da das hidden Input-Feld keine Daten hat.

Klone ich das Feld jetzt einmal so ergibt sich folgendes:

input[0] - durch Schleife erzeugt
input[1] - hidden Input Feld zum klonen
input[2] - geklontes Input Feld mit Daten

So jetzt durchlaufe ich wieder meine Schleife aber ja einmal weniger als ich Input-Felder habe.

Also ist die $FILES Variable natürlich leer, da das input[1] ja zuletzt durchlaufen wird


Und noch was ist mir aufgefallen, klone ich das Inputfeld und wähle eine Datei aus und ich klone erneut ein Input Feld so ist dieses bereits mit der im ersten geklonnten Feld gefüllt...

Und sowas mitten in der Nacht ;)

Also die ganze Sache ist noch nicht ausgereift, falls jemand einen funktionierenden Code zum dynamischen Hinzufügen von Input Feldern hat bin ich sehr interessiert!
 
So gehts:

Zu beachten ist aber auch hier das beim Verarbeiten der Dateien die Schleife einmal weniger durchlaufen werden muss, da auch hier das hidden-Input Feld mitgezählt wird, nur jetzt ist es immer das letzte und kann somit ausgeschlossen werden!


PHP:
<!--  Javascript zum erzeugen neuer Inputfelder  -->
<!--------------------------------------------------------------------------------------->

<script language="JavaScript" type="text/javascript">
  function clone_this(button, objid){
    // Tabelle innerhalb des DIVs mit ID "new_passage" clonen
    // Achtung: Es dürfen keine Zeichen zwischen dem DIV- und dem TABLE-Tag stehen!
    var clone_me = document.getElementById(objid).firstChild.cloneNode(true);

    // Im Parent-DIV vor dem Kindknoten "button" einhängen
    button.parentNode.insertBefore(clone_me, button);
}
</script>

<!--------------------------------------------------------------------------------------->


<?php
  
include "db_config.php";


$ordner= $_POST['kategorie']."_".$_POST['jahr']; // Ordner ermitteln





echo "<form name='form1' method='post' action=".$_SERVER['PHP_SELF']." >";
	
echo "Anzahl: <input name='anzahlderbilder' type='text' size='4' maxlength='2' value='".$_POST['anzahlderbilder']."'></input>"; 
echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>";
echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='seite' value='" . $_POST['seite'] . "'>";
echo "<input type='submit' name='Weiter' value='Weiter'><br><br>";
	
echo "</form>";





// Button "weiter" gewählt
###################################################################################################################################################
If (isset($_POST['Weiter']))

{ 

	echo "<form name='form2' method='post' action='upload.php' enctype='multipart/form-data'>";
    
	// Benötigte Input-felder erzeugen
	for ($i=0; $i < $_POST['anzahlderbilder']; $i++)
    	echo "<table>
    <tr><td><input type='file' name='imagefile[]'></td></tr></table>"; 
    	
    
	
?>

<!--geklontes Element-->
<!--------------------------------------------------------------------------------------->

<div>
<input value="mehr" onclick="javascript:clone_this(this, 'new_passage');" type="button"></input>
</div>
<div style="visibility:hidden; display:none">
<div id="new_passage"><table name="cloneTable">
    <tr>
  
      <td><input type="file" name="imagefile[]"></input></td>
    </tr>
      
  </table>
</div>
</div>


<!--------------------------------------------------------------------------------------->

<?	
	

echo "<input type='hidden' name='kategorie' value='" . $_POST['kategorie'] . "'>";
echo "<input type='hidden' name='jahr' value='" . $_POST['jahr'] . "'>";
echo "<input type='hidden' name='seite' value='" . $_POST['seite'] . "'>";
echo "<input type='submit' name='Upload' value='Bilder uploaden'>";
echo "</form>";

}
?>

Der passenende Thread dazu: Klick

Noch Frohe Ostern...
 
Zurück