2016-05-24 3 views
1

Ich versuche, pro Transaktion mehrere Bilder in die Datenbank einzufügen, aber jedes Bild hat seine eigenen Eingabetypen. Aber wenn ich das Formular abschicke, bekomme ich den Fehler, dass mein $file_upload = $_FILES['file_upload'.$i]; aus meiner post.php ein "undefinierter Index" ist. Sind die file-upload1, file-upload2, file-upload3 aus meinem HTML nicht der richtige Weg, dies zu tun? Bitte helfen Sie. Vielen Dank.Wie man mehrere Bilddateien in einer Transaktion mit php und mysqli hochlädt?

Mein PHP-Code ist:

include 'dbcontroller.php'; 
if(isset($_POST['submit'])) { 
    for ($i = 1; $i <= 3; $i++) { 
     $file_upload = $_FILES['file_upload'.$i]; 

     $file=(rand(1000,100000)."-".$file_upload['name'.$i]); 
     $type=$file_upload['type'.$i]; 
     $size=$file_upload['size'.$i]; 
     $loc=$file_upload['tmp_name'.$i]; 

     $new_size=$size/1024; // file size in KB 

     // make file name in lower case 
     $new_file_name = strtolower($file); 
     // make file name in lower case 

     $final_file=str_replace(' ','-',$new_file_name); 

     if(move_uploaded_file($loc, '..admin/officers-avatars/'.$final_file)) { 
      $result = mysqli_query($conn,"INSERT INTO images VALUES ('$final_file', '$new_size', '$type')") 
      or die(mysqli_error($conn)); 
     } 
    } 
} 

Unten ist mein HTML

<form action="post.php" method="post" enctype="multiple/form-data"> 
 
\t <input type="file" name="file-upload1" /><br><br> 
 
\t <input type="file" name="file-upload2" /><br><br> 
 
\t <input type="file" name="file-upload3" /><br><br> 
 

 
\t <input type="submit" name="submit" value="SAVE"/> 
 
</form>

+0

Hast du 'var_dump()' auf '$ _FILES' gemacht, um zu sehen, was da eigentlich ist? – WillardSolutions

+0

Nein, habe ich nicht. Und habe 'var_dump' noch nicht probiert, aber ich werde es versuchen. @EatPeanutButter – Louie

+0

Habe es getan. Und ich habe einen NULL. Wew @EatPeanutButter – Louie

Antwort

2

Sie haben einen Tippfehler: Ändern enctype="multiple/form-data" für enctype="multipart/form-data".

Wie auch immer, ich würde Ihnen vorschlagen, stattdessen ein Array in name Attribut zu verwenden:

<form action="post.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="fileupload[]" /><br><br> 
    <input type="file" name="fileupload[]" /><br><br> 
    <input type="file" name="fileupload[]" /><br><br> 

    <input type="submit" name="submit" value="SAVE"/> 
</form> 

dann in PHP verwenden Sie diese:

foreach($_FILES['fileupload'] as $file) { 
    .... 
} 

Oder können Sie verwenden, um mehrere:

<input type="file" name="fileupload[]" multiple /><br><br> 
+0

Ich würde vorschlagen, '', aber seien Sie vorsichtig, was Sie Ihren Benutzern erlauben, direkt in Ihre Datenbank hochladen, könnten Sie einige schädliche Viren hochgeladen werden Ihre Website und nicht wissen, wie oder woher sie kamen. –

+0

danke. Ich werde das versuchen. – Louie

+0

Überprüfen Sie auch den enctype Teil .. Sie müssen 'multipart' anstelle von' multiple' verwenden –

Verwandte Themen