Нужна помощь с формой PHP PHP - PullRequest
0 голосов
/ 20 сентября 2011

В настоящее время я работаю над HTML-формой заказа учебников с помощью PHP

Пользователь показал список учебников и выпадающее меню Количество для каждого учебника (их можно выбрать на заказ 1 или 2,3 или 4)

Каждый учебник имеет уникальный номер учебника.

Как я могу создать 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 ]

1 голос
/ 20 сентября 2011

Одной из возможностей является кодирование идентификатора книги в представленный элемент формы, например, <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 />";
// }
?> 
1 голос
/ 20 сентября 2011

Полагаю, у вас уже есть таблица в базе данных для хранения данных из формы, верно?

Тогда я выведу здесь только сторону 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> -> <input type="text" value="" name="name_book" /> сделать то же самое, что и ранее, для ваших полей ввода.

0 голосов
/ 20 сентября 2011

Думали ли вы об использовании 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, убедитесь, что для каждого выбора определены '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>

Учебник будет добавлен через PHP

В посте PHPбудет содержать

if ($_POST) {

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

  $query = "INSERT INTO purchase (textbookid, quantity) VALUES ({$id},{$val})";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...