Я использую 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