<form method="POST" action="action.php">
<?php
$query = "SELECT * from student ORDER BY student_name,student_surname";
$result=mysqli_query($conn,$query);
if(false===$result)
{
printf("error: %s \n",mysqli_error($conn));
}
$index = 0;
while($row= $result->fetch_assoc())
{
$index++;
$studentmatricule = $row['student_matricule'];
$studentname = $row['student_name'];
$studentsurname = $row['student_surname'];
?>
<div id="studentdiv">
<label>Matricule</label>
<input type="text" name="studenInfo[<?php echo $index; ?>][matriculate]" value="<?php echo $studentmatricule; ?>" readonly>
<label>Name</label>
<input type="text" name="studenInfo[<?php echo $index; ?>][name]" value="<?php echo $studentname." ".$studentsurname; ?>" readonly>
<label > Absent
<input type="checkbox" name="studenInfo[<?php echo $index; ?>][status]" value="absent" />
</label>
</div> <br><br>
<?php
}
?>
<input type="submit" name="submit" value="submit">
Обновите свой почтовый файл следующим образом. Я изменил имена форм в один массив. Причина в том, что значения флажка не будут отправляться на страницу, если значения не отмечены. Таким образом, невозможно отслеживать, какой из них был проверен, а какой нет, если у вас есть одно и то же имя.
И обновите свой action.php, как это,
<?php
$conn = mysqli_connect("localhost","username","password","db_name"); // update this values as per your configuration
$studenInfo = (!empty($_POST['studenInfo'])) ? $_POST['studenInfo'] : [];
foreach($studenInfo as $value ) {
$status = (isset($value['status'])) ? 'absent' : 'present';
$query = "INSERT INTO exam_status (student_name, student_matricule,status) VALUES ('". $value['name'] . "','". $value['matriculate'] . "','". $status . "')";
$result=mysqli_query($conn,$query);
}
?>
Я использовал свой собственную схему таблицы, в которой я добавил имя_экземпляра в таблице exam_status для лучшего отслеживания. Теперь вы можете правильно видеть значения. Кроме того, мы можем использовать объемную вставку, если нам нужно вставить несколько данных (Примечание: я поместил основную вставку в этот ответ, я просто следил за тем, как вы использовали)
Что вы можете сделать, это написать запрос агрегации SPARQL, который даст вам для каждого типа в вашем наборе данных количество людей. Превращение этой таблицы в диаграмму может быть выполнено с использованием ряда вещей, таких как программное обеспечение для работы с электронными таблицами.
SELECT ?type (COUNT(DISTINCT ?individual) AS ?count) WHERE {
?individual rdf:type ?type
}
GROUP BY ?type
ORDER BY DESC(?count)