2015-09-28 2 views
-1

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

Строки в этом поле точны для тех, которые используются в файле PHP (упорядочены).

Я использовал $_POST массив так: <input type="text" name = "quantity[]">

Теперь я хочу, чтобы показать ту же информацию, как пользователь показывается (та же строка), на стороне PHP.

Здесь я

if (is_array($_POST['quantity']) || is_object($_POST['quantity'])) { 
    foreach($_POST['quantity']as $key=>$value) { 
      $sqlquery = "SELECT * FROM info WHERE user_id = " . $user_id . " ORDER BY name ASC"; 
      foreach($dbq->query($sqlquery) as $row) { 
       $message .= $row['name'] . $row['description'] . $row['amount'] . $value; 
       echo $message; 
      } 
    } 
} 

Теперь все это работает, как задумано, ожидать, что она петли дважды. Поэтому каждая строка отображается дважды, а количество в строке неверно для половины из них. Если у меня есть две строки, она будет выходить из четырех, и только две из них будут иметь правильное количество, остальные два будут иметь значение количества, обмениваемое.

Problem in question

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

+0

Так что на отправляемом HTML, сколько '' у вас есть? – miken32

+2

Почему вы тестируете 'is_object()'? Параметры '$ _POST' никогда не будут объектами - это либо строки, либо массивы. – Barmar

+0

@ miken32 Один за строку. Строки извлекаются из базы данных SQL. – user1622951

ответ

2

Измените форму так, чтобы quantity поле что-то вроде этого:

<input type="text" name="quantity[<?php echo $row['info_id']; ?>]"> 

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

if (is_array($_POST['quantity'])) { 
    foreach($_POST['quantity']as $key=>$value) { 
     $sqlquery = "SELECT * FROM info WHERE user_id = " . $user_id . " AND id = " . $key . " ORDER BY name ASC"; 
     $row = $dbq->query($sqlquery); 
     $message .= $row['name'] . $row['description'] . $row['amount'] . $value; 
     echo $message; 
    } 
} 

Я не уверен, если вам действительно нужен тест user_id в SELECT запросе, условие id может быть достаточно. Но это зависит от деталей вашей базы данных.

+0

Спасибо, однако теперь он показывает это: https: // imgur. com/2OdG42Y - Я бы хотел, чтобы он показывал только одну строку (из SQL DB +, затем добавлял к ней значение, которое является значением $ _POST (количество), и в конце концов, эхо все. – user1622951

+0

строки в форме, связанной с строками базы данных? Запрос не использует ничего из формы. – Barmar

+0

Вопрос говорит: ** Правильный порядок должен быть (2, 15, 2, 15) **. Разве это не то, ответ получается? – Barmar

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