Генерация элементов формы в цикле PHP
Привет,
Я получил Ajax для работы с простыми формами, но когда я пытаюсь создать несколько элементов формы в цикле, у меня возникают проблемы с распаковкой всех этих данных и использованием их для обновления моей базы данных. У кого-нибудь есть какие-либо соображения о том, как я мог бы достичь этого на основе моего кода ниже? В принципе, каждая позиция имеет потенциал для обновления своей цены. Когда пользователь нажимает кнопку Отправить, он вызывает функцию Ajax, которая должна передать все данные формы price-update.php. Там он распаковывает каждый $_POST и соответствующим образом обновляет базу данных.
Примечание: этот код сокращен для визуальной простоты. Некоторые переменные используются, но методы инициализации не приводятся.
Выполнение теста print_r($_POST) приводит к следующему в URL-адресе:
?submit=Submit+Changes&price%5B%5D%3B+%3F>=5612&id%5B%5D=6&price%5B%5D%3B+%3F>=25&id%5B%5D=5&price%5B%5D%3B+%3F>=52&id%5B%5D=3&price%5B%5D%3B+%3F>=&id%5B%5D=2&price%5B%5D%3B+%3F>=&id%5B%5D=8
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> $(function () { $('form').on('submit', function (e) { e.preventDefault(); $.ajax({ type: 'post', url: '/price-update.php', data: $('form').serialize(), success: function () { alert('Data was submitted'); } }); }); }); </script> //Multiple form elements generated depending on how many prices exist in database <form> <input name="submit" type="submit" value="Submit Changes" /> <table> <tbody> <?php $n = 0; for ($z = 0; $z < count($names); $z++) { ?> <tr id = "row-<?php echo $z; ?>"> <td><input type="number" name ="price[]; ?>" class="price-update" value="" min="1" max="999999999" /></td> <td><input type="hidden" name="id[]" class="price-id" value="<?php echo $id_array[$n]; ?>" /></td> <?php $n++;?> </tr> <?php }?> </tbody> </table> </form> //price-update.php <?php if($_POST) { //Uses SSL connection with mysqli require_once('connection.php'); $IDs = array(); $Prices = array(); foreach($_POST as $key => $value) { if (strstr($key, 'id')) { $IDs[] = $value; } if (strstr($key, 'price')) { $Prices[] = $value; } } for($i = 0; $i < count($IDs); $i++) { $price_update = "UPDATE prices SET price='".$Prices[$i]."' WHERE id='".$IDs[$i]."'"; $send_update = $instance->query($price_update); } } ?>
Что я уже пробовал:
Много изменений. Простые формы обновляют базу данных просто отлично - но генерация элементов формы из цикла PHP, похоже, вызывает проблемы. Я думаю, что моя проблема связана с управлением потоком для элементов $_POST.