如何在提交后检查的表格单元格中获取数据

时间:2009-11-30 10:43:30

标签: php sql mysql

请有人帮我。

这是我的基本html

<form action="addSomething.php" method="POST">
<table>
 <tr>
   <th>Add Data</th>
   <th>Description</th>
   <th>Quantity</th>  
</tr>

 <tr>
  <td><input type="checkbox" name="data[]" value="sample1" /> </td>
  <td class="desc">Newbie</td>
  <td>2</td>
 </tr>

<tr>
<td><input type="checkbox" name="data[]" value="sample1" /> </td>
<td class="desc">Pro</td>
<td>1</td>
</tr>

<tr>
<td><input type="checkbox" name="data[]" value="sample1"/> </td>
<td class="desc" > Master </td>
<td>1</td>
</tr>

<br/>
     <input type="submit" name="add" value="SUBMIT"/>
..... 

如何获得“desc”类和提交表格后检查的数量列

因为我在mysql中查询时唯一可以添加的是复选框的值,但我还想要“描述”列和“数量”列中的数据值

在我的 addSomething.php 中,我的代码是

 if(isset($_POST['add']))
      {

           foreach($_POST['data'] as $value)
           {

           $sql = "INSERT INTO tablename (column1) VALUES('$value');"

                //query stuff
            }

      } 

我会做什么,有什么暗示吗?

7 个答案:

答案 0 :(得分:1)

您可以为复选框添加不同的值

<input type="checkbox" name="data[]" value="newbie" />
<input type="checkbox" name="data[]" value="pro" />
<input type="checkbox" name="data[]" value="master" />

然后在addSomething.php中定义一个数组

$names = array('newbie'=>'Newbie', 'pro'=>'Pro', 'master'=>'Master');

并在你的sql中使用它

if(isset($_POST['add']))
  {
       foreach($_POST['data'] as $value)
       {
           $sql = "INSERT INTO tablename (column1) VALUES ('".$names[$value]."');";
        }
  }

这仅适用于您不希望用户编辑前端的描述和数量的情况。如果你这样做,你需要在那里输入输入并给它们唯一的名字。

答案 1 :(得分:1)

我会建议:

<form action="addSomething.php" method="POST">
<table>
 <tr>
   <th>Add Data</th>
   <th>Description</th>
   <th>Quantity</th>  
</tr>

 <tr>
  <td><input type="checkbox" name="data[0]" value="sample1" /> </td>
  <td class="desc">Newbie<input type="checkbox" name="desc[0]" value="Newbie" /></td>
  <td>2<input type="checkbox" name="quan[0]" value="2" /></td>
 </tr>

<tr>
<td><input type="checkbox" name="data[1]" value="sample1" /> </td>
<td class="desc">Pro<input type="checkbox" name="desc[1]" value="Pro" /></td>
<td>1<input type="checkbox" name="quan[1]" value="1" /></td>
</tr>

<tr>
<td><input type="checkbox" name="data[2]" value="sample1"/> </td>
<td class="desc" > Master <input type="checkbox" name="desc[2]" value="Master" /></td>
<td>1<input type="checkbox" name="quan[2]" value="1" /></td>
</tr>

<br/>
     <input type="submit" name="add" value="SUBMIT"/>
...

用php

 if(isset($_POST['add']))
      {

           foreach($_POST['data'] as $i => $value) {
              $desc = mysql_real_escape_string($_POST['desc'][$i]);
              $quan = mysql_real_escape_string($_POST['quan'][$i]);
              $sql = "INSERT INTO tablename (desc,quan) VALUES('$desc','$quan');"

                //query stuff
            }

      }

您必须在html中明确编号您的字段,以保留数据与复选框的关联。

答案 2 :(得分:0)

您可以做的是编写触发AJAX请求的Javascript到您的服务器。

否则,您将无法在之前的提交中获得值。

答案 3 :(得分:0)

到目前为止,这是非常低效的。对表中的每个字段执行查询。

答案 4 :(得分:0)

您必须将描述放在隐藏字段中或从数据库中读取描述。 我建议后一个选项。

答案 5 :(得分:0)

您需要将这些值包含在隐藏的输入

<input type="hidden" name=" {任何{1}}任何&GT; " value="

作为例子

答案 6 :(得分:0)

我认为代码的最佳方式是创建一个javascript函数并在提交表单时调用它:

<form action="addSomething.php" method="POST" onsubmit="return postVars()">

当您提交表单时,将调用此函数。创建一个2个隐藏的表单,如下所示:

<input type="hidden" name="description" id="description">
<input type="hidden" name="quantity" id="quantity">

为你的td提供一个唯一的id并将id传递给你的js函数。在js函数中填写这些输入:

document.getElementById('description').value = document.getElementById('td_' + id + '_description').innerHTML;
document.getElementById('quantity').value = document.getElementById('td_' + id + '_quantity').innerHTML;

并且在您的服务器端只需从$ _POST获取描述和数量。 希望它有所帮助;)