Создайте форму отправки (оберните таблицу в форму и покажите ее как таблицу снова) из продуктов, которые были заказаны

EDIT: Может быть, проще создать новый столбец в базе данных. Именован: to_order. Затем создайте запрос UPDATE для каждого продукта. Что-то вроде: UPDATE products SET to_order = '[VALUE_INPUT]' WHERE id = '[ID_PRODUCT]' Проблема здесь в том, где можно пресечь этот запрос? Как определить VALUE_INPUT и ID_PRODUCT для каждой строки?

Если это работает, и я могу ОБНОВИТЬ каждую строку для этого конкретного продукта и т. Д. Я могу снова создать mysqli_fetch_assoc, где будут указаны только [Product_name], [to_order]. Пожалуйста помоги.


Я работаю над системой заказов поставщиков. В тех случаях, когда менеджер ресторана может легко выбрать поставщика, заполните, сколько у него запасов этого конкретного продукта. И он автоматически подсчитает, сколько вам нужно заказать.

Эта часть сделана. Но теперь, как только мы заполним форму, я хочу получить обзор всех продуктов, которые вам нужно заказать, и это должно быть пригодно для печати.

Например, в объясненных словах:

  • У нас есть несколько столбцов в нашей таблице [ID_product] [ID_supplier] [Product_name] [Stock] [Minimum] [To_order]

  • ID_product, ID_supplier, Product_name и Minimum – все данные из базы данных. Запасы – это то, что вам нужно заполнить. И To_order рассчитывается по: Minimum-stock = To_order. (Логика)

  • С помощью команды mysql_fetch_assoc мы можем отображать все конкретные продукты со своим конкретным идентификатором и минимальным целым числом.

  • Теперь вот часть моего вопроса: как только все заполнено, вам нужно нажать кнопку, которая ссылается на следующую страницу. На этой странице показан ваш общий ввод, полный список. Например: [Product_name] [To_order]

Итак, на этой странице вы получите обзор своей формы, где вы заполнили все эти значения. Таким образом, вы получаете список (насколько большой зависит от того, сколько продуктов у вас есть в вашей базе данных) со всеми рассчитанными входами от «To_order».

Моя проблема заключается в том, что если я создам Action Form в моем fetch_assoc, он может читать все имена элементов, но как только вы отправите форму и перейдите на следующую страницу. Все данные потеряны. Мне нужно что-то, где я могу увидеть значение с предыдущей страницы этого ввода. И тогда для всех конкретных продуктов.

My form.php (Где мне нужно заполнить мои акции, чтобы рассчитать вход «To_order»). Это работает нормально.

<table width="600" border="1" cellpadding"1" cellspacing= "1" class="flatTable"> <tr class="headingTr"> <th> Supplier code </th> <th> Product </th> <th> Stock </th> <th> Minimum </th> <th> To order </th> </tr> <?php while ($producten=mysqli_fetch_assoc($result_producten)) { echo "<tr>"; echo "<td><form method='POST' action='lijst.php'><label name='".$producten['lev_id']."'>".$producten['lev_id']."</label></td>"; echo "<td><label name='".$producten['productnaam']."'>".$producten['productnaam']."</label></td>"; echo "<td> <input id='".$producten['minimum']."' name='".$producten['id']."' type='text' oninput='calculateBestelling(this.value,this.name, this.id)' onkeypress='return event.charCode >= 48 && event.charCode <= 57'/> </td>"; echo "<td><input id='".$producten['minimum']."' name='mytext2' type='text' readonly='true' value='".$producten['minimum']."' /></td>"; echo "<td><input id='".$producten['id']."' name='order[]' type='text' readonly='true' /></td>"; echo "</tr>"; } ?> <script> var minimum; var stock; var order; function calculateBestelling(val,name,id){ minimum = document.getElementById(id).id; stock = document.getElementById(id).value; document.getElementById(name).value = minimum - val; order = document.getElementById(name).value; if (order < 0) { document.getElementById(name).value = '0'; } } </script> </table> <p><input type='submit'/></p></form> 

Затем на следующей странице (где должен быть показан обзор):

 <header> <h2>Complete order form - Supplier: (HERE THE SUPPLIER)</h2> </header> <div class="container"> <div class="row"> <table width="600" border="1" cellpadding"1" cellspacing= "1" class="flatTable"> <tr class="headingTr"> <th> Product </th> <th> To order </th> </tr> <?php //And I dont know what I need to do here. I want the values from the 3rd input the previous file. But how I can combine this with each row for a specific product? while ($producten=mysqli_fetch_assoc($result_producten)) { echo "<tr>"; echo "<td>PRODUCT HERE</td>"; echo "<td><input id='toorder' name='order[]' type='text' readonly='true' value='(THE VALUE OF THE PREVIOUS FILE FOR THAT PRODUCT)' /></td>"; echo "</tr>"; } ?> </table> </div> </div> 

