そうです、ページ上で実行されるクエリがあり、データベース内のすべてのレコードに対してフォームが出力されます(これは単純化されており、mysql_ *が減価償却されていることはわかっています)。
$sql = "select * from `$table1`";
$result = mysql_query ($sql) or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
$carid = $row["car_id"];
$carnum = $row["carnum"];
$carlocation = $row["carlocation"];
$carstate = $row["carstate"];
echo "<tr id='$carid'>";
echo "<td>$carnum</td>";
echo "<td><form action='' method='post' id='form$carid'>";
echo "<select id='popup' name='ctate'>";
echo "<option value='In-Service-Bay'>In Service Bay</option>";
echo "<option value='Awaiting-Service'>Awaiting Service</option>";
echo "<option value='Service-Complete'>Service Complete</option>";
echo "</select></td>";
echo "<select id='popup' name='clocation'>";
echo "<option value='Carpark-1'>Carpark-1</option>";
echo "<option value='Carpark-2'>Carpark-2</option>";
echo "<option value='Carpark-3'>Carpark-3</option>";
echo "</select></td>";
echo "<td><input type='submit' name='submit' value='Submit'>";
echo "</form></tr>";
}
echo "</table>";
今私がやりたいのは、ドロップダウンの1つが変更されたときに、そのフォームだけが送信されるようにすることです。これを行うには、JSとAJAXを使用する必要があることがわかりましたが、私はJavaScriptプログラマーではありません。したがって、ページを更新せずにフォームの送信を読んだ後、これを試してみようと思いました。
print '<script type="text/javascript">';
print "
$('#form1').change(function()
{
console.log('success!');
$.ajax({
type: 'post',
url: 'process.php',
data: $('#form1').serialize(),
success: function() {
}
});
return false;
});
</script>";
これで原則として機能します。form1の最初のレコードを変更すると、実行されて「Success!」と出力されます。ログに。ただし、process.phpを呼び出すようには見えませんが、それは私の主な問題ではありません。私が今やりたいのは、これを実装して、すべてのフォームで機能するようにすることです。ページ上のフォームの数は日々大きく異なることを念頭に置いてください。
だから私はこれをしました:
$sql = "select * from `$table1`";
$result = mysql_query ($sql) or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
$carid = $row["car_id"];
$carnum = $row["carnum"];
$carlocation = $row["carlocation"];
$carstate = $row["carstate"];
$formname = "#form".$carid;
print '<script type="text/javascript">';
print " var cnum;";
print " cnum = '$formname',";
print "
$(cnum).change(function()
{
console.log(cnum);
$.ajax({
type: 'post',
url: 'process.php',
data: $(cnum).serialize(),
success: function() {
}
});
return false;
});
</script>";
echo "<tr id='$carid'>";
echo "<td>$carnum</td>";
echo "<td><form action='' method='post' id='form$carid'>";
echo "<select id='popup' name='ctate'>";
echo "<option value='In-Service-Bay'>In Service Bay</option>";
echo "<option value='Awaiting-Service'>Awaiting Service</option>";
echo "<option value='Service-Complete'>Service Complete</option>";
echo "</select></td>";
echo "<select id='popup' name='clocation'>";
echo "<option value='Carpark-1'>Carpark-1</option>";
echo "<option value='Carpark-2'>Carpark-2</option>";
echo "<option value='Carpark-3'>Carpark-3</option>";
echo "</select></td>";
echo "<td><input type='submit' name='submit' value='Submit'>";
echo "</form></tr>";
}
echo "</table>";
ただし、残念ながら、これは機能しないため、それほど単純ではありませんでした。ページ上のすべてのフォームを送信しようとしているのか、それともうまくいかないのか、私にはわかりません。フォーム名をハードに設定し、JSをループに入れておくと、機能しますが、特に必要のないレコードが複数回送信されます。
私が言っているように、私はjavascriptの人ではないので、あなたが私に与えることができるどんな助けも大いに感謝されるでしょう。
ありがとう!