PHP Как обновить загруженные несколько файлов в разных столбцах таблицы БД

#php #html #mysql #forms #upload

#php #HTML #mysql #формы #загрузка

Вопрос:

У меня есть HTML-форма для загрузки двух файлов PDF. Я могу успешно заставить его загружать один файл в столбец, но не уверен, как загружать каждый PDF-файл в другой столбец в таблице базы данных. Ниже приведен мой код:

 
   if(isset($_POST["submit"])){
                 
$errors = array();
$uploadedFiles = array();
$extension = array("pdf");
$bytes = 5024;
$KB = 5024;
$totalBytes = $bytes * $KB;
$UploadFolder = "UploadFolder";
$counter = 0;


foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name){
  $temp = $_FILES["files"]["tmp_name"][$key];
  $vendor_blicense = $_FILES["files"]["name"][$key];
   
  if(empty($temp))
  {
      break;
  }
   
  $counter  ;
  $UploadOk = true;
   
  if($_FILES["files"]["size"][$key] > $totalBytes)
  {
      $UploadOk = false;
      array_push($errors, $vendor_blicense." file size is larger than the 5 MB.");
    echo '<script>alert("File size is larger than the 5 MB...")</script>';
  }
   
  $ext = pathinfo($vendor_blicense, PATHINFO_EXTENSION);
  if(in_array($ext, $extension) == false){
      $UploadOk = false;
      array_push($errors, $vendor_blicense." is invalid file type. Only PDF");
      echo '<script>alert("Invalid file type. Only pdf")</script>';
  }
   
  
   
  if($UploadOk == true){

if(file_exists($UploadFolder."/".$vendor_blicense) == true){
 
$vendor_blicense1 = uniqid().$vendor_blicense;
$success = mysqli_query($kone,$query);


$preparedStatement = $kone->prepare("UPDATE table SET vendor_blicense = :vendor_blicense WHERE vendor_id = '$send_id'");

$preparedStatement->execute([ ':vendor_blicense' => $vendor_blicense1 ]);



        move_uploaded_file($temp,$UploadFolder."/".$vendor_blicense1);
      array_push($uploadedFiles, $vendor_blicense1);

      }


    else{

$preparedStatement = $kone->prepare("UPDATE table SET vendor_blicense = :vendor_blicense WHERE vendor_id = '$send_id'");

$preparedStatement->execute([ ':vendor_blicense' => $vendor_blicense ]);


      move_uploaded_file($temp,$UploadFolder."/".$vendor_blicense);
      array_push($uploadedFiles, $vendor_blicense);

    }
  }
}

     }


?>

  
 <input type="file" id="files" name="files[]" accept=".pdf">
<input type="file" id="files2" name="files[]" accept=".pdf">
<input name="submit" type="submit" value="Submit">
  

