#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>";
}
}
}