Я создал изображение, в котором вы просто видите, что у меня на уме. URL ИЗОБРАЖЕНИЯ: http://img.ruphp.com/javascript/6AnTl.png

Поэтому нам также нужно проверить что-то вроде: if (! To_order> 0) {DONT SHOW ROW}

Не стесняйтесь менять коды, возможно, какой-то другой способ, который работает? Например, оставаясь на той же странице, и скрывайте запас и минимальные значения. Значит, мы можем видеть только идентификаторы, имена продуктов и значения To_order?

Solutions Collecting From Web of "Создайте форму отправки (оберните таблицу в форму и покажите ее как таблицу снова) из продуктов, которые были заказаны"

Веб-страницы не имеют гражданства, другими словами, каждый запрос является отдельным для веб-сервера. Из-за этого нет связи между двумя запросами, например form1 и form2.

Чтобы преодолеть это, вы должны использовать некоторую форму хранения, которая будет сохраняться через два (или несколько отдельных запросов). Это называется постоянным хранилищем. Для долговременного постоянного хранения используйте базы данных. В краткосрочной перспективе используйте сеансы PHP. Вы можете читать на PHP-сессиях в руководстве по PHP .

Чтобы сохранить ваши значения из формы 1, сохраните значения в сеансе. В вашей форме вы укажете свое действие формы на form1.php

form1_view.php:

 <form action=<?php echo "form1.php" method="post"> <input name="field1"> <input type="form1_submit"> </form> 

и обработчик ввода формы – form1.php

  if (isset($_POST['form1_submit']) { session_start(); $_SESSION['form1_inputs'] = serialize($_POST); } 

Затем, получив значение из формы 2, извлеките значения, которые вы сохранили из формы1.

form2_view.php:

 <form action=<?php echo "form2.php" method="post"> <input name="field2"> <input type="form2_submit"> </form> 

Form2 обрабатывается собственным обработчиком. form2.php

  if (isset($_POST['form2_submit']) { session_start(); $form1_values = unserialize($_SESSION['form1_inputs']); $form2_values = $_POST; // combine input from both forms into one variable. $all_form_values = array_merge($form1_values, $form2_values) // You can now save values from both forms. How you do this // ...will depend on how you save the values. This is an example. save_my_values($all_form_values); } 

После долгих попыток я наконец понял это. Я использовал $ _SESSIONS для хранения данных. Это одна вещь. Затем убедитесь, что входы – это все массивы.

 while ($producten=mysqli_fetch_assoc($result_producten)) { echo "<form method='POST' action='verwerken.php'><tr>"; echo "<td><input name='ids[]' type='text' readonly='true' value='".$producten['id']."' /></td>"; echo "<td><input name='lev_id' type='text' readonly='true' value='".$producten['lev_id']."' /></td>"; echo "<td><input name='producten[]' type='text' readonly='true' value='".$producten['productnaam']."' /></td>"; echo "<td> <input tabindex='1' id='".$producten['minimum']."' name='".$producten['id']."' type='text' oninput='calculateBestelling(this.value,this.name, this.id)' onkeypress='return event.charCode >= 48 && event.charCode <= 57'/> </td>"; echo "<td><input id='".$producten['minimum']."' type='text' readonly='true' value='".$producten['minimum']."' /></td>"; echo "<td><input id='".$producten['id']."' name='test[]' type='text' readonly='true' /></td>"; echo "</tr>"; } 

Это время для таблицы. После заполнения всех значений STOCK он автоматически рассчитает значение для заказа. Это нормально работает. Теперь, когда вы нажмете кнопку «Отправить», следующая страница будет открыта. Эта страница только вставляет запрос в базу данных. Для каждой строки он обновит значение to_order в базе данных.

 $order_test = $_SESSION['hoeveelheid'] =$_POST['test']; $ids_test = $_POST['ids']; $producten = $_SESSION['product'] = $_POST['producten']; foreach (array_combine($producten, $order_test) as $producten => $order_test) { echo 'Product: ' . $producten . ' - Te bestellen: ' . $order_test.'<br>'; mysqli_query($conn, "UPDATE producten SET bestellen = '".$order_test."' WHERE productnaam ='".$producten."'"); } $_SESSION['lev_id'] = $_POST['lev_id']; $_SESSION['check'] = 'true'; header('Location: bestelformulier.php'); exit(); } 

Если база данных не так медленно, вы не должны видеть эту страницу. После того, как запрос будет выполнен, вы будете перенаправлены на страницу обзора. Bestelformulier.php.

Здесь вы просто mysqli_fetch_assoc значения из базы данных снова. И у вас есть обновленная форма.

Спасибо всем за помощь (: