2016-07-16 3 views
0

私は、ユーザーが姓と名字を入力し、名前を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 

答えて

1

フォームベース

あなたは、特定のIDを与える隠しフォームフィールドでこれを行うことができます:

<input type="hidden" id="your-id" value="" /> 

と入力し、TableSelect関数では、値を割り当てます。

document.getElementById('your-id').value = id; 

次に、あなたの場合には、他の要求(POST/GET)パラメータなどの変数にアクセスすることができますjQueryを使って

$_POST['id'] 

Ajaxベースの

をあなたは、AJAXを実行することができパラメータへのアクセスがある

$.ajax({ 
     url: 'file.php', 
     type: 'post', 
     data: {'id': el.id}, 
     success: function(data, status) { 
     // ... 
     } 
}); 

要求:あなたのTableSelect機能では、このような要求同じ:

+0

これは最後に入力されたレコードを私に提供しますが、最後にクリックする必要があります。関数を実行するたびに「投稿する」必要がありますか? – mrgunston

+0

他のパラメータとして、フォームを送信した場合にのみバックエンドに転送されます(yes)。 また、ajaxコールを実行することもできます。https://api.jquery.com/jquery.ajax/ – ScientiaEtVeritas

0

フォーム内に隠し変数を設定し、javascriptを使用して非表示変数onclickの値を設定することができます。

<!--JS Functions--> 
<script> 
//Determine which record is selected. 
var id; 
function TableSelect(el) { 
    document.getElementById('selectedRow').value = el.id; 
} 
</script> 

、その後、あなたはもちろん

$query3 = "Delete from tbl_HR_Master where id = $_POST['selectedRow']"; 

のようなものであるためにあなたのクエリを更新することができ、あなたのformタグ内

<input type="hidden" name="selectedRow" id="selectedRow"> 

を以下を追加サニタイズと検証を追加することを忘れないでくださいそしてそのすべてのジャズ。

関連する問題