如何使用PHP与javascript变量进行交互?

时间:2016-07-16 03:41:23

标签: javascript php html ajax

我有一个非常简单的网络应用程序,允许用户输入名字和姓氏,点击提交将名称插入sql数据库。 在表单下方,有一个显示数据库表内容的HTML表。

如果用户点击数据库的任何一行,则使用以下函数将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 

2 个答案:

答案 0 :(得分:1)

<强>基于表单的

您可以使用隐藏的表单字段执行此操作,并为您提供特定的ID:

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

然后在TableSelect函数中指定值:

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

然后你可以像你的其他请求(post / get)参数那样访问变量:

$_POST['id']

<强> - 基于Ajax

使用jQuery,您可以在TableSelect函数中执行这样的ajax请求:

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

请求参数访问权限相同:

$_POST['id']

答案 1 :(得分:0)

您可以在表单中包含隐藏变量,并使用javascript设置隐藏变量的值onclick。

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

在表单标记

中添加以下内容
<input type="hidden" name="selectedRow" id="selectedRow">  

然后,您可以将查询更新为

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

当然不要忘记添加清理和验证以及所有爵士乐。