Как вставить несколько данных в БД, которые добавляются с помощью вызова ajax в php и jquery? - PullRequest
0 голосов
/ 16 февраля 2019

Я использую ajax для вызова сотрудников для конкретной компании с company_dropdown.Я добавляю эти данные в табличном формате в вызов ajax.

ниже мой вызов ajax показывает правильные данные:

   $.each(data, function( index, value ) 
            {
                $(".bodytable").append( <tr>
                     <td style="width:250px;"><input type="text" name="emp_type" class="" value="'+value.typeOfEmployee+'">
                     </td>
                    <td style="width:250px;"><input type="text" name="emp_name" class="" value="'+value.comemp+'"><input type="hidden" name="emp_id" class="" value="'+value.empid+'">
                     </td>
                    <td><div><input type="file" name="payeslip[]" multiple><input type="hidden" name="emp_id" class="" value="'+value.empid+'">
                    </td>\
                   </tr>');
            });

Как вы видите мой код, я получаю emp_type, emp_name, emp_id с помощью вызова ajax.

Предположим, пользователь выберет одну компанию xyz из раскрывающегося списка и получит всех сотрудников конкретной компании.

  id          employee_name        unique_id   emp_type
   1           Noah                    ABCD     internal
   2           Liam                    ABCD     internal
   3           William                 ABCD     internal
   4           Benjamin                ABCD     external

Теперь пользователь может просматривать вышеуказанные данные с именем сотрудника и типом сотрудника в формате таблицы с одним файлом типа ввода для загрузки расчетного листа конкретного сотрудника.

Теперь, если пользователь будет загружать платежные ведомости только для первых 2 сотрудников, он долженвставьте в таблицу с двумя различными строками.У меня есть одна функция, чтобы получить несколько платежных ведомостей, с помощью которых я могу вставить несколько платежных ведомостей в разных строках.

$com_name = $_POST['com_name'];
$payslips=$obj->payslips($_FILES['payeslip'],$com_name);
$form_data = array(
        'emp_id' => $_POST['emp_id'],
        'emp_type' => $_POST['emp_type']
    ); 
    $payslips= array($payslips);  
    $query1  = $obj->insert_payslip_data($form_data,$payslips,$com_name);



        function payslips($files,$com_name)
            {
                   $payslips="";
                    for($i=0; $i<count($_FILES['payeslip']['name']); $i++) 
                    {
                       $tmpFilePath = $_FILES['payeslip']['tmp_name'][$i];    
                       if ($tmpFilePath != "")
                        {    
                            if (!file_exists('../pay_slips/'.$com_name)) 
                                {
                                    mkdir('../pay_slips/'.$com_name, 0777, true);
                                }
                            $location = '../pay_slips/'.$com_name.'/';
                           $name = $_FILES['payeslip']['name'][$i];
                           $size = $_FILES['payeslip']['size'][$i];

                           list($txt, $ext) = explode(".", $name);

                           //$file= rand().time().substr(str_replace(" ", "_", $txt), 0);
                           $file = substr(str_replace(" ", "_", $txt), 0);
                           $info = pathinfo($file);
                           $filename = $file.".".$ext;
                           if(move_uploaded_file($_FILES['payeslip']['tmp_name'][$i], $location.$filename)) 
                           { 
                              $payslips.=$filename.",";
                           }
                        }
                    }


                $payslip = rtrim($payslips, ',');
                return $payslip;
            }

А затем у меня есть функция вставки:

 public function insert_payslip_data($form_data,$payslips,$com_name)
    {

        $con = $this->__construct();
        $data = explode(',', $payslips[0]);
        $items = array();
        foreach ($data as $value) 
            {

                $sql = "INSERT INTO `pay_slips`(`com_id`, `payslip`, `created_date`, 
                `created_by`,`emp_id`,`emp_type`) VALUES ('".$id."', '".$com_name."','".$value."',NOW(),'".$_SESSION['email']."','".$form_data['emp_id']."','".$form_data['emp_type']."')";
                $execute = mysqli_query($con, $sql);
            }
        return $execute;
    }

Byпрежде всего код я могу загружать файлы в базу данных с разными строками.Но проблема заключается в том, что каждый раз, когда в столбцах emp_id и emp_type идет последняя строка из моих данных.

Если я загружаю первые 2 платежных ведомости сотрудников в базу данных, то в базе данных они хранятся как:

   id             pay_slip            emp_id   emp_type
   1           Noah_payslip.pdf        4       external
   2           Liam_payslip.pdf        4       external

Ожидаемый результат:

  id             pay_slip            emp_id    emp_type
   1           Noah_payslip.pdf        1       internal
   2           Liam_payslip.pdf        2       internal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...