【问题标题】:Reading checkbox values using implode function使用 implode 函数读取复选框值
【发布时间】:2012-06-20 20:16:27
【问题描述】:

我已经插入了这个带有多个复选框项目的表单,这些复选框项目收集了一些值,我需要做的是将此值作为用逗号分隔的字符串回显,但我在 implode 函数中遇到错误,它说传递的参数无效.

你能看一下代码吗?

if(isset($_POST['Submit'])) {
    echo "<pre>"; print_r($_POST);
    $checked = mysql_real_escape_string(implode(',', $_POST['checkbox'])); 
    echo $checked;
}
?>

HTML 表单

<form action="checkbox.php" method="post">
<input type="checkbox" name="checkbox[]" value="hostess_name">
<input type="checkbox" name="checkbox[]" value="hostess_familyname_en">
<input type="checkbox" name="checkbox[]" value="hostess_id">
<input type="checkbox" name="checkbox[]" value="hostess_firstname_en">
<br>
<br>
<input type="submit" name="Submit" value="Submit">
</form>

【问题讨论】:

  • 我们可以看看 HTML 表单吗?
  • print_r 显示了什么?你能把结果放进去吗?
  • 你能告诉我一个更好的方法来将多个复选框存储在一个数组中然后分解它吗?
  • 您能复制并粘贴该数组的结果吗?如果没有看到您正在使用的实际数据,我很难说出会发生什么。
  • 使用foreach循环执行。例如: $result = $_POST['checkbox']; foreach($result as $i) {

标签: php mysql


【解决方案1】:

试试这个

if(isset($_POST['Submit'])) {
    echo "<pre>"; print_r($_POST);
    $checked = implode(',', $_POST['checkbox']); 
    echo $checked;
}

这是我在test.php 中输入的确切内容

<?php
if(isset($_POST['Submit'])) {
    echo "<pre>";
    $checked = implode(',', $_POST['checkbox']);
    echo $checked;
}

?>
<form action="test.php" method="post">
<input type="checkbox" name="checkbox[]" value="hostess_name">
<input type="checkbox" name="checkbox[]" value="hostess_familyname_en">
<input type="checkbox" name="checkbox[]" value="hostess_id">
<input type="checkbox" name="checkbox[]" value="hostess_firstname_en">
<br>
<br>
<input type="submit" name="Submit" value="Submit">
</form>

【讨论】:

  • 抱歉,array_values() 不是必需的
  • 嗯,它仍然给我这个,它总是给我这个...:@ implode 函数中传递的参数无效
  • @GazetaAlmedicus,好吧,我刚刚在我的本地服务器上尝试过它并且它正在工作。这是输出i47.tinypic.com/ea4ai1.png
  • 您能在此处插入您使用的代码吗?只是看看它..我可能做了一些愚蠢的事情..也许它与我的php版本有关,我不知道
  • 嘿,它就像一个魅力,非常感谢 :) 这正是我所需要的 :) 再次感谢!
【解决方案2】:

Adnan 的代码也适用于我。对于 OP,您能否发布 print_r 语句的结果,以便我们验证是否为复选框发布了某些内容?您的isset 代码检查表单是否已提交,但我想确保复选框也提交了某些内容。

但是,基于我注意到的几件事,我还有一些关于 OP 问题的其他 cmet。 A) 您使用echo "&lt;pre&gt;",但您从不使用带有echo "&lt;/pre&gt;" 的回显结束标签。也许您只是关闭了这段代码,但是如果您关闭结束标签,这可能会导致您的输出出现乱码。

B) 请不要将mysql_* 函数用于新代码。它们不再被维护,社区已经开始deprecation process(见red box)。相反,您应该了解prepared statements 并使用PDOMySQLi。如果你不能决定哪一个,this article 会帮助你。如果你想学习,this is a good PDO tutorial

您会发现使用准备好的语句不仅可以使您的代码更安全,而且在代码中实现起来也更加简单。

【讨论】:

    【解决方案3】:

    使用foreach循环来执行。

    例如:

    $result = $_POST['checkbox'];
    foreach($result as $i)
    {
    //your code goes here
    }
    

    【讨论】:

    • 你好,Bikas,谢谢你的回复,你能告诉我更具体的吗?我觉得很难理解,我是新手,所以我应该记下代码部分。为了检索多个复选框值并将它们存储在一个数组中,以便内爆它们..
    • $result 我自己指定了一个数组。它包含所有检查的值。
    • 是的,但我应该在你说的部分插入什么 // 你的代码放在这里
    • 随你喜欢。如果要插入数据库。或者你可以回应它。你希望你将如何处理结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多