【问题标题】:PHP: Keep submited data in form even if there are multiple checkboxes with the same NAMEPHP:即使有多个具有相同名称的复选框,也将提交的数据保留在表单中
【发布时间】:2017-01-25 12:00:52
【问题描述】:

我有以下情况:

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

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

    <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>
    

你能帮帮我吗?

提前谢谢你!

【问题讨论】:

    标签: php mysql submit refresh


    【解决方案1】:

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

    <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">
    

    【讨论】:

    • 谢谢。这非常有用。我唯一需要弄清楚的是,在提交数据之前,在检查电话 1 时如何检查电话 2
    • 当你检查电话1时,电话2会自动检查。
    • 实际上它不起作用。我应该在 php 文件中添加任何其他内容吗?而且数据也没有以正确的方式保存。例如,如果我只检查电子邮件(关键字 3),提交后它会让我检查关键字 0。如果我在提交后选中任何两个复选框(例如关键字 2 和 3),我将选中两个复选框,但第一个复选框 (0&1)
    • 您的电话 2 复选框为什么被隐藏了?
    • 因为我不希望用户选中/取消选中它。联系人 tel1、tel2、tel3 等可以有多个电话号码,通过搜索电话,它应该在每个字段中进行搜索。我已将其更改为未隐藏以进行测试,但您的自动检查解决方案仍然无法正常工作。
    【解决方案2】:

    试试这个:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多