【问题标题】:I need some help for checkbox php [closed]我需要一些关于复选框 php 的帮助 [关闭]
【发布时间】:2014-07-18 16:16:31
【问题描述】:

我是新来的,我需要一些帮助,如果你能给我一个解决我的问题的方法,那就太好了。所以我需要一些帮助来解决这个问题,这里是 HTML

<html><body> <form method="post" action="test.php"> Flights on: <br/> <input type="checkbox" name="Days[]" value="Daily">Daily<br> <input type="checkbox" name="Days[]" value="Sunday">Sunday<br> <input type="checkbox" name="Days[]" value="Monday">Monday<br> <input type="checkbox" name="Days[]" value="Tuesday">Tuesday <br> <input type="checkbox" name="Days[]" value="Wednesday">Wednesday<br> <input type="checkbox" name="Days[]" value="Thursday">Thursday <br> <input type="checkbox" name="Days[]" value="Friday">Friday<br> <input type="checkbox" name="Days[]" value="Saturday">Saturday <br> <input type="submit" name="submit" value="submit"> </form> </body> </html>

和 PHP 之一:

`

 // Make a MySQL Connection
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());

$checkBox = implode(',', $_POST['Days']);

if(isset($_POST['submit']))
{       
$query="INSERT INTO test (c1,c2,c3,c4,c5,c6,c7) VALUES (" . $_POST['Days'][0] . ",
"  .   $_POST['Days'][1] . ",
" . $_POST['Days'][2] . ",
" . $_POST['Days'][3] . ",
" . $_POST['Days'][4] . ",
" . $_POST['Days'][5] . ",
" . $_POST['Days'][6] . ",
"  .$_POST['Days'][7] . ")";     

mysql_query($query) or die (mysql_error() );

echo "Complete";

}

?>` 

它告诉我未定义的偏移量和:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ',,,,)' 附近使用正确的语法 plzzzzz 帮助!!!! 我需要将选中的复选框的值插入到我的 sql 数据库中。

【问题讨论】:

  • 您在查询中定义了 7 列但 8 个值。
  • 您是否尝试阅读有关复选框和数据库交互的 Stack Overflow 问题?他们有很多!另外,不要使用 mysql_*,它已被弃用,多年未维护,与 Mysql 5 并不真正兼容,并且将从未来版本的 PHP 中完全删除

标签: php html mysql checkbox


【解决方案1】:

只需使用implode()

echo "INSERT INTO test (c1,c2,c3,c4,c5,c6,c7) VALUES ('".implode("','", $_POST[Days])."')";

输出:

INSERT INTO test (c1,c2,c3,c4,c5,c6,c7) VALUES ('Daily','Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')

【讨论】:

    【解决方案2】:

    如果未选中复选框,则不会发布。您可以像这样 Days[Daily] 为您的复选框添加自定义键,然后检查该值是否使用 php 设置:

    $daly = empty($_POST['Days']['Daily']) ? 0 : $_POST['Days']['Daily'];
    

    你应该对所有的复选框做同样的事情。

    【讨论】:

    • 或者,您可能希望为未选中的复选框提供“隐藏”值。
    【解决方案3】:

    原因: 未选中的复选框将不会发布。 例如,如果您没有选择 checkbox7,那么 $_POST['Days'][7] 将为空,您的查询将以 ',,)' 结尾。像这样:

    INSERT INTO test (c0,c1,c2,c3,c4,c5,c6,c7) VALUES (0,1,2,3,4,5,6,,)
    

    而且,你的列应该计算你的文件。

    将您的查询逻辑更改为以下内容即可:

    $query="INSERT INTO test (c0,c1,c2,c3,c4,c5,c6,c7) VALUES ('" . $_POST['Days'][0] . "',
    '"  .   $_POST['Days'][1] . "',
    '" . $_POST['Days'][2] . "',
    '" . $_POST['Days'][3] . "',
    '" . $_POST['Days'][4] . "',
    '" . $_POST['Days'][5] . "',
    '" . $_POST['Days'][6] . "',
    '"  .$_POST['Days'][7] . "')";  
    

    它会产生

    INSERT INTO test (c0,c1,c2,c3,c4,c5,c6,c7) VALUES ('0','1','2','3','4','5','6','')
    

    【讨论】:

      【解决方案4】:

      查看此内容以了解如何连接到 mysql。 http://www.w3schools.com/php/func_mysql_connect.asp

      我建议在直接进入 PHP 之前,您应该学习基础知识,然后开始构建您自己的 PHP 项目。

      此外,请始终查看给出的错误,它表示错误在您的 PHP 代码的第一行,因此您应该检查一下以找出问题。

      这里有一些学习代码的最佳场所...

      http://www.codecademy.com/http://www.phptherightway.com/

      第一个是交互式的,可能对您入门最有用。然后以正确的方式检查 PHP,因为这将向您展示如何使 PHP 项目以正确和最新的方式进行。

      祝你未来的 PHP 项目好运。 :)

      【讨论】:

      • 对不起羞愧地低头。 W3schools 虽然并不总是正确的,但始终是第一名,因此链接起来太容易了。 :(我没有以正确的方式获得 Codecadamy 和 PHP 的加分吗?:)
      【解决方案5】:

      错误在这里:$checkBox = implode(',', $_POST['Days']);

      ',' 部分 - 你应该使用 "','" 而不是 ',',因为 sql 需要在单引号内的每个值。

      这里:VALUES (" . $_POST['Days'][0] . ", .... , " .$_POST['Days'][7] . ")";

      您缺少第一个值的开始单引号和最终值的结束单引号。所以在打开括号之后和结束括号之前添加额外的单引号:

      VALUES ('" . $_POST['Days'][0] . ", .... , " .$_POST['Days'][7] . "')";

      *在准备好的语句中使用 mysqli_,在处理数据库时不要使用 mysql_,因为它很快就会被弃用。并获得更好的安全性。

      【讨论】:

        【解决方案6】:

        嘿,我认为您需要更改您的 php.ini 文件。您需要将其存储在变量中。请检查此代码并告诉我它是否有效。您需要再添加一个 - c8

        // Make a MySQL Connection
        mysql_connect("localhost", "root", "") or die(mysql_error());
        mysql_select_db("test") or die(mysql_error());
        
        $checkBox = implode(',', $_POST['Days']);
         $days1=$_POST['Days'][0];
        $days2=$_POST['Days'][1] ;
        $days3=$_POST['Days'][2] ;
        $days4=$_POST['Days'][3] ;
        $days5=$_POST['Days'][4] ;
        $days6=$_POST['Days'][5] ;
        $days7=$_POST['Days'][6] ;
        $days8=$_POST['Days'][7] ;
        if(isset($_POST['submit']))
        {       
        $query="INSERT INTO test (c1,c2,c3,c4,c5,c6,c7,c8) VALUES ('$days1',
        '$days1','$days2','$days3','$days4','$days5','$days6','$days7','$days8');     
        
        mysql_query($query) or die (mysql_error() );
        
        echo "Complete";
        
        }
        
        ?>
        

        【讨论】:

        • " 在查询末尾丢失,并且 ';' 丢失 $days1 rther 插入工作但不像它应该的那样。我想插入就像我选择星期一它将它插入到 c2 中,如果我选择 sunday 它插入到 c8 中,如果我选择 monday,friday 它会在 c2 中插入星期一,在 c6 中插入 friday ...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        相关资源
        最近更新 更多