«`

Как я могу получить имя и PDF-файлы каждого входного «file» и «files2» и отправить в другой столбец в базе данных и Uploadfolder на сервере? У меня есть запрос, подобный этому: ОБНОВИТЬ hobber_vendor УСТАНОВИТЬ vendor_blicense = :vendor_blicense И vendor_btax = :vendor_btax ГДЕ vendor_id = ‘$send_id’ Я хочу обновить vendor_btax для сохранения имен файлов из «files2″, а также загрузить файл в move_uploaded_file($ temp,$UploadFolder.»/». $vendor_btax); array_push($uploadedFiles, $vendor_tax);

Комментарии:

1. Мне трудно сказать, какой фактический вопрос / проблема должна быть здесь сейчас. Вы уже перебираете свой массив файлов, вы уже выполняете инструкции ОБНОВЛЕНИЯ и перемещаете загруженный файл … так с какой именно частью у вас возникли проблемы сейчас?

2. (Откуда $send_id должно исходить, только вы можете знать, потому что в показанном вами коде я вижу, что вы читаете только из этой переменной, но не там, где она должна получить значение, присвоенное в первую очередь.)

3. Спасибо, у меня возникли проблемы с загрузкой каждого файла из входных данных в другой столбец.

4. Я объявил $send_id как 1 в начале кода. Основная проблема заключается в попытке обновить имя каждого файла в разных столбцах, например file => vendor_blicense и vendor_btax.

5. Я могу загрузить только одно имя файла в столбец, я ищу, как обновить базу данных именем другого файла в другом столбце.

Ответ №1:

Итак, после всех исследований, устранения неполадок и следования каждой строке моего кода. Удалось решить эту проблему, сначала изменив мой HTML-код на приведенный ниже:

 <input type="file" id="files" name="files['license']" accept=".pdf">
<input type="file" id="files2" name="files['tax']" accept=".pdf">
<input name="submit" type="submit" value="Submit">


  

Затем я получил значение для каждого ввода и присвоил его каждому столбцу в базе данных. Кроме того, я объявил uniqid() внешний цикл foreach для повторного использования на случай, если пользователи попытаются загрузить файлы с тем же именем пути, что и на сервере. Ниже приведен мой полный PHP-код:

 if(isset($_POST["submit"])){

$errors = array();
$uploadedFiles = array();
$extension = array("pdf");
$bytes = 5024;
$KB = 5024;
$totalBytes = $bytes * $KB;
$UploadFolder = "UploadFolder";
$random = uniqid();

foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name){
  $temp = $_FILES["files"]["tmp_name"][$key];
  $filer = $_FILES["files"]["name"][$key];

  $vendor_blicense = $_FILES["files"]["name"]["license"];

  $vendor_btax = $_FILES["files"]["name"]["tax"];

if(empty($temp))
  {
      break;
  }
   
  $counter  ;
  $UploadOk = true;
   
  if($_FILES["files"]["size"]["license"] > $totalBytes)
  {
      $UploadOk = false;
      array_push($errors, $vendor_blicense." file size is larger than the 5 MB.");
    echo '<script>alert("File size is larger than the 5 MB...")</script>';
  }
  
  if($_FILES["files"]["size"]["tax"] > $totalBytes)
  {
      $UploadOk = false;
      array_push($errors, $vendor_btax." file size is larger than the 5 MB.");
    echo '<script>alert("File size is larger than the 5 MB...")</script>';
  }
  

  $ext = pathinfo($vendor_blicense, PATHINFO_EXTENSION);
  if(in_array($ext, $extension) == false){
      $UploadOk = false;
      array_push($errors, $vendor_blicense." is invalid file type. Only PDF");
      echo '<script>alert("Invalid file type. Only pdf")</script>';

  }
  
  $ext = pathinfo($vendor_btax, PATHINFO_EXTENSION);
  if(in_array($ext, $extension) == false){
      $UploadOk = false;
      array_push($errors, $vendor_btax." is invalid file type. Only PDF");
      echo '<script>alert("Invalid file type. Only pdf")</script>';

  }
   
  
   
  if($UploadOk == true){

if(file_exists($UploadFolder."/".$filer)){

$filer1 = $random.$filer;
$vendor_blicense1 = $random.$vendor_blicense;
$vendor_btax1 = $random.$vendor_btax;
$success = mysqli_query($kone,$query);


$preparedStatement = $kone->prepare("UPDATE table SET vendor_blicense = :vendor_blicense, vendor_btax = :vendor_btax, vendor_tax_check = :vendor_tax_check,vendor_bstage = :vendor_bstage  WHERE vendor_id = '$send_id'");
$preparedStatement->execute([ ':vendor_blicense' => $vendor_blicense1, ':vendor_btax' => $vendor_btax1, ':vendor_tax_check' => $vendor_tax_check, ':vendor_bstage' => $vendor_bstage]);



        move_uploaded_file($temp,$UploadFolder."/".$filer1);
      array_push($uploadedFiles, $filer1);

      }


    else{

$preparedStatement = $kone->prepare("UPDATE table SET vendor_blicense = :vendor_blicense, vendor_btax = :vendor_btax, vendor_tax_check = :vendor_tax_check, vendor_bstage = :vendor_bstage WHERE vendor_id = '$send_id'");

$preparedStatement->execute([':vendor_blicense' => $vendor_blicense, ':vendor_btax' => $vendor_btax, ':vendor_tax_check' => $vendor_tax_check, ':vendor_bstage' => $vendor_bstage]);


      move_uploaded_file($temp,$UploadFolder."/".$filer);
      array_push($uploadedFiles, $filer);

    }
  }
}
if($counter>0){
  if(count($errors)>0)
  {
      echo "<b>Errors:</b>";
      echo "<br/><ul>";
      foreach($errors as $error)
      {
          echo "<li>".$error."</li>";
      }
      echo "</ul><br/>";
  }
   
  if(count($uploadedFiles)>0){

echo "successfully uploaded";

}

 
$kone->close();

     }                               
}
else{
  
echo '<script>alert("Please, Select file(s) to upload!")</script>';
echo "<center>Please, Select file(s) to upload!</center>";
}




}


}