2015-06-06 6 views
1

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] [Фото] [Минимальное] [To_order]

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

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

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

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

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

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://i.stack.imgur.com/6AnTl.png

Таким образом, мы также должны проверить что-то вроде: (! To_order> 0), если {не показывают ROW}

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

+0

Вы можете использовать PHP сессию для хранения данных для Form1, или создать Form2 со скрытыми полями, содержащего значение для form1 Дайте нам знать, если у вас есть проблемы с любым из эти подходы. – crafter

+0

Благодарим за ваш ответ. Как я могу сохранить кучу данных в сеансе PHP, который все еще связан с конкретным продуктом? Например, если вы храните значение ввода To_order в сеансе PHP. тогда можно назначить правильное значение конкретному продукту? –

+0

См. мой ответ @Stan – crafter

ответ

0

После нескольких часов попыток я наконец понял это. Я использовал $ _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, он автоматически вычислит значение для заказа. Thats работает отлично. Теперь, когда вы нажмете кнопку «Отправить», следующая страница будет открыта. Эта страница только вставляет запрос в базу данных. Для каждой строки он обновит значение to_order в базе данных.

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

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

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

0

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

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

Чтобы сохранить значения из формы 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, извлекает значения, сохраненные вами в form1.

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); 
    } 
+0

Прошу прощения, но я не понимаю. белый en Я отправляю форму1 (форма, в которой вычисляется третий вход), она отправит меня на следующую страницу, список. В этом файле я поставлю ваш первый код правильно? Но куда поставить второй? Потому что на этой странице мне нужно показать все. Полный список продуктов и то, что вам нужно заказать. Я также не знаю, как преобразовать массивы в таблицы, так что он будет сочетать правильное значение ввода с правильным продуктом. –

+0

Я расширил свои примеры, чтобы ответить на ваш первоначальный запрос «Мне нужно что-то, где я могу увидеть значение с предыдущей страницы этого ввода». Похоже, что у вас есть другие проблемы помимо этого, связанные с обработкой форм с помощью PHP, и я предлагаю вам продолжить чтение и тестирование. Я не могу с этим поделать. – crafter

+0

Хм .. Я знаю, как это работает, сеансы с данными. Я сохранил имя поставщика в сеансе и запросил его на следующей странице. Это работает. Но теперь значение продукта + to_order. Я нашел что-то, но не могу понять, как использовать его на моем пути. Что-то с: \t while (list ($ key, $ val) = each ($ _ REQUEST)) Для каждого элемента в сообщении из order.php поместите значения в пару ключей/значений. Су, вы получите: Quanitity ----- Пункт 1 клубника 3 банан –

Смежные вопросы