2017-03-26 145 views
0

那麼我從哪裏開始。PHP表單不會將新數據發送到MySQL

我建立了一個英國的CAD系統(英國警察角色戰隊)。有問題的區域看起來像這樣:看起來像這樣:HR

我創建了一個英特爾頁面,創建了MySQL表列,都很好。但是,當我編輯編輯用戶按鈕的代碼,包括編輯訪問英特爾,它停止工作。整個表單不會發送任何信息。

這裏是編輯表單的PHP代碼:

<?php 
 
\t include('./includes/init.php'); 
 
\t 
 
\t $id = displayData($_POST['id']); 
 
\t 
 
\t $sql = "SELECT * FROM users WHERE id = '$id';"; 
 
\t $result = mysqli_query($link, $sql); 
 
\t $row = mysqli_fetch_array($result); 
 
?> 
 

 
<form> 
 
\t <label>Rank</label> 
 
\t <input type="text" class="form-control" id="txtUserRank" value="<?php echo displayData($row['rank']); ?>" /> 
 
\t <label>Division</label> 
 
\t <input type="text" class="form-control" id="txtUserDiv" value="<?php echo displayData($row['division']); ?>" /> 
 
\t <label>Control Access</label> 
 
\t <select id="txtControl" class="form-control"> 
 
\t \t <option value="<?php echo displayData($row['controlAccess']); ?>"><?php echo BoolToLabel(displayData($row['controlAccess'])) ?> (Current)</option> 
 
\t \t <option value="0">No</option> 
 
\t \t <option value="1">Yes</option> 
 
\t </select> 
 
\t <label>SLT Access</label> 
 
\t <select id="txtSLT" class="form-control"> 
 
\t \t <option value="<?php echo displayData($row['sltAccess']); ?>"><?php echo BoolToLabel(displayData($row['sltAccess'])) ?> (Current)</option> 
 
\t \t <option value="0">No</option> 
 
\t \t <option value="1">Yes</option> 
 
\t </select> 
 
\t <label>Intel Access</label> 
 
\t <select id="txtIntel" class="form-control"> 
 
\t \t <option value="<?php echo displayData($row['intelAccess']); ?>"><?php echo BoolToLabel(displayData($row['intelAccess'])) ?> (Current)</option> 
 
\t \t <option value="0">No</option> 
 
\t \t <option value="1">Yes</option> 
 
\t </select> 
 
\t <br /> 
 
\t <button class="btn btn-block btn-info btnSaveSLTUserChanges">Save Changes</button> 
 
\t <hr /> 
 
\t <button class="btn btn-block btn-danger btnDeleteUser">Delete User</button> 
 
</form>

這裏是php文件發送數據到數據庫的代碼:

<?php 
include('./includes/init.php'); 

$id = displayData($_POST['id']); 
$rank = displayData($_POST['rank']); 
$div = displayData($_POST['div']); 
$control = displayData($_POST['control']); 
$slt = displayData($_POST['slt']); 
$intel = displayData($_POST['intel']); 

$sql = "UPDATE `users` SET `rank`='$rank',`division`='$div',`controlAccess`='$control',`sltAccess`='$slt', `intelAccess`='$intel' WHERE id = '$id';"; 
mysqli_query($link, $sql); 

這裏是.js代碼

$('body').on('click', '.btnSaveSLTUserChanges', function() { 
 
\t 
 
\t var id = $('#addUnitsModalBody').attr("unitid"); 
 
\t var rank = $('#txtUserRank').val(); 
 
\t var div = $('#txtUserDiv').val(); 
 
\t var control = $('#txtControl').val(); 
 
\t var slt = $('#txtSLT').val(); 
 
    var intel = $('#txtIntel').val(); 
 
\t 
 
\t var dataString = 'id=' + id + '&rank=' + rank + '&div=' + div + '&control=' + control + '&slt=' + slt + '&intel=' + intel; 
 
\t \t $.ajax({ 
 
\t \t \t type: "POST", 
 
\t \t \t url: "./sltEditAccount.php", 
 
\t \t \t data: dataString, 
 
\t \t \t success: function(response) { 
 
\t \t \t \t $('#Members').load(document.URL + ' #Members'); 
 
\t \t \t } 
 
\t \t }); 
 
});

任何幫助,將主要讚賞。

注意:在我添加任何與英特爾做的事情之前,表單工作正常,沒有問題。

感謝 泰勒

+0

我不知道'displayData()'是做什麼的,但我可以肯定地說它不會**防止mysql注入。 – Xorifelse

回答

0

我看不出哪裏是元素「addUnitsModalBody」定義

var id = $('#addUnitsModalBody').attr("unitid"); 

你有沒有試過看到在您的瀏覽器控制檯輸出,看它是否報告任何JavaScript錯誤?

+1

這是一個阿賈克斯調用 –

+0

@lazy_coder對,編輯答案。謝謝 – SirNarsh

+0

沒有,因爲你使用javascript來跟蹤使用AJAX的點擊和POST,表單方法是不相關的,因爲它沒有被使用。請注意,在您的地址欄中,它不會將您重定向到的網址爲 ?queries = things&something_else = like_this – SirNarsh

0

修正了它。

`sltAccess`='$slt', `intelAccess`='$intel' 

改變了它之間的空間

`sltAccess`='$slt',`intelAccess`='$intel' 

現在工作得很好,感謝大家的幫助,真的覺得有點傻,現在哈哈。

+0

這不可能是問題,空間就像是在查詢完全有效的任何區別。你必須改變別的東西,保證。 – Qirel

+0

絕對是別的問題,我故意在更新查詢中的每個逗號後留下空格 – SirNarsh