0

这列出了数据库中的所有人员,并为我想要创建的每个人提供了一个下拉列表,因此当我点击一个提交按钮时,它会为每个人输入单独的值。

因此,如果您为 bobby no 为 mark 为 yes 并且为dustin 为 yes,您可以 pres 提交,它会为那里的值输入

$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]')");
4

2 回答 2

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>';
?>
于 2013-10-09T04:38:50.627 回答
0

您的代码所需的更改:-

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

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

创建新表,您可以在其中使用相应的帖子保存多个用户检查数据

for e.g    post_id  user_id   check
            101      111        0
            101      112        1

如何存储来自 html 的数据

在您发布数组中,您将获得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]; 
于 2013-10-09T04:47:13.357 回答