PHP: 即使有多个具有相同名称的复选框,也将提交的数据保留在表单中

PHP: Keep submited data in form even if there are multiple checkboxes with the same NAME

我有以下情况:

我已经为 mysqli 连接制作了一个搜索框表单。它允许用户选择要搜索的字段(姓名、电子邮件、电话...)。代码有效,但我想做更多。

  1. 在单击提交按钮后将提交的数据保留在字段中(我提到表单的目标是同一页面)。我不知道该怎么做,因为大多数字段的名称都是相同的 - 'keyword[]'.
  2. 当用户选中电话 1 复选框时自动选中电话 2。

    <form action="<?PHP echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="get">
    
        <input type="checkbox" name="keyword[]" value="last name" checked> Last Name
        <input type="checkbox" name="keyword[]" value="first name" checked> First Name
        <input type="checkbox" name="keyword[]" value="email" checked> Email
        <input type="checkbox" name="keyword[]" value="telephone1"> Tel1
        <input type="checkbox" name="keyword[]" hidden value="telephone2"> Tel2
        <input type="text" name="searched_text">
        <input type="submit" name="submit" value="SEARCH">
    </form>
    

你能帮帮我吗?

提前致谢!

试试这个:

$checkbox=$_POST['keyword'];
foreach($checkbox as $checkbox1)
{
if(isset($checkbox2))
{
$checkbox2.=','.$checkbox1;
}
else
{
$checkbox2=$checkbox1;
}
}

现在您的所有复选框数据都在一个带逗号的字符串中

用这个替换你的代码然后测试。

<form action="<?PHP echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="get">

<input type="checkbox" name="keyword[]" value="last name" <?php if(isset($_GET['keyword']) && in_array("last name", $_GET['keyword'])) echo "checked"; ?>> Last Name
<input type="checkbox" name="keyword[]" value="first name" <?php if(isset($_GET['keyword']) && in_array("first name", $_GET['keyword'])) echo "checked"; ?> > First Name
<input type="checkbox" name="keyword[]" value="email" <?php if(isset($_GET['keyword']) && in_array("email", $_GET['keyword'])) echo "checked"; ?>> Email
<input type="checkbox" name="keyword[]" value="telephone1" onclick="document.getElementById('telephone2').checked = true" <?php if(isset($_GET['keyword']) && in_array("telephone1", $_GET['keyword'])) echo "checked"; ?>> Tel1
<input type="checkbox" name="keyword[]" id="telephone2"  value="telephone2" <?php if(isset($_GET['keyword']) && in_array("telephone2", $_GET['keyword'])) echo "checked"; ?>> Tel2
<input type="text" name="searched_text">
<input type="submit" name="submit" value="SEARCH">