需要帮助php html表单

时间:2011-09-20 15:21:24

标签: php html forms

目前我正在编写一本教科书,用PHP订购html表格

用户显示了教科书列表,每个教科书都有一个数量下拉菜单(他们可以选择订购1个数量或2,3或4个)

每本教科书都有一个unqiue textbookId编号。

如何创建一个html表单,可以确定他们订购哪本教科书以及他们订购的数量?

我通常通过创建多个html表单来解决这类问题(每个表单都包含textbookId的隐藏字段),但问题是会有多个提交按钮。

但我只有一个提交整个教科书清单的按钮。

有人可以帮助我:)非常感谢提前

如果可能的话,你能告诉我如何处理php中的数据。

干杯

这是我目前的html表单代码:

<div class="tables">
    <form action="process-order" id="login-form" method="get" name="login-form"></form>
    <table class="orders">
      <tr>
        <th>textbookId</th>
        <th>Subject</th>
        <th>Title</th>
        <th>Price</th>
        <th>Quantity</th>
      </tr>
      <tr>
        <td>1</td>
        <td>English</td>
        <td>English ABC</td>
        <td>33.00</td>
        <td>
          <div align="center">
            <select name="mydropdown">
              <option value="0">0</option>
              <option value="1">1</option>
              <option value="2">2</option>
              <option value="3">3</option>
              <option value="4">4</option>
            </select>
          </div>
        </td>
      </tr>
      <tr>
        <td>2</td>
        <td>Math</td>
        <td>Math SignPost</td>
        <td>122.00</td>
        <td>
          <div align="center">
            <select name="mydropdown">
              <option value="0">0</option>
              <option value="1">1</option>
              <option value="2">2</option>
              <option value="3">3</option>
              <option value="4">4</option>
            </select>
          </div>
        </td>
      </tr>
    </table>
    <input type="submit" name="submit" id="submit" value="Next">
    </form>
</div>

3 个答案:

答案 0 :(得分:1)

我认为你已经在数据库中有一个表来存储表单中的数据,对吗?

然后我会在这里仅输出php端,好吗?

<强> action.php的

<?php
if ($_POST) {

$mydropdown = $_POST['mydropdown'];
$mydropdown2 = $_POST['mydropdown2'];

$response = mysql_query("INSERT INTO your_table ('id','mydropdown','mydropdown2') values (NULL,'$mydropdown','$mydropdown2') ");

if (empty($response)) { die("Error in your query"); }
}


?>

观察:您拥有图书的名称,价格等,如果您想存储创建输入字段所需的信息,否则此信息将不会存储在您的数据库中。

你的HTML方面有类似的东西。 <td>English ABC</td> - &gt; <input type="text" value="" name="name_book" /> 与前面提到的输入字段一样。

答案 1 :(得分:1)

一种可能性是将书籍ID编码到提交的表格元素中,例如<select name="book_1"> 对于这本书1.

<tr>
    <td>1</td>
    <td>English</td>
    <td>
    <div align="center">
    <select name="book_1">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    </select>
    </div>
    </td>
</tr>
<tr>
    <td>2</td>
    <td>Math</td>
    <td>
    <div align="center">
    <select name="book_2">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    </select>
    </div>
    </td>
</tr>

PHP处理书籍如下:

<?php
$books = array();
if ($_GET) {
    foreach ($_GET as $key => $value) {
        $keys = split("_", $key);
        if (count($keys) == 2 && $keys[0] == "book") {
            $id = $keys[1];
            $books[$id] = $value;
        }
    }
}
// echo "Ordered: <br />";
// foreach ($books as $id => $value) {
//    echo "$id : $value <br />";
// }
?> 

答案 2 :(得分:0)

您是否考虑过使用javascript来解决这个问题?特别是jQuery?您可以调用函数来迭代,例如:

<script>
  function submitChanges() {
    $('.mydropdown').each(function(){
      ddlId = $(this).attr('id');
      id = ddlId.split('_');
      ddlVal = $(this).val();

      $.ajax({
        type:'POST',
        url: <post_url>,
        data: 'id='+id[1]+'val='+ddlVal,
        success: function (){}
      });

    });
  }
</script>

因此,上面的函数会将选择的POST发布到给定页面,这样可以获得所需数量的书籍。

生成HTML时,请确保每个select都定义了“class”和“id”:

<select class="mydropdown" id="mydropdown_{textbookid}" name="mydropdown">
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select>

textbookid将通过PHP添加

在帖子中PHP将包含

if ($_POST) {

  $id= $_POST['id'];
  $val= $_POST['val'];

  $query = "INSERT INTO purchase (textbookid, quantity) VALUES ({$id},{$val})";
}