我已经让Ajax处理简单的表单,但是当我尝试在循环中生成多个表单元素时,我无法解压缩所有数据并使用它来更新我的数据库。根据我的代码,任何人都有关于如何实现这一目标的任何意见?基本上,每个订单项都有可能更新其价格。当用户单击提交按钮时,它会调用Ajax函数,该函数应将所有表单数据传递给price-update.php。在那里,它解压每个$ _POST并相应地更新数据库。
注意:此代码减少了视觉效果。使用了一些变量,但没有给出初始化方法。
<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);
}
}
?>