Можно ли сохранить несколько загруженных файлов и другие данные в одной форме, используя php, jquery, mysql? - PullRequest
0 голосов
/ 06 марта 2020

Вот форма Вид из

  <form class="form-horizontal" role="form" id="frm_bulletin_board" method="post">
  <div class="form-group">
    <label class="col-sm-3 control-label no-padding-right" for="form-field-1"> Title <font style="color:red;">*</font></label>
    <div class="col-sm-9">
      <input type="text"  class="col-xs-12" name="txt_title" id="txt_title" />
    </div>
  </div>
  <div class="form-group">
    <label class="col-sm-3 control-label no-padding-right" for="form-field-1"> Description <font style="color:red;">*</font></label>
    <div class="col-sm-9">
    <textarea  id="txt_description" class="col-xs-12" name="txt_description" ></textarea>

    </div>
  </div>
  <div class="form-group">
    <label class="col-sm-3 control-label no-padding-right" for="form-field-1">Upload Images </label>
    <div class="col-sm-9">
      <input type="file"  class="col-xs-100" name="multiple_files" id="multiple_files" multiple />
      <span id="error_multiple_files"></span>
    </div>
  </div>
</form>


function add_bulletin_board_with_images(){
  var error_images = '';
  var form_data = new FormData();
  var files = $('#multiple_files')[0].files;
  if(files.length > 10)
  {
   error_images += 'You can not select more than 10 files';
  }
  else
  {
   for(var i=0; i<files.length; i++)
   {
    var name = document.getElementById("multiple_files").files[i].name;
    var ext = name.split('.').pop().toLowerCase();
    //if(jQuery.inArray(ext, ['gif','png','jpg','jpeg']) == -1) 
//    {
//     error_images += '<p>Invalid '+i+' File</p>';
//    }
    var oFReader = new FileReader();
    oFReader.readAsDataURL(document.getElementById("multiple_files").files[i]);
    var f = document.getElementById("multiple_files").files[i];
    var fsize = f.size||f.fileSize;
    if(fsize > 2000000)
    {
     error_images += '<p>' + i + ' File Size is very big</p>';
    }
    else
    {
     form_data.append("file[]", document.getElementById('multiple_files').files[i]);
    }
   }
  }
  if(error_images == '')
  {
   $.ajax({
    url:"upload.php",
    method:"POST",
    data: form_data,
    contentType: false,
    cache: false,
    processData: false,
    beforeSend:function(){
     $('#error_multiple_files').html('<br /><img style="width:5%;" src="../assets/images/loader-gif.gif">');
    },   
    success:function(data)
    {
    $('#error_multiple_files').html('');
     $.gritter.add({
                        text: '<i class="fa fa-check"></i> Files uploaded successfully!',
                        class_name: 'gritter-success'
                    });

     //document.getElementById("frm_bulletin_board").reset();
     $('#multiple_files').val('');
    }
   });
  }
  else
  {
   $('#multiple_files').val('');
   $('#error_multiple_files').html("<span class='text-danger'>"+error_images+"</span>");
   return false;
  }
 }



php file upload.php

<?php
//////////db connection
session_start();
    $db_servername = "localhost";
    $db_username = "cwsp_user";
    $db_password = "0cu1Fz3h02yHENYZ";
    $db_name = "cwsp";

$conn = new mysqli($db_servername, $db_username, $db_password, $db_name);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
 ////////////////////////////// 
date_default_timezone_set('America/New_York');
     $date = date('Y-m-d');
     $date_time = date("Y-m-d h:i:s");

if(count($_FILES["file"]["name"]) > 0)
{
 //$output = '';
 sleep(3);
 for($count=0; $count<count($_FILES["file"]["name"]); $count++)
 {
  $file_name = $_FILES["file"]["name"][$count];
  $file_size =$_FILES['file']['size'][$count];
  $tmp_name = $_FILES["file"]['tmp_name'][$count];
  $file_array = explode(".", $file_name);
  $file_extension = end($file_array);
  if(file_already_uploaded($file_name, $conn))
  {
   $file_name = $file_array[0] . '-'. rand() . '.' . $file_extension;
  }
  $location = 'files/' . $file_name;
  if(move_uploaded_file($tmp_name, $location))
  {
    $query = "
   INSERT INTO bulletin_images 
   VALUES ('','1','','".$file_name."','', '".$file_size."','$date_time','Active','$_SESSION[ORGID]')
   ";
   $statement = $conn->prepare($query);
   $statement->execute();
  }
 }
}

function file_already_uploaded($file_name, $conn)
{

   $query = "SELECT * FROM bulletin_images WHERE file_name = '".$file_name."'";
 $result=$conn->query($query);
  $number_of_rows = $result->num_rows;
 if($number_of_rows > 0)
 {
  return true;
 }
 else
 {
  return false;
 }
}

?>

Я хочу сохранить заголовок и описание в MYSQL таблице с именем 'bulletin_board' и хочу заполнить последний вставленный идентификатор бюллетеня. доска в отдельной таблице 'images', я могу это сделать, но я застрял в поиске, как передать заголовок и описание в функцию add_bulletin_board_with_images ()

1 Ответ

0 голосов
/ 06 марта 2020

спасибо за вашу помощь, но я нашел решение, используя form_data.append ("param", "value"), чтобы добавить дополнительные параметры в form_data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...