Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Probleme beim Hochladen mehrerer Bilder

Für den ersten Fehler befindet sich das Fehler-Array außerhalb von foreah, sodass Sie den Fehler nicht für jede Datei löschen, und die einzufügende Abfrage befindet sich außerhalb von if that prüft Fehler und wird daher immer ausgeführt

Beim zweiten Fehler das gleiche, die Abfrage wird immer ausgeführt man muss prüfen ob die Datei hochgeladen ist.

<?php

    include_once('connect.php');

    if(isset($_FILES['files'])){
        $filesErrors = 0;
        foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
            // MOved errors inside the foreach to clear it each loop
            $errors = array();

            // Check file is uploaded
            if ($_FILES['files']['error'][$key] == UPLOAD_ERR_NO_FILE){
                // Continue with the next file
                continue; 
            }

            $file_name = $key.$_FILES['files']['name'][$key];
            $file_size = $_FILES['files']['size'][$key];
            $file_type = $_FILES['files']['type'][$key];

            if($file_type == "image/gif"){
                $sExt = ".gif";
            } elseif($file_type == "image/jpeg" || $file_type == "image/pjpeg"){
                $sExt = ".jpg";
            } elseif($file_type == "image/png" || $file_type == "image/x-png"){
                $sExt = ".png";
            }
            if (!in_array($sExt, array('.gif','.jpg','.png'))) {
                $errors[] = "Image types alowed are (.gif, .jpg, .png) only!";
            }

            $file_tmp = $_FILES['files']['tmp_name'][$key];
            $file_type = $_FILES['files']['type'][$key];
            if($file_size > 2097152){
                $errors[]='File size must be less than 2 MB';
            }    


            if(empty($errors) == true){
                $desired_dir = "user_data";
                // Execute query inside the errors check
                $query = "INSERT into offers_pics (`offer_id`,`pic_name`,`pic_type`) VALUES ('$user_id','$file_name','$file_type'); ";
                $result = mysqli_query($link,$query);

                if(is_dir($desired_dir) == false){
                    mkdir("$desired_dir", 0700);        // Create directory if it does not exist
                }
                if(is_dir("$desired_dir/".$file_name) == false){
                    move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
                }else{                                  // rename the file if another one exist
                    $new_dir = "$desired_dir/".$file_name.time();
                     rename($file_tmp,$new_dir) ;               
                }
            }else{
                $filesErrors++;
                print_r($errors);
            }
        }

        if ($filesErrors == 0){
            echo 'Success';
        }
    }
?>


<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="files[]"> <br/>
    <input type="file" name="files[]"> <br/>
    <input type="file" name="files[]"> <br/>
    <input type="file" name="files[]"> <br/>
    <input type="file" name="files[]" > <br/><br/>
    <input type="submit"/>
</form>