私は、ユーザーが姓と名字を入力し、名前をSQLデータベースに挿入するためにsubmitを押すことができる、とてもシンプルなWebアプリケーションを持っています。 フォームの下には、データベーステーブルの内容を表示するHTMLテーブルがあります。PHPを使用してjavascript変数と対話するにはどうすればよいですか?
ユーザーがデータベースの任意の行をクリックすると、HTML要素のID(データベースIDと同じ値に設定されている)は、次の関数を使用してjavascript変数に保存されます。ここで
<!--JS Functions-->
<script>
//Determine which record is selected.
var id;
function TableSelect(el) {
id = el.id;
alert(id);
}
</script>
は形式です:ここでは
<!--HTML Form -->
<form method="post" action="index.php">
First Name: <input type="text" name="FirstName" value="">
<br><br>
Last Name: <input type="text" name="LastName" value="<?php echo $LastName;?>">
<br><br>
<input type="submit" name="submit" value="Submit">
<input type="submit" name="delete" value="Delete" onclick="Delete()">
</form>
は、データのPHP処理とSQLテーブルの出力です:
//prepare query to insert data from form into DB
if (isset($_POST['submit'])){
$query = "INSERT INTO tbl_HR_Master (First_Name, Last_Name) VALUES ('{$FirstName}', '{$LastName}') ";
$result = mysqli_query($connection, $query);
//Test if there was a query error
querycheck($result);
}//end if
//prepare query to populate table from DB
$query2 = "Select id, First_Name as 'First Name', Last_Name as 'Last Name' from tbl_HR_Master";
$result2 = mysqli_query($connection, $query2);
//Test if there was a query error
querycheck($result2);
//display table
echo "</br>";
echo "<table id=\"tbl_HR_Master\" border='1'><tr class=\"nohover\"\">";
// printing table headers
$fields_num = mysqli_num_fields($result2);
for($i=0; $i<$fields_num; $i++) {
$field = mysqli_fetch_field($result2);
echo "<td>{$field->name}</td>";
} //end for
echo "</tr>\n";
// print table rows
while($row = mysqli_fetch_row($result2))
{
echo "<tr>";
$id = $row[0];
foreach($row as $cell){
echo "<td onclick=TableSelect(this) id=". $id .">".$cell."</td>";
}//end foreach
echo "</tr>\n";
}//end while
私はどのPHP関数を実行したいですデータベースから選択したレコードを削除しますが、明らかにPHPがサーバ上で動作するため、どのレコードが選択されているかをPHPに伝える方法が必要です。もう一度、私のJavascript関数を見れば、var id =最後に選択したレコードです。このJS変数を処理するためにサーバーにどのように解析できますか?一言で言えば
、PHPでこれをしたい:
//delete selected record
if (isset($_POST['delete'])){
$query3 = "Delete from tbl_HR_Master where id = ". JS VARIABLE HERE." ";
} //end if
これは最後に入力されたレコードを私に提供しますが、最後にクリックする必要があります。関数を実行するたびに「投稿する」必要がありますか? – mrgunston
他のパラメータとして、フォームを送信した場合にのみバックエンドに転送されます(yes)。 また、ajaxコールを実行することもできます。https://api.jquery.com/jquery.ajax/ – ScientiaEtVeritas