2016-05-02 16 views
0

Hiii全員、複数の画像をアップロードし、各画像パスをmysqlの別の列に保存します。データベース

ここは私のHTMLフォームです。

<form action="" id="uploadForm" class="col-md-8 col-md-offset-2" > 
    <h2 class="bold text-uppercase"></h2> 
    <br> 
    <div> 
           <div class="input-group form-group"> 
            <label for=""> Upload Your Photo </label> 
            <br>        
            <input name="userImage[]" type="file" class="inputFile"> 
           </div> 
          </div> 
          <div class="input-group form-group"> 
           <label for=""> Upload Your Resume</label> 
           <br> 
           <input name="userImage[]" type="file" class="inputFile"> 
          </div> 
          <div class="input-group form-group"> 
           <label for=""> SSLC Mark Sheet</label> 
           <br> 
           <input name="userImage[]" type="file" class="inputFile"> 
          </div> 

そして私のAjaxのコードは、私は3枚の画像をアップロードした場合、それが保存されている正確にどのような今の私のコードでhapening

$("#uploadForm").on('submit',(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
      url: "upload.php", 
     type: "POST", 
     data: new FormData(this), 
     contentType: false, 
      cache: false, 
     processData:false, 
     success: function(data){ 
     alert(data); 
     }, 
     error: function(){}   
    }); 
    })); 

そして、私のPHPコード

<?php 
$link = mysqli_connect("localhost","root","","spark") or die("Error ".mysqli_error($link)); 

if(is_array($_FILES)) { 
foreach ($_FILES['userImage']['name'] as $name => $value){ 
if(is_uploaded_file($_FILES['userImage']['tmp_name'][$name])) { 
$sourcePath = $_FILES['userImage']['tmp_name'][$name]; 
$targetPath = "uploads/".$_FILES['userImage']['name'][$name]; 
if(move_uploaded_file($sourcePath,$targetPath)) { 
     $query = "INSERT INTO filedetails(filepath) VALUES ('$fileTarget')"; 
      $link->query($query) or die("Error : ".mysqli_error($link));    

?> 
<img src="<?php echo $targetPath; ?>" width="150px" height="180px" /> 
<?php 
}}}} 

?> 

ですimagesフォルダに挿入し、ファイルパスの詳細を表の単一の列名に挿入します。filepath.whatは、それぞれのイメージを分割したいと思っています。fr私がこの配列$ _FILES ['userImage']から各値を得る方法を簡単に説明するために、配列userImageをomに設定します。誰かが解決策を伝えることができれば、それは私を助けるでしょう。事前に感謝します。

+1

を参照してくださいには、最適なデータベース設計よりも少ないような音。列にイメージを格納する必要はありません。彼らは理想的には列に並ぶべきです。 – e4c5

+0

私は1人の学生id.likeのために6枚の画像を保存したいと思います。もし10枚目のマークシートを12枚目にアップロードすると、これらはすべて同じ行の別の列になければなりません。 –

+0

それはさらに悪いことです。 – e4c5

答えて

0

は、ここに私の提案です:

  • 保存する写真の数は、テーブル内の写真のために(3)の列を提供し、のは(3)写真一人あたり を言わせように固定されている場合。それは簡単だろう。
  • 保存する写真の数が固定されていない場合は、 を単一の列に置き、セミコロン(;)などで区切ります。列は、柔軟で

例(THIS ONEがが良くない)VARCHAR(100)を好きにそれを設定する必要があります。image_file_path1; image_file_path2; image_file_path3

  • あなたは次のように(データを取得する場合セミコロンで各イメージファイルパス をスライスして表示するか、<input>フィールド (あなたのやりたいことを問わない)を入れなければなりません。

-OR-

  • あなたは、あなたのテーブルを正規化することができます。たとえば、アップロードする人物と写真のテーブルが(1)以上ある場合は、 写真の別のテーブルを作成します。 photo_tblは、例えば、 は、id,person_id、およびimg_fileの列を持ちます。 MySQLでは

、あなたは文字列を分割するSUBSTRING_INDEX('try;try', ';')を使用することができます。

は、文字列を分割し、配列変数に格納するexplode(";", $string)を使用することができ、PHP 4+で

String Functionsを参照してください。

はJQueryでEXPLODE

を参照してください、あなたは文字列を分割するstring.split(';');を使用することができます。

Split

+1

これを単一の列に入れるのは恐ろしいことです。それらを新しいテーブルに分けてください。 – PeeHaa

+0

ええ、私は1列に入れたくありません。誰も私は配列からそれをspllitする必要があります教えてください –

+0

申し訳ありません私は理解できない@rhavendc –

関連する問題