Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 复选框以添加多个值_Php_Mysql_Checkbox - Fatal编程技术网

Php 复选框以添加多个值

Php 复选框以添加多个值,php,mysql,checkbox,Php,Mysql,Checkbox,我有一个html页面,其中有一个表单,并将结果保存到MySQL中。问题是复选框只在MySQL表上保存一个值。为了在db列中保存多个值,我必须做什么 HTML代码: <input type="checkbox" name="rating[]" value="Homepage">Homepage <input type="checkbox" name="rating[]" value="Facilities">Facilities <input type="checkb

我有一个html页面,其中有一个表单,并将结果保存到MySQL中。问题是复选框只在MySQL表上保存一个值。为了在db列中保存多个值,我必须做什么

HTML代码:

<input type="checkbox" name="rating[]" value="Homepage">Homepage
<input type="checkbox" name="rating[]" value="Facilities">Facilities
<input type="checkbox" name="rating[]" value="reservation">Reservation
<input type="checkbox" name="rating[]" value="Contact">Contact

如果
$rating
是数组,请尝试


我想你有三个选择

首先

创建另一个表并用外键连接它们

第二

使复选框具有值并进行位屏蔽

Ex)

废话
废话
废话
如果有人勾选“blah”和“blah3”,则将其设为5。(1和4)

像这样:

for($i=0; $i<count($rating); $i++)
{
    $rating_value &= $rating[$i];
}

对于($i=0;$i我强烈建议您阅读以下内容:

但是您还没有遇到PHP或HTML问题,您正在尝试将信息存储在一个没有位置的数据库中

您至少需要两个额外的表:

  • 评级
    主表,包括:

    • 评级\u id
      (自动递增或任意代码)
    • 评级值
      (例如“差”、“一般”、“好”…)
    …存储可用评级的位置

  • A
    db\u评级
    表,包括:

    • db\u id
      db
      的主键)
    • rating\u id
      rating
      的主键)
    …存储关系的地方


…并删除您当前的
db.rating
列。

您的数据库似乎没有空间容纳此类信息。您缺少一个与“db”链接的“db to rating”表。你能给出你数据库中评级栏的结构吗?谢谢。我能找出以下问题:我如何按评级搜索?我如何按评级排序?我如何删除评级?@lvaroG.Vicario正确。取决于OP希望存储的方式。如果你没有太多“评级”字段(如果你使用inter保存此值,则低于32),您可以使用第二个。但您必须使用另一个常量来区分每个值。因此我几乎使用第一个。我尝试了第二个解决方案,但它仍然保存了一个值!我可以查看您的源代码吗?它只保存一个值,您必须拆分此值。如果您有值5,则表示二进制中的101。这表示第三个复选框,第一个复选框是checked.Use AND operation可拆分此值。for($i=0;$iIt错误。必须保存$rating\u value而不是$rating,并在完全计算$rating\u value后进行sql查询。请尝试以下操作:for($i=0;$iIn事实上,只需要其中一个,因为这是一对多的情况。OP问题中的表格需要添加一个
id
字段,该字段可以链接到所有
rating
行,其中包括所说的
id
rating
@Antti29。他有复选框,而不是单选按钮,而且他明确地询问d保存多个值。是的,它将存储在
评级
表中,并用
id
链接到原始表。
评级
表将有多行用于这些多个值。单选按钮根本不需要任何其他表。@Antti29因为他有复选框(而不是允许自由输入)我还假设评级是标准化的,必须从固定的列表中选择。我添加了一些例子来说明这一点。
$sql="INSERT INTO db (firstname, lastname, password, email, address, postcode,   country, phonenumber, rating, subscribe)
VALUES ('$firstname', '$lastname', '$password', '$email', '$address', '$postcode','$country', '$phonenumber', '".implode(',',$rating)."', '$subscribe')";
<input type="checkbox" name="something[]" value="1">blah
<input type="checkbox" name="something[]" value="2">blah2
<input type="checkbox" name="something[]" value="4">blah3
for($i=0; $i<count($rating); $i++)
{
    $rating_value &= $rating[$i];
}