PHP 更新前检查文件是否存在 SQL table

PHP check if file exists before updating SQL table

我目前正在研究员工工作监控,他们作为编码器的输出将在他们开始和完成所需文档时通过记录进行监控。

编码完成后,他们根据类别将最终数据保存在服务器中。所以数据不是只存放在一个文件夹中,而是有多个文件夹。

示例:数据 1:

server/category1/000000-1/000000-1-final data.pdf
server/category2/000000-2/000000-2-final data.pdf

正如您在此示例图像中看到的,在工作人员完成一次输出之前,他们必须先单击一个按钮。此按钮将检查或搜索服务器中的数据(文件名与工作代码相同)是否存在。这样做的原因是为了确保它们正确编码数据的标准文件名。如果文件名 incorrect/doesn 不存在,他们无法完成一个输出。

如何实现这种逻辑? 它必须在哪里搜索不同的文件夹来检查数据。

如果存在,则按时间戳将 SQL table 更新为已完成列的值。

这是我尝试过的按钮功能:

  var id = $(this).attr('id').split('-')[1] 
  var work_code = document.getElementById('work_code-'+id).value;

  $.ajax({   ///  CHECK PHP SCRIPT IF TRUE
    type:'post',
    url: 'checkData.php',
    data:{
      work_code: work_code
    },
    success: function() {    /// if file found
      $("#CheckButton").css("display","none"); //  hides the button when click
      $('#Finished-'+id).html(CurrentTimestamp)  // make column value to timestamp
      var value = (CurrentTimestamp);
      var column = $("#Finished-"+id).attr('id').split('-')[0]              
      $.ajax({  /// if file found then update value of sql
        type:'post',
        url: 'editable.php',
        data:{
          value: value,
          id: id,
          column: column
        }
      }).done(function(data){
        GrowlNotification.notify({
          title: 'DATA FOUND!',
          description: 'Plan Successfully Finished',
          showProgress: false,
            image: {
              visible: true,
              customImage: 'Images/success.png'
            },
            type: 'success',
            position: 'top-right',
            closeTimeout: 2000
         });  
         setTimeout(function(){
           sessionStorage.reloadAfterPageLoad = true;
           window.location.reload(); // then reload the page.(3)
         }, 2500); 
       })
    }, 

    error: function() {   // if file not found
      swal("DATA NOT FOUND!",  "Please double check data's filename.", {
        icon: 'error',
        button: false,
        timer: 1900,
      });
    }
  }); 
})

这是checkData.php的脚本:(这部分是我不知道要放什么来检查服务器中的数据。)

<?php
$server = 'http://10.000.00.00:0000/';

$cat1 = $server.'/category1'.$_REQUEST["work_code"].'/'.$_REQUEST["work_code"].'-final data.pdf';
$cat2 = $server.'/category2'.$_REQUEST["work_code"].'/'.$_REQUEST["work_code"].'-final data.pdf';
// condition to check if file exist

if (fopen($cat1,"r") || fopen($cat2,"r")) {
    return true;
}else{
    return false;
}

?>

您的 checkData.php 脚本正在 return 一个布尔值(truefalse)但它不是 return 一个完整的 HTTP 响应。您的脚本应该 return 一个完整的 HTTP 响应,并将结果编码为类似 JSON format 的格式,如下所示:

$data = [ 'exists' =>
  (fopen($cat1,"r") || fopen($cat2,"r"))
];
header('Content-Type: application/json');
echo json_encode($data);

然后,您的 JS .done() 函数应该 parse the returned JSON response,检查服务器 return 的值,并做出相应的响应,如下所示:

done(function(data){
  if (data.exists) { // 'exists' is the key returned by PHP
    console.log('The file exists!');
  } else {
    console.log('The file does NOT exist!');
  }
}