2017-08-01 7 views
0

ファイル選択のあるフォームがあります。選択したファイルのパスを小数点の後にデータベースの単一のフィールドに保存したい。私が持っている問題は、最初に選択したファイルだけが保存され、1フィールドにすべての小数点以下の桁を保存したいということです。例:uploads/1.png、uploads/2.png、uploads/3.pngなど。(PHPで)PHP - データベース内の複数のファイルから1つのフィールドへのパス

どうすればいいですか?

コード: ":post_images"

if(!empty($_FILES['files']['name'][0])) { 
    //Zmienne formularza 
    $files = $_FILES['files']; 
    $thumb = $_FILES['thumbnail']; 
    $text = $_POST['add-project_text']; 
    $h2text = $_POST['add-project_name']; 

    //Dozwolone pliki 
    $allowed = array('txt', 'jpg', 'jpeg', 'png', 'gif', 'svg', 'psd'); 

    foreach ($files['name'] as $position => $file_name) { 
     //Wyciągnięcie parametrów z plików 
     $file_tmp = $files['tmp_name'][$position]; 
     $file_size = $files['size'][$position]; 
     $file_error = $files['error'][$position]; 

     //Dla zdjęć (wyciągniecie rozszerzenia pliku) 
     $file_ext = explode('.', $file_name); 
     $file_ext = strtolower(end($file_ext)); 
     $datenow = date('Y-m-d H:i:s'); 

     //Dla miniaturki 
     $file_extThumb = explode('.', $thumb['name']); 
     $file_extThumb = strtolower(end($file_extThumb)); 

     //Jeżeli rozszerzenie jest prawidłowe 
     if (in_array($file_ext, $allowed)) { 

     //Jeżeli plik nie ma żadnych błędów 
     if($file_error === 0) { 
      //Jeżeli plik nie jest większy niż 15MB 
      if($file_size <= 15728640) { 
       //Jeżeli folder uzytkownika istnieje 
       if(file_exists('uploads/' . $_SESSION['login'])) { 

       } else { 
        //Jeżeli nie, stwórz go. 
        mkdir('uploads/' . $_SESSION['login']); 
       } 

       //Dla zdjęć 
       $file_new_name = uniqid('', true) . '.' . $file_ext; 
       //Dla miniaturki 
       $file_new_nameThumb = 'Thumbnail.' . uniqid('', true) . '.' . $file_extThumb; 

       //Dla zdjęć 
       $file_destination = 'uploads/' . $_SESSION['login'] . '/' . $file_new_name; 
       //Dla miniaturki 
       $file_destinationThumb = 'uploads/' . $_SESSION['login'] . '/' . $file_new_nameThumb; 
       //Jeżeli wszystko jest ok, przenieś go do odpowiedniego folderu 
       if(move_uploaded_file($file_tmp, $file_destination)) { 

        //Jeżeli wszystko jest ok, przenieś go do odpowiedniego folderu 
        if(move_uploaded_file($thumb['tmp_name'], $file_destinationThumb)) { 
         $sqlSTM = $dbh->prepare(" INSERT INTO projects (post_content, post_images, post_image, post_date) VALUES (:post_content, :post_images, :post_image, :post_date) "); 
         $sqlSTM->bindParam(":post_content", $text, PDO::PARAM_STR); 
         $sqlSTM->bindParam(":post_images", $file_destination, PDO::PARAM_STR); 
         $sqlSTM->bindParam(":post_image", $file_destinationThumb, PDO::PARAM_STR); 
         $sqlSTM->bindParam(":post_date", $datenow, PDO::PARAM_STR); 

         $_SESSION['UploadedSuc'] = 'Udało się! Dodano nowy projekt!'; 
        } 
       } 
      } else { 
       $file_size_r = $file_size/1000000; 

       echo 'Wystąpił błąd przy dodawaniu pliku, prawdopodobnie plik jest za duży. Maksymalna wielkość pliku to 15MB. Twój plik: ' . number_format($file_size_r, 0) . 'MB'; 
      } 
     } else { 
      echo 'Wystąpił błąd przy dodawaniu pliku: ' . $file_error; 
     } 
    } else { 
     echo 'To rozszerzenie: <b>' . $file_ext . '</b> jest niedozwolone.'; 
    } 
} 

私はこれらのファイルのパスを変数で保存することにしたいです。

答えて

0

あなたが何か行うことができます:変数では...

// Saving the urls 
$post_images = json_encode([$url1, $url2, $url3]); 

// And for getting the urls 
$post_images = json_decode($data['urls']); 
+0

申し訳ありませんが、私は理解していない** $のfile_destination **私は、私が選択したファイルのパス、すなわち文字列を持っています。この変数はbindParam ** $ sqlSTM-> bindParam( ":post_images"、$ file_destination、PDO :: PARAM_STR); **この文字列をデータベースに完全に書き込むようにします。最初のファイルのみ書き込みます。例えば、 – nielot

+0

。 ** $ file_destination **には、 "uploads/1.png"、 "uploads/2.png"、 "uploads/3.png"という文字列があります。そして、最初の要素、すなわち "uploads/1png"データベースに保存します。 – nielot

+0

@nielot $ file_destination変数を配列ex:[path/img1.jpg、path/img2.jpg]に変換し、json_encode配列に変換できます。次に、エンコードされたデータをデータベースに保存します。 (今はあなたのデータベースにjson文字列としてきれいに保存されているすべてのURLを持っています)、あなたのURLを取得すると、単純にそれらをデコードします(json_decode)。これを行うことで、あなたは "、"上で爆発的な手間を省き、URLの配列を取得できます。 – tbrennan

関連する問題