【问题标题】:Insert Form Checkboxes PHP separated by comma - Retrieve them插入表单复选框 PHP 以逗号分隔 - 检索它们
【发布时间】:2012-03-26 14:26:47
【问题描述】:

我正在查看 stackoverflow,但我没有找到我真正需要的东西。我需要像这样 22111,22332,12123,121132 将用 php 发送的复选框数据插入 mysql。

我有这个代码(在网站上找到)

<?php 
foreach($_POST['idecod'] as $check) {
            $sel = $check.',';}

$contenedor = "UPDATE inmdes SET idecod='$sel'";

$insertdb = mysql_query($contenedor) or die(mysql_error());

?>

当然,我将复选框作为一个数组:

<input name="idecod[]" type="checkbox" value="<?php echo $rs[0]; ?>"  />

如何插入多个复选框,例如 2211223,2211223,1212233,12332122 或如果只是一个 222111222..???

我怎样才能将它们作为数组检索,因为我需要使用这样的东西

<? php if (in_array('2211223', $idecod)) echo "checked"; ?>

自动选中之前的复选框!

提前致谢

罗伯托

更新

我有一个选项列表。这些选项带有复选框。我需要:

1.- 能够注册已检查的选项(感谢@prodigitalso 解决) 2.- 能够自动勾选之前勾选的复选框。

所以,我在表(mysql)中有这样的代码 221122,221133,225566,445522。我需要脚本来检查以前检查过的代码(表中的那些)并检查它们。例如:

我看到了 5 个选项 221122,221133,225566,445522 和 663322。我只检查了 4 个(221122,221133,225566,445522),这是在 mysql 数据库中更新的。

我再次来到选项页面。但之前我检查了 221122,221133,225566,445522。所以脚本检查每个复选框。所以自动检查选项 221122,221133,225566,445522 但它不检查 663322。

RS[0] 是代码,例如 221122。

【问题讨论】:

  • 您对 SQL 注入完全开放。通过使用 PDO 准备好的查询来学习正确执行此操作,否则您将被黑客入侵(如果您还没有被黑客入侵)。
  • 感谢@Brad 的建议。我使用 mysql_real_escape_string 来避免 SQL 注入。我没有在这段代码中,但我使用它。! xD

标签: php arrays forms checkbox csv


【解决方案1】:

您可以使用implodeexplode 函数来执行此操作

$string = implode(",", $array);

$array = explode(",", $string);

【讨论】:

    【解决方案2】:

    您应该使用explodeimplode

    if(isset($_POST['idecod']) && !empty($_POST['idecod'])) {
       $sel = implode(',', $_POST['idecod']);
       $contenedor = sprintf("UPDATE inmdes SET idecod='%s'", mysql_real_escape_string($sel));
       $insertdb = mysql_query($contenedor) or die(mysql_error());
    }
    

    然后,当您将它们拉出时,只需使用:

    $idecodArr = explode(',', $row['idecod']);
    

    【讨论】:

    • 谢谢!效果很好。!!现在是提取数据的部分。我尝试使用此代码$arr = "SELECT idecod FROM inmdes"; $leerdbarr = mysql_query($arr) or die(mysql_error()); $arrdt = array(mysql_fetch_row($leerdbarr)); 这在复选框&lt;input name="idecod[]" type="checkbox" value="&lt;?php echo $rs[0]; ?&gt;" &lt;?php if (in_array($rs[0], $arrdt)) echo "checked"; ?&gt; 中是代码,例如从另一个表中提取的 2211220。所以,我有 4 个复选框,但只有 3 个被选中,而这 3 个在 db 中,如 221122、223322、114455。我怎样才能拉它们并使用 in_array (或另一个)
    • cont... 所以我可以自动检查之前检查过的复选框。??谢谢!
    • 您的代码对我来说没有意义。 $rs[0] 是什么?您能否更新您的原始问题以显示对$rs 的查询。以及拖车桌的结构。
    • 我解决了。!! xD 这是从数据库$arr = mysql_query("SELECT idecod FROM inmdes"); $leerdbarr = mysql_fetch_array($arr) or die(mysql_error()); $idecodArr = explode(',', $leerdbarr[0]); 中提取数组的代码,这是复选框&lt;input name="idecod[]" type="checkbox" value="&lt;?php echo $rs[0]; ?&gt;" &lt;?php if (in_array($rs[0], $idecodArr)) echo "checked"; ?&gt; 中的条件@ RS[0] 是一个变量,在这种情况下,代码(例如:223344)谢谢@prodigitalson
    猜你喜欢
    • 2016-01-02
    • 2014-02-14
    • 2013-07-03
    • 2012-08-02
    • 2022-11-13
    • 1970-01-01
    • 2013-01-14
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多