2015-09-08 3 views
12

У меня есть форма, откуда мне нужно взять i/p от пользователя. Форма делится на две части: левая и тучная сторонане удалось сохранить несколько значений формы

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

enter image description here

Как вы видите, есть одна кнопка отправки для всей страницы , поэтому я хочу, чтобы пользователь заполнил всю страницу (поля заполнения левой стороны, а с правой стороны вводит количество для любого числа ber продуктов), а затем при нажатии кнопки отправки все значения сохраняются в базе данных.

<form method="post" action"save.php"> 
<!--Front end code for left part--> 
    <label>Name:</label> 
     <input type="text" name="name" value="" /> 
    </div> 

    <div class="span3" style="margin-left:-10px;"> 
     <label>Number:</label> 
     <input type="text" name="number" value="" /> 
    </div> 

    <div class="span6"> 
     <div class="span3" > 
     <label>Address:</label> 
     <textarea name="address"></textarea> 
     </div> 
    </div> 


<!--Front end code for right part--> 

    <table class="table table-striped table-bordered"> 
     <tbody> 
     <?php 
      $sql=" SELECT * from menu"; 
      $result = mysqli_query($con, $sql); 
      if(mysqli_num_rows($result)>0) 
       { 
        while($row = mysqli_fetch_assoc($result)) 
        {?> 
         <tr> 
          <td> <? echo $row['dish']; ?></td> 
          <td class="td-actions"> 
           <input type="text" name="quantity[]" /> 
           <input type='hidden' name='itemname[]' value='<?php echo $row['dish']; ?>'/> 

           Add 
          </td> 
         </tr> 
        <?} 
       }?> 
     </tbody> 
    </table> 
<button name="submit" value="submit" >Submit</button> 
</form> 

Я могу сохранить значение левой части этого кода

$name = mysqli_real_escape_string($con, $_POST['name']); 
$number = mysqli_real_escape_string($con, $_POST['number']); 
$address = mysqli_real_escape_string($con, $_POST['address']); 

$sql= "INSERT INTO cart (name,number, address) VALUES ('$name','$number','$address')"; 
if(!mysqli_query($con,$sql)) 
    { 
     echo "Error: " . $sql . "<br>" . mysqli_error($con); 
    } 

, но я не в состоянии хранить значения всей страницы на один щелчок, может кто-нибудь, пожалуйста, как я можно сделать так

ответ

0

Измените код правой части, как показано ниже

<input type="text" name="quantity[]" /> 

Теперь вы сможете получить quantit y как массив, и вы можете повторить этот массив и сохранить один за другим.

+0

я возьму количество как массив, но как я сопрягать количество с продуктом, если пользователь вводит количество перед 2-й и 4-й продукт, то в массиве, как мы будем различать, какое количество для какого продукта? – sammy

+0

Возьмите продукт также как массив и количество [0] принадлежит к продукту [0]. –

+0

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

1

Несколько проблем, которые вы хотите посмотреть в, чтобы начать работу:

  1. На левой боковой стороне PARAMS работают, так что ваш метод формы и т.д. хороши. Убедитесь, что ваша правая сторона находится в теге <form>. Если это не так, поля будут отправляться с запросом.
  2. Правая сторона не имеет используемые входы:
    • необходимо связать текст элемента с входом. Прямо сейчас, это просто напечатано в DOM. Рассмотрим:
      <input type='hidden' name='itemname[]' value='<?php echo $row['prodname']; ?>'/>
      Это поместит имена в индексированный массив.
    • На стороне количества используйте аналогичный name=quantity[]. Квадратные скобки - вот что дает вам массив. Без скобок вы никогда не сможете сохранить их отдельно.
    • При обработке его в конце запроса, вы можете собрать его обратно вместе с чем-то вроде:
      $i = 0; while($i < count($itemname)){ $name = $itemname[$i]; $quant = $quantity[$i]; $i++; } что грубый код - гарантированно не копипаст сейф
+0

. Я попробовал код, но все же его не работает – sammy

+0

Правильная сторона ** определенно ** внутри тега '

'? –

+0

да, я обновил сообщение также с тегом формы – sammy

-1

1) сделать объект и изменить свои значения на их обновление (нажмите кнопку добавления) через js или jquery

2) когда пользователь нажимает кнопку отправки, вы должны передать свой объект во внешний php-файл с помощью Ajax-метода (через js или jquery)

3) в файле PHP после получения этого объекта и сохранить его в переменной, вы должны расшифровать, что в массив с помощью json_decode функции()

4) Теперь вы можете вставить каждый из них в вашей БД

-1

Изменить этот код:

<input type="text" name="quantity[]"> 

Используя это [], вы получите все количество в массиве.

-1

Хорошей практикой является пользователь print_r(); чтобы увидеть, как выглядит ваш массив сообщений.

print ($ _ POST);

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

в этом случае я хотел бы сделать следующее

<? 
print_r($_POST); 
?> 

<form action='' method='post'> 
    <table> 
     <lable>Firstname: </lable> 
     <input type='text' name='firstname' value=''> </input> 
     <lable>Lastname: </lable> 
    <input type='text' name='lastname' value=''> </input> 
</table> 

<table> 
    <lable>Items: </lable> 
    <input type='number' name='Items[]' value=''> </input> 
</table> 

<input type='submit'> </input> 
</form> 

В верхней части страницы вы можете поместить print_r ($ _ POST); это «довольно печатная версия», только в представлении на экране он может отображаться как «blob», но если вы просмотрите исходный код, он упростит его.

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

Надеюсь, это поможет!

1

да для этого вам нужно сделать 2 функции одной для левой части и другой для правой части ur, так как вы можете сохранить данные для левой части, что имя, адрес и т. Д. Аналогичным образом выполняют функцию обновления для правой части

fucntion update() 
{ 
    $new = $_POST['update_qty'] // or use a count variable for quantity update 
    $sql = "UPDATE TABLE_NAME SET num_of_widgets = :$new (or $count) WHERE username = :_SESSION['username'] "; 
    $st= $conn->prepare($sql); 
    $st->bindValue(":username",$_SESSION['username'],PDO::PARAM_STR); 
    $st->bindValue(":new",$_SESSION['$new'],PDO::PARAM_STR); 
    $st->execute(); 
    $row = $st->fetch(); 
    foreach($row as $update_qty) 
     { 
     echo "update_qty['quantity']"; 
     } 

теперь используют ........

if(isset($_POST['submit'])) 
    { 
    update(); 
    } 
Смежные вопросы