【发布时间】:2016-06-25 04:07:56
【问题描述】:
我有一些 JQuery 代码允许在线编辑 MySQL 表而无需用户提交。它使用 JQuery 和 AJAX 调用来更新数据库。它适用于元素内的数据,但是当我想更新元素内的某些内容时,我似乎无法在选择该选项时调用 selected="selected" 。在查看 AJXA 正在创建的 SQL 时,所有可用的选项都在提交的 SQL 语句中。
我做错了什么还是需要采取另一条路线?这是我的代码的简化版本。我希望这足以理解我想要完成的事情。感谢您提供的任何帮助或指导。
我有一个网页 (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 没有将正确的查询传递给数据库。
再一次,这只发生在 .效果很好。
这是我的 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");
}
});
}
还有我的 saveit.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 的开发者。工具网络 - 在这里预览是我得到的
更新 members_v30 设置代码 1 = ' ABAAR ABHM APRN ' 哪里 id=1
所以你可以看到每个选项都被通过了。
任何意见、批评或??将不胜感激。提前谢谢你。
【问题讨论】:
标签: jquery select edit contenteditable