Я делаю программу, которая учитывает пособие на питание для каждого сотрудника, исходя из их посещаемости. Вот данные, которые у меня есть сейчас, таблица, называемая посещаемостью. Эта таблица заполняется из импорта csv файла, здесь мой код для импорта csv
function uploadData()
{
$fp = fopen($_FILES['userfile']['tmp_name'],'r') or die("can't open file");
// Ignore header line
$header = fgetcsv($fp);
// Array to store the partial records
$attendance= [];
while($csv_line = fgetcsv($fp))
{
// Key to identify first part of record (Name and date)
$key = $csv_line[1]."/".$csv_line[3];
if ( isset($attendance[$key]) ){
$start = $attendance[$key];
// Extract data from first part of record and add in end date from current row
$data = array(
'id_attend' => $start[0] ,
'emp_code' => $start[1],
'emp_name' => $start[2],
'date' => $start[3],
'time_in' => $start[4],
'time_out' => $csv_line[4],
);
$data['crane_features']=$this->db->insert('attendance', $data);
// Remove partial record
unset($attendance[$key]);
}
else {
// Store partial record
$attendance[$key] = $csv_line;
}
}
fclose($fp) or die("can't close file");
$data['success']="success";
}
и вот мой стол
| id_attend | emp_code | emp_name | date | time_in | time_out |
----------------------------------------------------------------------------------
| 0001 | brw | brown |01.01.2001| 07.00 | 20.00 |
| 0002 | cny | cony |01.01.2001| 07.00 | 20.00 |
----------------------------------------------------------------------------------
Мне нужно подсчитать, сколько дней они посещают и хранят в моей базе данных. У меня уже есть таблица в качестве контейнера с надбавкой
------------------------------------------------------------------------
|id_allowance(auto increment)|emp_code|emp_name|days_attended|allowance|
------------------------------------------------------------------------
| 0001 | brw | brown | 1 | 30.00 |
| 0002 | cny | cony | 1 | 30.00 |
------------------------------------------------------------------------
есть ли способ, который будет автоматически генерироваться и обновляться каждый раз, когда я импортирую новый файл csv? потому что таблица допущений должна быть пуста в первую очередь и действительно зависит от таблицы посещаемости
Для этого вам нужно создать триггер в MySQL, поэтому, когда новые данные будут вставляться в таблицу посещаемости, тот же запрос автоматически генерирует и запускает таблицу разрешений.
DROP TRIGGER IF EXISTS allowance_insert_trigger;
DELIMITER $$
CREATE TRIGGER allowance_insert_trigger
AFTER INSERT ON attendance FOR EACH ROW
begin
DECLARE days_attandence varchar(10);
SELECT count(*) INTO days_attandence FROM attendance WHERE emp_code=NEW.emp_code GROUP BY date;
INSERT INTO 'allowance' ( 'emp_code', 'emp_name', 'days_attended', 'allowance') VALUES ( NEW.emp_code, NEW.emp_name, days_attandence, '30.00');
END;
$$
DELIMITER ;
Вы хотите написать триггер, как это, и здесь я поставил статическое значение для пособия, но вы можете разместить свое собственное расчетное значение.