флажок не может снять флажок php - PullRequest
0 голосов
/ 30 апреля 2018

Я написал код для сохранения контрольных значений флажков в базе данных.

условие проверки работает нормально, поскольку проверенные значения сохраняются в базе данных при отправке и проверяются при отправке и обновлении.

Но когда снимите флажок и подтвердите, а затем обновите страницу, флажок останется установленным. Не будет сохранен статус непроверенного.

Я включил код чанка, связанный с этой проблемой. Если кто-то может получить проблему, это было бы здорово.

echo "<form action='' class='' method='post'><tr>";
   $sql_stamp = "SELECT check_list FROM time_stamps WHERE nJobNumber=".$nJobNumber;
                $query_stamp = $conn->prepare($sql_stamp);
                $query_stamp->execute();
                $numRows = $query_stamp->rowCount(); 
                if($numRows > 0){
                    $row_stamp = $query_stamp->fetch(PDO::FETCH_ASSOC);
                    $checkboxes = explode(',',$row_stamp['check_list']);
                    echo ' <td><center> <input type="checkbox" name="check_list[]" value="shop_drawing" '.(in_array( "shop_drawing",$checkboxes) ? "checked=checked" : "").'></td>';
                    echo ' <td><center><input type="checkbox" name="check_list[]" value="site_measure" '.(in_array( "site_measure",$checkboxes) ? "checked=checked" : "").'></td>';
                    echo ' <td><center><input type="checkbox" name="check_list[]" value="shop_drawings_approved" '.(in_array( "shop_drawings_approved",$checkboxes) ? "checked =checked" : "").'></td>';
                    echo '<td><center> <input type="checkbox" name="check_list[]" id="check" value="batch" '.(in_array( "batch",$checkboxes) ? "checked=checked" : "").'></td>';
                    echo '<td><center> <input type="text" name="batch_no"><br>  </td>';
                    echo ' <td><center> <input type="submit" name="submit" value="Submit"/> </td>';
                    echo '<td><input type="hidden" name="job_number[result]" value="'."true".'"</td>'; 
                    echo '<td><input type="hidden" name="job_number[number]" value="'.$nJobNumber.'"</td>';
                }else{
                    echo '<td><center><input type="checkbox" name="check_list[]" id="check" value="shop_drawing"></td>';
                    echo '<td><center><input type="checkbox" name="check_list[]" id="check" value="site_measure"></td>';
                    echo '<td><center><input type="checkbox" name="check_list[]" id="check" value="shop_drawings_approved"> </td>';
                    echo '<td><center> <input type="checkbox" name="check_list[]" id="check" value="batch"></td>';
                    echo '<td><center> <input type="text" name="batch_no"><br>  </td>';
                    echo "<td><center> <input type='submit' name='submit' value='submit'></td>";
                    echo '<td><input type="hidden" name="job_number[result]" value="'."false".'"</td>'; 
                    echo '<td><input type="hidden" name="job_number[number]" value="'.$nJobNumber.'"</td>'; 
                }


                echo "</tr> </form>";
            }
        echo "</tbody> </table>";

      ?>

Вставить значения в базу данных:

    if(isset($_POST['submit']))
    {
        $checkbox = $_POST["check_list"];
        $job_number = $_POST["job_number"];
        $batch_no = $_POST["batch_no"];
        date_default_timezone_set('Australia');
        $date_time = date("Y-m-d h:i:sa");
        //$username = "$SESSION[userid]";
        if($job_number["result"] == "true"){



 if(!empty($_POST['check_list'])) 


 {
                       $checkboxes = implode(",",$_POST['check_list']);
                        $stmt = $link->prepare('UPDATE time_stamps SET time_date=?,username=?, batch_no=?,check_list=? WHERE nJobNumber=?');
                        $stmt->bind_param('ssssi',$date_time,$username,$batch_no,$checkboxes,$job_number["number"]);
                        $stmt->execute();
                    }
        }

    else{

        if(!empty($_POST['check_list'])) 

        {
                        $checkboxes = implode(",",$_POST['check_list']);
                        $stmt = $link->prepare('INSERT INTO time_stamps (nJobNumber,time_date,username,batch_no,check_list) VALUES (?,?,?,?,?)');
                        $stmt->bind_param('issss',$job_number["number"],$date_time,$username,$batch_no,$checkboxes);
                        $stmt->execute();
                    }
                }

            }

По сути, мое требование заключается в том, чтобы, когда пользователь снимает флажок «галочка», он должен быть снят при отправке формы (после обновления). Но в моем случае это проверяется.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Ни один из ваших запросов не будет выполнен, если пользователь отправит форму без отмеченных флажков. Хотя это может быть приемлемо для вашего запроса INSERT, это не позволит обновить поле check_list. Таким образом, вам нужно будет изменить код для обновления с этого:

if(!empty($_POST['check_list'])) {
    $checkboxes = implode(",",$_POST['check_list']);
    $stmt = $link->prepare('UPDATE time_stamps SET time_date=?,username=?, batch_no=?,check_list=? WHERE nJobNumber=?');
    $stmt->bind_param('ssssi',$date_time,$username,$batch_no,$checkboxes,$job_number["number"]);
    $stmt->execute();
}

к этому:

$checkboxes = empty($_POST['check_list']) ? '' : implode(",",$_POST['check_list']);
$stmt = $link->prepare('UPDATE time_stamps SET time_date=?,username=?, batch_no=?,check_list=? WHERE nJobNumber=?');
$stmt->bind_param('ssssi',$date_time,$username,$batch_no,$checkboxes,$job_number["number"]);
$stmt->execute();

Вы также можете изменить код вставки таким же образом, если хотите вставить запись, даже если пользователь не ставит флажки.

Спасибо @Phil за его вклад.

0 голосов
/ 30 апреля 2018

Мне кажется, я вижу пару проблем. Я вижу эту строку:

$job_number = $_POST["job_number"];

Но тогда я вижу, что вы используете это:

if($job_number["result"] == "true"){

Итак, я спрашиваю, является ли $ job_number массивом или просто строкой / значением?

Кроме того, непроверенные флажки не отправляют значение. И поскольку вы проверяете непустое значение $ _POST ['check_list'], ваш UPDATE никогда не запустится. Удалить ! характер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...