Проблема с обновлением данных массива в цикле foreach - PullRequest
0 голосов
/ 31 мая 2018

Я работаю над счетом, в котором я хочу обновить данные таблицы.

Мой скрипт обновляет только последнюю строку таблицы. Может ли это работать с этим циклом foreach?

Ниже приводится сценарий, с которым я пытаюсь это сделать:

поля ввода HTML

<tr>
    <input type="hidden" name="data['+i+'][Id]" value="<?php echo $Id; ?>" >
    <input type="hidden" name="data['+i+'][ItemId]" value="<?php echo $item_Id; ?>" >
    <td><input type="text" value="<?php echo $item; ?>"></td>
    <td><input type="text" name="data['+i+'][QTY]" value="<?php echo $Quantity; ?>"</td>
    <td><input type="number" value="<?php echo $price; ?>"></td>
    <td><input type="number" name="data['+i+'][total]" value="<?php echo $total; ?>"></td>
</tr>

PHP

if (isset($_POST['submit'])) {
    foreach($_POST['data'] as $key => $data) {
        $Id = intval($data['Id']);
        $itemId = intval($data['ItemId']);
        $QTY = intval($data['QTY']);
        $Total = intval($data['total']);

        if($itemId > 0) {
            $query = $db - > prepare("UPDATE table SET QTY = :QTY where id = :ID ");
            $query - > execute(array(':ID' => $ID, ':QTY' => $QTY));
        }
    }
}

1 Ответ

0 голосов
/ 31 мая 2018

Скорее всего, этот синтаксис недопустим:

data['+i+']

PHP будет рассматривать это как строку с фиксированным значением, то есть в вашем массиве $_POST[data] будет только один ключ, каждое новое вхождение перезаписываетПредыдущая.В конце это будет выглядеть так:

$_POST[data] == array( '+i+' => array(
    'Id' => ...,
    'ItemId' => ...,
    'QTY' => ...,
    'total' => ...
));

Вы, вероятно, захотите использовать некоторый PHP в своем коде, чтобы правильно написать индекс i:

<tr>
    <input type="hidden" name="data[<?php echo $i; ?>][Id]" value="<?php echo $Id; ?>" >
    <input type="hidden" name="data[<?php echo $i; ?>][ItemId]" value="<?php echo $item_Id; ?>" >
    <td><input type="text" value="<?php echo $item; ?>"></td>
    <td><input type="text" name="data[<?php echo $i; ?>][QTY]" value="<?php echo $Quantity; ?>"</td>
    <td><input type="number" value="<?php echo $price; ?>"></td>
    <td><input type="number" name="data[<?php echo $i; ?>][total]" value="<?php echo $total; ?>"></td>
</tr>

и приращениеэто для каждого ряда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...