mehrere Dateien uploaden

yuro

Erfahrenes Mitglied
servus,

hab da mal eine frage und zwar wollt ich mal wissen wie ich ein dateiupload programmieren kann das ich mehrere dateien hochladen kann und das erstmal bestätigt wird das die hochgeladen sind und das man dann auf abschicken drücken kann und er das abschickt. Weil momentan kann mein programm nur eine datei hochladen und wenn ich auf hinzufügen klicke schickt er das formular direkt ab.. und das soll ja erst funktionieren wenn man auf abschicken drückt.

also hier mein gesamter code:

HTML:
<div id="top_popup_adv">
	<?php 
		  	echo anchor('', '<img src="' . IMG_DIR . 'logo.gif" border="0" align="top" alt="test logo"/>', 'title="test"');	  
		  	?>	  
		  </div>
		  
		  
		  	
<br />			
</div>
<?php echo form_open_multipart("/advertising/fast_apply/".$stelle[0]->id); 


?>

<div style="margin-left:60px;">
	
<div style="font:bold 14pt Arial;color: #7b8398;width:200px;">Stellenanzeige</div>
<br />


<div style="font:bold 8pt Arial;color: #306699;float:left;"> Titel &nbsp;&nbsp;&nbsp;</div> <div style="font:bold 8pt Arial;color: #666666;float:left;"><?php echo $stelle[0]->job_title;?></div><br />
<div style="font:bold 8pt Arial;color: #306699;float:left;"> Firma &nbsp;</div> <div style="font:bold 8pt Arial;color: #666666;float:left;"><?php echo $company[0]->company_name; ?></div>

<br /><br />
<div style="font:bold 14pt Arial;color: #7b8398;">
Absender
</div>
<br />

<div style="font:bold 8pt Arial;color: #306699;float:left;">Vorname*&nbsp;&nbsp;&nbsp;<input type="text" name="Vorname" style="width:220px" value="<?php if(isset($user[0])){echo $user[0]->vorname;}?>" required /></div><br />
<div style="font:bold 8pt Arial;color: #306699;clear:left;float:left;">Nachname*&nbsp;<input type="text" name="Nachname" style="width:220px" value="<?php if(isset($user[0])){echo $user[0]->name;}?>" required /></div><br />
<div style="font:bold 8pt Arial;color: #306699;clear:left;float:left;padding-right:1px;border:1px none;">e-Mail*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="email" style="width:220px" value="<?php if(isset($user[0])){echo $user[0]->email;}?>" required /></div><br />
<br />
<br />
<div style="clear:left;font:bold 9pt Arial;color: #306699;clear:left;float:left;">Anschreiben<p></div>

<div style="clear:left;">
<textarea style="margin-top:5px;" name="user_eingabe" cols="50" rows="10" maxlength="4096" lengthcut="true"><?php if(isset($user[0])){echo $user[0]->anschreiben;}?></textarea>
</div>

<div style="clear:left;font:bold 9pt Arial;color: #306699;clear:left;float:left;">Dateiupload:</div>

<div style="clear:left;width:500px;">
<?php if(count($this->mError) > 0) echo GenerateErrorMessages($this->mError); ?>
</div>

<div style="clear:left;font:bold 8pt Arial;color: #666666;line-height: 1.5;padding-top:10px;">Die maximale Dateigr&ouml;&szlig;e betr&auml;gt 2 MB. <br />
Max. eine Datei hochladen <br />
   			Bitte vermeiden Sie Umlaute und Sonderzeichen im Titel Ihrer Zeugnisse.<br />
   			Folgende Dateiformate werden unterst&uuml;tzt:<br /> pdf,txt,doc,rtf,jpg,png,gif.</div>

<form action="/advertising/fast_apply/<?php echo $stelle[0]->id?>" method="POST" name="entf">

<div style="clear:left;margin-top:10px;">
<?php 
				$data = array(
						  'name'        => 'my_certificate',
						  'id'          => 'my_certificate',						  
						  'size'		=> '40',
						  'class'		=> 'form_input'
						);
				echo form_upload($data) 
			?>	
</div>



<div style="clear:left;margin-left:80px;padding-top:10px;">
<?php echo form_submit('submit', 'Hinzuf&uuml;gen', 'class="form_button"'); ?>
<?php echo form_button('cancel', 'Abbrechen', 'class="form_button" onClick="javascript:window.close()"'); ?>
</div>

// das hier wird garnicht angezeigt, also hochgeladene Daten!
<?php if (isset($documents)&&$documents[0]!=""){?>
<div style="clear:left;font:bold 9pt Arial;color: #306699;clear:left;float:left;margin-left:80px;margin-top:30px;">Hochgeladene Daten:</div>
<?php
}
?>
<div style="clear:left;font:bold 8pt Arial;color: #666666;line-height: 1.5;margin-left:80px;padding-top:10px;">
	<?php 
	if (isset($documents)){
	foreach($documents as $d){
		if ($d!=""){
		?>
	<input type="checkbox" name="certs[]" value="<?php echo $d;?>" > <?php echo $d;?> <br />
	<?php 
		
		
		}
	}
	}
	
	?>
