【问题标题】:submit all users values from form into db将所有用户值从表单提交到数据库
【发布时间】:2013-10-09 04:18:43
【问题描述】:

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

因此,如果您为 bobby 选择 no 为 mark,为

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

【问题讨论】:

  • this gives lists all people 但是怎么做?有很多语法错误。如果您有工作副本,为什么不发送?
  • 据我了解,您需要在数据库中保存check 下拉数据和相应的用户选择索引。
  • 我只是写了一个例子,我不知道我把它显示为工作副本,但我只是想弄清楚我是否有一个表格可以显示数据库中的多个人我该怎么做使用一个按钮为每个人插入不同的值
  • 是的......................

标签: php mysql sql forms foreach


【解决方案1】:

首先,为您拥有的每条记录创建一个&lt;form&gt; 和一个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>';
?>

【讨论】:

    【解决方案2】:

    您的代码需要更改:-

    <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]; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多