Обновить поле таблицы только отмеченные checkbox php mysql
@Leo Caracciolo получилось так, что вы сделали в этом посте здесь, однако я с другой проблемой: есть студенты, которые учатся на различных курсах, то есть идентификатор студента, то же самое , но код, конечно, в столбце id_curso, отличается для каждого идентификатора пользователя, поэтому каждый раз, когда использую сценарий и марко студент, который имеет более одного курса скрипт обновляет все строки из других курсах, где идентификатор пользователя равен
1 answers
Form.php
<?php
$conn = new mysqli("localhost", "USUARIO", "SENHA", "NOME_DB");
$query = "SELECT * FROM sch_aluno_acont";
$data = mysqli_query($conn, $query);
echo "<form method='post' action = 'update2.php' >
<h1> Alterar presença do aluno</h1>
<table align='' border='0' bordercolor='#BCBCBC' cellspacing='0'>
<tr align ='left' bordercolor='#000000'>
<td colspan='2' valign='middle'><font color=''>Marque o(s) curso(s) para <b>presença</b> </font><br></td>
</tr>";
$id_al_Old="zzz";
while ($rows = mysqli_fetch_assoc($data)) {
if ($rows['id_al']!=$id_al_Old) {
if ($id_al_Old!="zzz") {
echo "</td>";
echo "</tr>";
}
echo "<tr align ='left' bordercolor='#000000'>
<td valign='middle' bgcolor='#E9E9E9'><p><font color=''>Nome:</font>".$rows['nome']." </p></td>
<td align='left' valign='middle' bgcolor='#E9E9E9'>".$rows['titulo']."</td>
</tr>
<tr align ='left'>
<td colspan='2' align='left'>";
}
echo "curso ".$rows['id_acon']."
<input type='checkbox' name='presente[]' value='".$rows['id_al']."*".$rows['id_acon']."'>";
$id_al_Old=$rows['id_al'];
}
echo "</td></tr></table><input type='submit' value='alterar'></form>";
?>
Update.php
<?php
$presente = $_POST['presente'];
$conn = new mysqli("localhost", "USUARIO", "SENHA", "NOME_DB");
foreach ($presente as $value) {
$parte=explode("*",$value);
$sql = "UPDATE sch_aluno_acont SET presente = 1 WHERE id_al='$parte[0]' and id_acon='$parte[1]'";
$data = mysqli_query($conn, $sql);
}
?>
, Объясняя логику
На странице form.php
вставляем в value медицинского input type='checkbox'
значения, возвращаемые из запроса id_al
и id_acon
, разделенных asteristico (*).
<input type='checkbox' name='presente[]' value='".$rows['id_al']."*".$rows['id_acon']."'>";
Обратите внимание, что в name input добавил две скобки [ ]
name='presente[]'
, Когда вы размещаете "name" скобки он отправляется в виде массива для приемника.
На странице Update.php
Получившаяся данные пожаловать формы (array) $presente = $_POST['presente'];
foreach ($presente as $value) {
, получаем, что на каждой итерации значение текущего элемента присваивается $value, например 100244*171007074752
, владение такой суммы делаем explode
и положим все необходимые части в состояние where
, update WHERE id_al='$parte[0]' and id_acon='$parte[1]'"
Было внесено исправление в файл
form.php
выходhtml
правильно.