2016-07-16 106 views
0

我有一個非常簡單的網絡應用程序,它允許用戶輸入名和姓,並點擊提交以將名稱插入到sql數據庫中。 在表單下方有一個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)參數,你的情況:基於Ajax的

$_POST['id'] 

使用jQuery你可以執行一個AJAX請像這樣在你的TableSelect功能:

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

請求參數訪問相同:

$_POST['id'] 
+0

這給了我上次輸入的記錄,但是我需要最後一次點擊。每次功能運行時,我是否需要「發佈」? – mrgunston

+0

作爲其他參數,如果您提交表單,它將只被轉移到後端。 或者你可以執行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> 

,並添加您的表單標籤內的下列

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

然後你就可以更新你的查詢是這樣的

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

當然不要忘了添加消毒和驗證和所有爵士樂。