0

我有一个从 MySQL 数据库填充的可变大小(长度)的表单。有 4 个字段构成用于创建按钮的信息(id、button#、name 和 price)。提交表单后,我想将所有值保存到 MySQl db 并使用成功消息更新页面底部的 div。目前我有这个表格。

<?php include("./db/db_connect.php"); ?>
<form method="POST" action="fixcon.php">
<?php
$sql = "SELECT * FROM concessions ORDER BY button ASC ";
$result = mysql_query($sql);
echo "<table border='1' id='table'>
<tr>
<td align='center'>Button #</td>
<td align='center'>Item</td>
<td align='center'>Price</td>
<td align='center'>Button</td>
</tr>";

while($row = mysql_fetch_array($result)) {
  echo "<tr>";
  echo "<td><input type='text' name='btn[]' size='5' value='".$row['button']."'/></td>";
  echo "<td><input type='text' name='itm[]' size='5' value='".$row['item']."'/></td>";
  echo "<td><input type='text' name='prc[]' size='5' value='".$row['price']."'/></td>";
  echo "<td><input type='button' class=myButton name='button01' value='".$row['item'].'&#10;$'.$row['price']."'></td>";
  echo "<input type='hidden' name='id[]' value='".$row['id']."'/>";
  echo "</tr>";
}
  echo "</table>";
  mysql_close($con);
  ?>

它发送到的任何 PHP

<?php include("./db/db_connect.php"); ?>
<?php
$buttonArray = $_POST['btn'];
$itemArray = $_POST['itm'];
$priceArray = $_POST['prc'];
$idArray = $_POST['id'];

$numberofItems = count($itemArray);

for ($i=0; $i<$numberofItems; $i++) {
 $sql = "UPDATE concessions SET button = '".$buttonArray[$i]."', item = '".$itemArray[$i]."', price = '".$priceArray[$i]."' WHERE id = '".$idArray[$i]."'";
 mysql_query($sql);
}

echo "<b>User updated</b>";
mysql_close($con);
?>

对于我所有其他页面,我将表单发送到 JS 并使用类似...

xmlhttp.open("GET","myfile.php?a="+val1+"&b="+val2+"&c="+val3+"&d="+val4,true);
xmlhttp.send();

PHP 文件保存数据并为 div 生成消息。要写入 div...

xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  }
}

这适用于我的所有其他页面,但由于我不知道会有多少字段,我无法对 xmlhttp.open 语句进行硬编码。不熟悉 jQuery(现在学习)或 ajax(只知道我做 jQuery 的一点点)我不知道如何执行此操作。我知道我需要序列化数据并已完成并将其发送到 javascript 使用

$.each($('#yourform').serializeArray(), function() { console.log(" <" +this.name+ '>' + this.value + "</" + this.name + "> " ); });

但我不知道如何将其发送到 PHP 文件以将其写入 MySQL 数据库,然后发送回以更新页面上的 div。请给出完整的代码,因为到目前为止我在尝试实现片段和建议时遇到了很多问题。

4

1 回答 1

1

由于您不知道输入的数量,您可以serialize在 jquery 中使用来序列化整个表单。这是手册

从说明书来看,

 $('form').submit(function() {
  alert($(this).serialize());
  return false;
 });

这会产生一个标准的查询字符串:

a=1&b=2&c=3&d=4&e=5
于 2012-12-26T19:43:52.227 回答