在数据库中正确输入复选框值

时间:2014-06-18 09:18:01

标签: php mysql arrays checkbox

我简化了以下示例来说明我的问题。

我想使用复选框向登录用户发表意见。 例如,将显示一个动态列表,列出各种水果,每种水果旁边有两个复选框,意思是“是的,我喜欢这个”和“不,我不喜欢这个”。用户可以选中任一复选框,或者根本不选中其中一个复选框。 看起来有点像这样:

  

[] [] Apple

     

[] []梨

     

[] []橙色

     

[提交]

然后需要将其提交到MySQL数据库,具有以下结构。 它可能不是最简单的设置,但不幸的是,这是我现在可以使用的全部内容。 (意见是数字值,代表“是”或“否”)

  

ID |用户ID |水果|看来

我将如何制作此产品?

2 个答案:

答案 0 :(得分:1)

根据评论。

假设字段Opinion是一个tinyint,其中0 = NO,1 = YES。

你说你动态加载你的'水果',我不知道它是一个数组还是数据来自数据库。您可能需要将代码更改为,我只是假设它是一个数组。我们将创建一个包含所有结果的表单以及选项yes和no

<?php
$fruits = array( 'apple', 'pear', 'orange' );

echo '<form ...>';
foreach( $fruits as $fruit ) {
   echo '<p>Do you like ' . $fruit . '</p>';
   echo '<input type="radio" name="fruits[' . $fruit . ']" value="0" /> No ';
   echo '<input type="radio" name="fruits[' . $fruit . ']" value="1" /> Yes ';
}
echo '</form>';
?>

您需要添加更多代码才能使其正常运行。

接下来,我们需要处理表单。

<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

if($_SERVER['REQUEST_METHOD'] == 'POST' ) {
   foreach( $_POST['fruits'] as $fruit => $opinion) {
      $stmt = $mysqli->prepare("INSERT INTO tableName (UserID, Fruit, Opinion) VALUES (?, ?, ?)");
      $stmt->bind_param('isi', $userID, $fruit, $opinion);
      $stmt->execute();
      $stmt->close();
   }
}
?>

我认为你知道如何从数据库中调用数据来显示它。根据意见,您可以使用以下内容:

<?php
$opinion = ( $row['opinion'] == 1 ) 'yes' : 'no';
echo 'User: ' . $row['UserID'] . '<br />';
echo 'Fruit: ' . $row['fruit'] . '<br />';
echo 'Opinion: ' . $opinion . '<br />';
?>

上面的代码块并不完整,但它会帮助您。祝你好运!

答案 1 :(得分:0)

您可以在mysql中使用TINYINT数据类型来存储布尔值,例如是或否。使用值0表示“否”,值1表示“是”。