Php 在表单错误后保持复选框被选中

Php keep checkboxes checked after form error

在表单提交出错后,我如何才能让选中的复选框保持选中状态?现在,我收到此错误消息: Warning: in_array() expects parameter 2 to be array, string given in

谢谢!

    function runsql_array($sql)
{
    global $kapcs;
    $res = mysqli_query($kapcs , $sql) or die(mysqli_error( $kapcs));
    if (mysqli_num_rows($res) == 0)
    {
        return array();
    }
    else
    {
        $out = array();
        while ($a = mysqli_fetch_assoc($res))
        {
            $out[] = $a;
        }
        return $out;
    }
}

    <td>
                    <?php
                    $ertek = isset($_POST["termek_tul_tipusok"]) ? $_POST["termek_tul_tipusok"] : '' ;
                    $values = runsql_array("SELECT termek_tipus_id, termek_tipus_nev FROM termek_tipusok WHERE termek_tipus_status = 1 
                    ORDER BY termek_tipus_nev ASC");

                    foreach($values as $val=>$szoveg)
                    {

                        $checked = in_array($val, $ertek) ? ' checked ' : '' ;

                        echo '<div style="margin:4px 0;"><label style="cursor:pointer;" for="tulajdonsag-'.$val.'">';
                            echo '<input id="tulajdonsag-'.$val.'" type="checkbox" name="termek_tul_tipusok[]" '.$checked.' value="'.$val.'" />';
                            echo $szoveg['termek_tipus_nev'];
                        echo '</label></div>';
                    }

                    ?>
                  </td>

$ertek = isset($_POST["termek_tul_tipusok"]) ? $_POST["termek_tul_tipusok"] : '' ;

定义 $ertek。在 post 不存在的情况下,它被定义为空字符串。您应该使用空数组。

$ertek = isset($_POST["termek_tul_tipusok"]) ? $_POST["termek_tul_tipusok"] : array() ;