2016-05-06 8 views
0

3つの入力フィールドを持つ更新フォームがあります。入力タイプはfileで、既存のファイルを新しいファイルにアップロードして更新することができます。なぜ1つの入力フィールドだけがdbのファイル名をアップロードして更新できるのか分かりますか?他の2つの入力フィールドは、db内のファイルの名前を更新できません。参照用のコードは次のとおりです。ファイルは、フォルダではなく、デシベルで正常にアップロードされたPHPとMySQLのファイル名を更新するには

//validation and $_POST code here 
for($i=0; $i<count($_FILES['uploaded']['name']); $i++) { 
    $tmpFilePath = $_FILES['uploaded']['tmp_name'][$i]; 
    if($tmpFilePath != "" || !empty($tmpFilePath)) { 
     $shortname = $_FILES['uploaded']['name'][$i]; 
     $filePath = "uploads/" . date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$i]; 
     if(!$msgError && move_uploaded_file($tmpFilePath, $filePath)) { 
      $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."',quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][2]."' WHERE pr_id='$pr_id'"; 
     } 
    } 
} 
//query and success/fail message 

HTML

<form class="pr_form" name="pr" method="post" action="updated-form.php" enctype="multipart/form-data"> 
<input type="file" name="uploaded[]" class="filestyle" data-buttonText="Update Quotation 1" multiple="multiple"> //only this field can update the file name on db 
<input type="file" name="uploaded[]" class="filestyle" data-buttonText="Update Quotation 1" multiple="multiple"> 
<input type="file" name="uploaded[]" class="filestyle" data-buttonText="Update Quotation 1" multiple="multiple"> 
</form> 

PHP & MySQLは、ファイル名が入力フィールドなし2 &ための空であります例えば、フィールドno2のみをアップロード/更新したい場合、フィールドno1を使用してファイルをアップロードする必要があります。助けを前にありがとう。私は他の人が混同させるための私のミスのためにコードに

編集コード

申し訳ありませんが、エラーがある場合は私にアドバイスください。

if(isset($_FILES['uploaded'])){ 
     //select file name on db to check whether file exist or not 
     $sql="SELECT * FROM purchase WHERE pr_id='$pr_id'"; 
     $result=mysqli_query($conn, $sql); 
     if(mysqli_num_rows($result) > 0){ 
      while($row=mysqli_fetch_assoc($result)){ 
       $quotation_1=$row['quotation_1']; 
       $quotation_2=$row['quotation_2']; 
       $quotation_3=$row['quotation_3']; 
      } 
     } 
     for($i=0; $i<count($_FILES['uploaded']['name']); $i++){ 
      $tmpFilePath = $_FILES['uploaded']['tmp_name'][$i]; 
      if($tmpFilePath != "" || !empty($tmpFilePath)){ 
       $shortname = $_FILES['uploaded']['name'][$i]; 
       $filePath = "uploads/" . date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$i]; 
      //} 
     if(!$msgError){ 
      if($quotation_1!=NULL && $quotation_2!=NULL && $quotation_3==NULL){ 
       $sql = "UPDATE purchase SET quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."' WHERE pr_id='$pr_id'"; 
      } elseif($quotation_1!=NULL && $quotation_2==NULL && $quotation_3!=NULL){ 
       $sql = "UPDATE purchase SET quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."' WHERE pr_id='$pr_id'"; 
      } elseif($quotation_1==NULL && $quotation_2!=NULL && $quotation_3!=NULL){ 
       $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."' WHERE pr_id='$pr_id'"; 
      } elseif($quotation_1!=NULL && $quotation_2==NULL && $quotation_3==NULL){ 
       $sql = "UPDATE purchase SET quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."' WHERE pr_id='$pr_id'"; 
      } elseif($quotation_1==NULL && $quotation_2==NULL && $quotation_3==NULL){ 
       $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."',quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][2]."' WHERE pr_id='$pr_id'"; 
      } elseif($quotation_1==NULL && $quotation_2!=NULL && $quotation_3==NULL){ 
       $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."' WHERE pr_id='$pr_id'"; 
      } elseif($quotation_1==NULL && $quotation_2==NULL && $quotation_3!=NULL){ 
       $sql = "UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."',quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."' WHERE pr_id='$pr_id'"; 
      } 
     } 
     } 
} 
//query and success/fail msg 
+0

のようなあなたのクエリを編集してみてください?本当にやりたいことを再考することをお勧めします。 – daremachine

+0

さまざまなアップロードをループする際に、3つのアップロード名をSQLクエリに含めるのはなぜですか?おそらくあなたの問題に関連している、ここで物事を整理する方法を理解できません。 –

+1

申し訳ありませんが、このアップデートコードは、私が今日見た最も醜いコードです:)あなたはプログラマであり、コピー/ペーストマシンではありません。もっとダイナミックなものを加える。 – daremachine

答えて

1

UPDATEクエリは、ユーザが一つだけのファイルをアップロードした場合でも、すべての3つのquotation_Xの列を更新しているので:この情報がお役に立てば幸いです。したがって、他の列はすべて空白の名前になります。アップロードされたファイルに対応する列を更新するだけです。

$sql = "UPDATE purchase SET quotation_" . ($i+1) . " = '" . date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$i]."' WHERE pr_id='$pr_id'"; 
+0

助けてくれてありがとう。それを試してみます – Amran

+0

それは動作しますが、更新1ファイルのみをアップロードすることができます。 2つ以上のファイルを更新したい場合は、2番目のファイルを再度アップロードする必要があります。ありがとう – Amran

+0

@Amran SQLの更新クエリがopreratesのファイルに変更された場合、どのようにすることができますか? – daremachine

1

各ファイルとループではなく、すべてのファイルを使用して、クエリの仕事で働くこの

for($i=0; $i<count($_FILES['uploaded']['name']); $i++) { 
     $tmpFilePath = $_FILES['uploaded']['tmp_name'][$i]; 
     if($tmpFilePath != "" || !empty($tmpFilePath)) { 
      $shortname = $_FILES['uploaded']['name'][$i]; 
      $filePath = "uploads/" . date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$i]; 
      if(!$msgError && move_uploaded_file($tmpFilePath, $filePath)) { 
       $fileIndex= $i+1; 
       $sql = "UPDATE purchase SET quotation_$fileIndex='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$fileIndex]."' WHERE pr_id='$pr_id'"; 
      } 
     } 
    } 
+0

これは 'quotation_0'カラムへの書き込みを試みます。データベース列の番号を取得するには、 '$ i'に1を加える必要があります。 – Barmar

+0

@Barmar投稿後にそれを見ました。ありがとうございました – daremachine

+0

助けてくれてありがとう。それを試してみます – Amran

関連する問題