</div>

<div style="clear:left;margin-left:80px;padding-top:10px;">
<?php if (isset($documents)&&$documents[0]!=""){echo form_submit('submit', 'Entfernen', 'class="form_button"');} ?>
</div>


</div>
<div style="clear:left;margin-left:445px;">
<?php echo form_submit('submit', 'Absenden', 'class="form_button" '); ?>
</div>

<?php echo form_close(); ?>
<script type="text/javascript" language="javascript" src="/Scripts/charcount.js"></script>
<br />
<br />
</div>
 
Relevant für die Antwort auf deine Frage wäre zudem der HTML-Code, nicht der PHP-Code. Mit den von dir dort verwendeten Funktionen kann sicherlich kaum jemand etwas anfangen.

Dein Problem ist imho, dass Du beim Verarbeiten des Formulars unterscheiden muss, welcher Button gedrückt wurde. Das kannst Du indem Du prüfst, welcher Variablenname gesetzt ist.

PHP:
<?php
if( isset($_POST["add"]) ) { /* hinzufügen wurde geklickt */ }
if( isset($_POST["send"]) ) { /* Hochladen wurde geklickt */ }

Bedenke: wenn Du das so über PHP löst, musst Du auch beim "Hinzufügen" sicherstellen, dass die bereits zum Hochladen eingetragenen Dateien auch tatsächlich hochgeladen und gespeichert werden. Man kann input-file nicht nach dem Absenden nachträglich nochmal mit der eingefügten Datei füllen.

Alternativ kann man für deinen Wunsch auch JavaScript verwenden. Statt das Formular abzuschicken, könntest Du dynamisch die benötigten zusätzlichen Felder hinzufügen. Damit entfällt auch das Problem, dass Du alle Dateien beim Hochladen speichern musst, selbst wenn nur ein Feld hinzugefügt werden soll.
 
also diesen Teil hier möchte ich umformen:

Code:
<form action="/advertising/fast_apply/<?php echo $stelle[0]->id?>" method="POST" name="entf">

<div style="clear:left;margin-top:15px;margin-bottom:10px">
<?php 
				$data = array(
						  'name'        => 'my_certificate',
						  'id'          => 'my_certificate',						  
						  'size'		=> '40',
						  'class'		=> 'form_input'
						);
				echo form_upload($data) 
			?>	
</div>

Das ist praktisch die einzige mit dem Datei auswählen Button und daneber der name des files.

ich möchte jetzt eine bestätigung schreiben das wenn die datei hochgeladen wurde das dann auf der selben seite steht "Datei wurde erfolgreich hochgeladen" oder dementsprechend fehlgeschlagen.

Hab mal was im Inet gefunden:
PHP:
if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name']))
        {
        echo "Datei erfolgreich hochgeladen.\n";
        }
    else
        {
        echo "Fehler beim Hochladen der Datei. Fehlermeldung:\n<br />";
        print_r($_FILES);
        }

wie könnt ich das integrieren?
 
Du hast wieder von deinem Code nicht den erzeugten HTML-Code sondern einen für uns undurchschaubaren PHP-Code gezeigt. Damit kann man dir nur erschwert weiterhelfen.

Den Code den Du "gefunden" hast ist dafür verantwortlich eine einzelne hochgeladene Datei aus einem input-file-Feld mit dem Namen "userfile" zu speichern. Das kannst Du für dich natürlich verwenden, musst nur eben die Feldnamen entsprechend anpassen (entweder bei dir die Felder "userfile" nennen oder im PHP-Code "userfile" durch den von dir verwendeten Feldnamen ersetzen).
Das $uploaddir musst Du natürlich vor dem Ausführen des PHP-Codes auch setzen. Es muss ein Pfad innerhalb deines Webspaces sein in dem Du die hochgeladenen Dateien speichern willst.
 
das mit dem uploaddir ist mir klar nur find ich das verzeichnis nicht wo die dokumente gespeichert werden.. ich kann lediglich mich in den adminbereich einloggen und da ist ein bereich wo eine auflistung von dem formular ist vorname,nachname, dokument.. aber ich find nürgends auf dem ftp server das verzeichnis wo die sachen gespeichert sind. ist nicht meine page deswegen etwas schwieriger für mich da durchzublicken.. hab auch echt alles durchforstet.. die page wurde mit dem Framework CodeIgniter gestaltet.. gibts da vll irgendwelche einstellungen über php das man so ein image ordner ned einfach so im verzeichnis anzeigt oder so? müsst halt so ne abfrage irgendwie machen das man sieht ok die datei wurde erfolgreich hochgeladen..wenn ich auf den button hinzufügen drücke dann schickt er das formular direkt ab.. das will ich eigtl nicht denn dafür hab ich ja den button Absenden! und keiner weiss dann ob das formular erfolgreich mit der hochgeladenen datei abgeschickt wurde.. :(
 
Zurück