我有一些JQuery代碼,允許在線編輯MySQL表格,而不需要用戶提交。它使用JQuery和AJAX調用來更新數據庫。它適用於元素內的數據,但是當我想要更新元素內的某些元素時,我似乎無法在選擇該選項時調用selected =「selected」。在審查AJXA正在創建的SQL時,所有可用的選項都在提交的SQL語句中。JQuery在線編輯由MySQL表填充的HTML選擇元素。 Contenteditable
我在做什麼錯誤或我需要採取另一條路線?這是我的代碼的簡化版本。我希望足夠了解我想要完成的事情。我感謝您提供的任何幫助或方向。
我有一個網頁(members.php),它調用MySQL表(members_v30)來檢索成員數據,另一個調用來從member_credentials表中獲取選項來填充字段以顯示和編輯需要的成員證書。
<?php
//Create DB Object
$db = new Database;
//Query
$query = "SELECT * from members_v30 ORDER BY last_name ASC";
//Run Query
$members = $db->select($query);
?>
<?php
//Query
$query = "SELECT * from member_credentials ORDER BY credential ASC";
//Run Query
$credentials = $db->select($query);
?>
該表和成員的憑據的人口效果很好。我可以編輯元素內的任何東西。我也有代碼將根據與數據庫表匹配的相同條件選擇適當的選項。 (注意:我可能會將這個問題中的代碼作爲詳細購買顯示證書循環,因爲我認爲它與該問題沒有任何關係,我認爲它與contenteditable和select有關。)
<?php while($row = $members->fetch_assoc()) : ?>
<tr class="table-row">
<!-- edit saveToDatabase(this,'xxxxxxxx') -->
<td contenteditable="true" onBlur="saveToDatabase(this,'last_name','<?php echo $row['id']; ?>')" onClick="showEdit(this);"><?php echo $row['last_name']; ?></td>
<td contenteditable="true" onBlur="saveToDatabase(this,'first_name','<?php echo $row['id']; ?>')" onClick="showEdit(this);"><?php echo $row['first_name']; ?></td>
<td contenteditable="true" onBlur="saveToDatabase(this,'initial','<?php echo $row["id"]; ?>')" onClick="showEdit(this);"><?php echo $row["initial"]; ?></td>
<td contenteditable="true" onBlur="saveToDatabase(this,'suffix','<?php echo $row["id"]; ?>')" onClick="showEdit(this);"><?php echo $row["suffix"]; ?></td>
<td>
<select name="code1" contenteditable="true" onChange="saveToDatabase(this,'code1','<?php echo $row["id"]; ?>')" onClick="showEdit(this);">
<?php mysqli_data_seek($credentials,0); ?>
<?php while($row2 = $credentials->fetch_assoc()) : ?>
<option value="<?php echo $row2['credential']; ?>" <?php if ($row2['credential'] == $row['code1']) echo 'selected="selected"'; ?> ><?php echo $row2['credential']; ?></option>
<?php endwhile; ?>
</select>
<?php //echo $row["code1"]; ?>
</td>
</tr>
<?php endwhile; ?>
我的問題是,當我選擇另一個選項,我似乎沒有得到selected =「selected」屬性,然後我的JQuery/AJAX不會傳遞正確的查詢到數據庫。
一旦agiain,這隻發生在。效果很好。
這裏是我的JavaScript(edit.js)...
function showEdit(editableObj) {
$(editableObj).css("background","#FFF");
}
function saveToDatabase(editableObj,column,id) {
$(editableObj).css("background","#FFF url(loaderIcon.gif) no-repeat right");
$.ajax({
url: "saveedit.php",
type: "POST",
data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id,
success: function(data){
$(editableObj).css("background","#FDFDFD");
}
});
}
而且我savedit.php
<?php include 'libraries/Database.php'; ?>
<?php
//Create DB Object
$db = new Database;
//Query
$query = "UPDATE members_v30 set " . $_POST["column"] . " = '".$_POST["editval"]."' WHERE id=".$_POST["id"];
//Run Query
//echo $query ; // Will be shown in Chrome Developer Tools
$update_members = $db->update_members($query);
?>
使用Chrome的開發。工具網絡 - 在這裏預覽是我得到
UPDATE members_v30集編碼1 = ' ABAAR ABHM APRN ' WHERE ID = 1
所以,你可以看到每一個選項被傳遞。
任何投入,批評或??將不勝感激。先謝謝你。