2016-11-22 7 views
0

こんにちは私は、複数のファイルをアップロードして編集する際に問題があります。私は3つの画像アップロードファイルを持っています。 2番目または3番目のアップロードファイルに挿入すると、常に最初に表示されます。 (ただし、3枚の画像をすべてアップロードしても正常に動作します)データベースの設計 - 私はアップロードされたイメージの列について多くの列を持つべきですか、それとも、私はそれを新しい表にたくさんの行を入れておくべきですか?

私のデータベーステーブルは、写真家のイベントに関するものです。このような列は event_id、model_name、max_photographer_qty、reserve_photographer_qty、....... のようになり、この表には「location_img1」「location_img2」「location_img3」という列名があります。

質問は私は新しいテーブルに移動する必要がありますし、新しいテーブルでは、IDと1つの画像の列だけがありますか? 3つの画像をアップロードすると、新しいテーブルに3つの行が挿入されます。ここ

は私のコードです(私の古いテーブルには3列で1行を挿入である)

$count=count($_FILES["images"]["name"]); 

       $arr_newname = array(); 

      for($i=1; $i <= $count; $i++) 
      { 
       if ((($_FILES["images"]["type"][$i-1] == "image/gif") 
      || ($_FILES["images"]["type"][$i-1] == "image/jpeg") 
      || ($_FILES["images"]["type"][$i-1] == "image/png")) 
      && ($_FILES["images"]["size"][$i-1] < 9000000)) //9 MB 
      { 

      if ($_FILES["images"]["error"][$i-1] > 0) 
      { 
      echo "File Error : " . $_FILES["images"]["error"][$i] . "<br />"; 
       } 
       else 
      { 
      // echo "Upload File Name: " . $_FILES["images"]["name"][$i] . "<br />"; 
      // echo "File Type: " . $_FILES["images"]["type"][$i] . "<br />"; 
       //echo "File Size: " . ($_FILES["images"]["size"][$i]/1024) . " Kb<br />"; 

       if (file_exists("images/location/".$_FILES["images"]["name"][$i-1])) 
       { 
       echo "<b>".$_FILES["images"]["name"][$i-1] . " already exists. </b>"; 
       } 
       else 
       { 
       $newname = "id".$id."_".date('Y-m-d')."_".$i.".jpg"; //ใช้$id จากparameter methodเลย 
       array_push($arr_newname, $newname); 
       move_uploaded_file($_FILES["images"]["tmp_name"][$i-1] , "images/location/".$newname); 
       // echo "Stored in: " . "images/location/" . $_FILES["images"]["name"][$i] ."<br />"; 
       ?> 

       <?php 
       } 
      } 
       }else 
      { 
       //echo "Invalid file detail ::<br> file type ::".$_FILES["images"]["type"][$i-1] ." , file size::: ".$_FILES["images"]["size"][$i-1] ; 
       } 
      } 




$data = array(
      'location_pic' => $arr_newname['0'], 
      'location_pic2' => $arr_newname['1'], 
      'location_pic3' => $arr_newname['2'] 
     ); 
     $this->db->where('event_id', $id); 
     $this->db->update('oav_event', $data); 

DGD

 <tr> 
    <td><label style="color:#3a87ad; font-size:18px;">Location pic1</label></td> 
    <td width="30"></td> 
    <td><input type="file" name="images[]" size="20" /></td> 
    </tr> 
    <tr> 
    <td><label style="color:#3a87ad; font-size:18px;">Location pic2</label></td> 
    <td width="30"></td> 
     <td><input type="file" name="images[]" size="20" /></td> 
    </tr> 
    <tr> 
     <td><label style="color:#3a87ad; font-size:18px;">Location pic3</label></td> 
     <td width="30"></td> 
     <td><input type="file" name="images[]" size="20" /></td> 
</tr> 
+0

1枚の画像を、行ごとに、新しいテーブルに。 – jarlh

+2

PHPとHTMLコードの代わりにデータベーステーブルとサンプルデータを表示する – rbr94

+4

イメージを追加する必要がある場合はどうなりますか?データベースの列数を変更する必要があります。プログラムは「私はそれを変える必要はない」という心で作られなければならない。新しい表を作成し、行ごとに1つのイメージを追加します。カラムに番号をつけて番号を付けることができます。それらを 'oav_event'テーブルにリンクする必要があります。 – Phiter

答えて

1

私たちは、すべての強力なスケーラビリティのための新しいテーブルに動画をお勧めだと思いますしかし、私はあなたのコードに何が間違っているかを教えてくれます。

あなたは$arr_newnameで名前を格納している、そしてそのために、あなたが唯一、第三の画像をアップロードあなたは$arr_newnameに名前を押すと、それはの最初の要素になるだろう場合を意味し、自動的に数値インデックスを追加しますarray_push($arr_newname, $newname);array_pushを使用しています0 =キー

とその配列は、あなたは$_FILES["images"]["name"]$arr_newnameの指標との関係を維持する必要がありますので、あなたは、このことにより、交換する必要がありますarray_push:

$arr_newname[$i-1] = $newname; 
+0

ありがとう – tuchawat

関連する問題

 関連する問題