0

MySQL データベースから入力される可変サイズ (長さ) のフォームがあります。ボタンの作成に使用される情報を構成する 4 つのフィールドがあります (id、ボタン番号、名前、および価格)。フォームが送信されたら、すべての値を 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 dbに書き込み、次に送信してページの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 に答える