将表单中的所有用户值提交到db

时间:2013-10-09 04:18:44

标签: php mysql sql forms foreach

这会列出数据库中的所有人,并为每一个人提供一个下拉列表,我想这样做,所以当我点击一个提交按钮时,它会为每个人输入单独的值。

所以,如果你对于标记为“bobby no”而言是肯定的,而对于dustin则为“是”,那么你可以提交,并且它将输入那些值

$results = mysql_query("SELECT * FROM `$tabeluser` WHERE buss='$buss' ORDER BY id DESC LIMIT 1");
while($rows = mysql_fetch_array($results) )
{   
        fn = $_POST['firstname'];
        echo $fn;
        ?>
        <form>

        <select name="check">
                <option>no</option>
                <option>yes</option>
        </select>
        <?php
        <input type="submit" name="submit">
        ?>
        <form>
        <?php
}
mysql_query("INSERT INTO `$fn` (buss) VALUES ('$_POST[check]')");

2 个答案:

答案 0 :(得分:0)

首先,您为每个记录创建<form>submit按钮。这是错误的,因为你想一次更新多个值 应该是什么样的:

<form>
<?php
  while($rows = mysql_fetch_array($results)) {
    print '<select name="check[]"> .. </select>';
  }
?>
<input type="submit" name="submit" />
</form>

其次,您的代码格式化,就好像您希望在将代码发送到浏览器后立即获得$ _POST [check]。 这不是PHP的工作原理。在打印实际页面内容之前,您需要分离已发布值的逻辑。 PHP是服务器端,这意味着它不会获取任何数据,除非从头开始调用脚本。所以,这应该看起来像:

 <?php
   if (isset($_POST["check"])) {
     // handle posted data.
   }
   else {
     // show form
   }
   // or show form here, without an else, if you want to always show a form,
   // even when you have posted values.
 ?>

最后但并非最不重要的是,您需要找到一种方法来了解哪个发布值属于您的每条记录。你现在的方式(<select name="check">') it will just return you one single value.
If you write it the way I intentionally did above (
`)你将得到所有的值,但你仍然无法轻易识别每个记录的值。 相反,您可能想要做一些类似的最终结果:

<?php
   // get mysql records into an array (say $my_array)
   if (isset($_POST["submit"])) {
     foreach($my_array as $record) {
       if (isset($_POST["select_of_id_".$record["id"])) {
         // insert additional value into db
       }
     }
   }
   print '<form>';
   foreach($my_array as $record) {
     print '<select name="select_of_id_'.$record["id"].'">';
     print '<option value="0">no</option><option value="1">yes</option>';
     print '</select>';
   }
   print '<input type="submit" name="submit"/>';
   print '</form>';
?>

答案 1 :(得分:0)

代码中所需的更改: -

<select name="check[]">
            <option value="<?php echo $userId;?>_0">no</option>
            <option value="<?php echo $userId;?>_1">yes</option>
</select>

您应该在DB中进行更改它有助于轻松维护您的数据。

创建新表,您可以使用相应的帖子

保存多个用户检查数据
for e.g    post_id  user_id   check
            101      111        0
            101      112        1

如何存储来自您的数据

在发布数组中,您将获得check数组,您将在其中获得多个检查值

101_0如果没有选中,102_1如果选择是。现在你需要爆炸这个值。

    $_POST['check'] = array(0 => `101_0`, 1 => 102_1);

在内部循环中,您可以提取用户ID和相应的选中值。

例如

     $checked = explode('_','101_0');
     $userId  = $checked[0];
     $check   =  $checked[1];