简体   繁体   English

需要帮助php html表单

[英]Need help with php html form

Currently I'm working on a textbook ordering html form with PHP 目前我正在编写一本用PHP订购html表单的教科书

User shown a list of textbook and theres a Quantity dropdown menu for each textbook (they can select to order 1 quantity or 2,3 or 4) 用户显示了教科书列表,每个教科书都有一个数量下拉菜单(他们可以选择订购1个数量或2,3或4个)

Each textbook have a unqiue textbookId number. 每本教科书都有一个unqiue textbookId编号。

How can I create a html form which can determine which textbook they order and the quantity they order? 如何创建一个html表单,可以确定他们订购哪本教科书以及他们订购的数量?

I usually solve this kind of problem by creating multiple html form (each form contain hidden field of textbookId) but the problem is that's there will be multiple submit button. 我通常通过创建多个html表单来解决这类问题(每个表单都包含textbookId的隐藏字段),但问题是会有多个提交按钮。

But I only one submit button for the whole textbook list. 但我只有一个提交按钮用于整个教科书列表。

Can someone please help me :) thanks so much in advance 有人可以帮助我:)非常感谢提前

If possible can you show me how to process the data in php as well. 如果可能的话,你能告诉我如何处理php中的数据。

Cheers 干杯

Here is my current html form code: 这是我目前的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>

I suposse you already have a table in your data base to store the data from the form, right? 我建议您在数据库中已经有一个表来存储表单中的数据,对吧?

Then I will output here only the php side, all right? 然后我会在这里仅输出php端,好吗?

action.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"); }
}


?>

Observation: Your have the name, prices, etc of your books, if you want to store this information you need to create input fields, otherwise this information will not be stored in your data base. 观察:您有书籍的名称,价格等,如果您想存储创建输入字段所需的信息,否则这些信息将不会存储在您的数据库中。

Something like this in your HTML side. 你的HTML方面有类似的东西。 <td>English ABC</td> -> <input type="text" value="" name="name_book" /> do the same as before mentioned to your input fields. <td>English ABC</td> - > <input type="text" value="" name="name_book" />与前面提到的输入字段相同。

One possibility is to encode the book ID into the submitted form element eg <select name="book_1"> for the book 1. 一种可能性是将书籍ID编码为提交的表格元素,例如书本1的<select name="book_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 processes the books as follows: 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 />";
// }
?> 

Have you thought about using javascript to resolve this? 你有没有想过用javascript来解决这个问题? specifically jQuery? 特别是jQuery? You can call a function to iterate through, something like: 您可以调用函数来迭代,例如:

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

So the function above will POST the selections to the given page, benefit would be that you can have as many books as you want. 因此,上面的函数会将选择POST到给定页面,这样可以获得所需数量的书籍。

When you generate your HTML, make sure each select has 'class' and 'id' defined: 生成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>

The textbookid would be added via PHP textbookid将通过PHP添加

In the post PHP would contain 在PHP的帖子中将包含

if ($_POST) {

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM