Обновить поле таблицы только отмеченные checkbox php mysql


@Leo Caracciolo получилось так, что вы сделали в этом посте здесь, однако я с другой проблемой: есть студенты, которые учатся на различных курсах, то есть идентификатор студента, то же самое , но код, конечно, в столбце id_curso, отличается для каждого идентификатора пользователя, поэтому каждый раз, когда использую сценарий и марко студент, который имеет более одного курса скрипт обновляет все строки из других курсах, где идентификатор пользователя равен

Author: Leo Caracciolo, 2017-11-07

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 правильно.

 2
Author: Leo Caracciolo, 2017-11-08 22:05:46