【发布时间】:2017-06-08 14:29:08
【问题描述】:
我正在按照教程制作简单的网络应用程序,并且我可以使用 jeditable 进行就地编辑。
一切正常,除了新值没有保存到数据库中。 mysql日志让我相信“listItemID”没有通过,因为它显示了如下执行的语句:
UPDATE list_items
SET ListText='Test123'
WHERE ListItemID=''
LIMIT 1
我的 index.php 中有这个:
bindAllTabs("#list li span");
这是在我的 js 文件中:
function bindAllTabs(editableTarget) {
// CLICK-TO-EDIT on list items
$(editableTarget).editable("db-interaction/lists.php", {
id : 'listItemID',
indicator : 'Saving...',
tooltip : 'Double-click to edit...',
event : 'dblclick',
submit : 'Save',
submitdata: {action : "update"}
});
}
我的 list.php 中有这个
<?php
session_start();
include_once "../inc/constants.inc.php";
include_once "../inc/class.lists.inc.php";
if(!empty($_POST['action'])
&& isset($_SESSION['LoggedIn'])
&& $_SESSION['LoggedIn']==1)
{
$listObj = new ColoredListsItems();
switch($_POST['action'])
{
case 'add':
echo $listObj->addListItem();
break;
case 'update':
$listObj->updateListItem();
break;
case 'sort':
$listObj->changeListItemPosition();
break;
case 'color':
echo $listObj->changeListItemColor();
break;
case 'done':
echo $listObj->toggleListItemDone();
break;
case 'delete':
echo $listObj->deleteListItem();
break;
default:
header("Location: /");
break;
}
}
else
{
header("Location: /");
exit;
}
?>
然后在 class.lists.inc.php 中:
public function updateListItem()
{
$listItemID = $_POST['listItemID'];
$newValue = strip_tags(urldecode(trim($_POST["value"])), WHITELIST);
$sql = "UPDATE list_items
SET ListText=:text
WHERE ListItemID=:id
LIMIT 1";
if($stmt = $this->_db->prepare($sql)) {
$stmt->bindParam(':text', $newValue, PDO::PARAM_STR);
$stmt->bindParam(':id', $listItemID, PDO::PARAM_INT);
$stmt->execute();
$stmt->closeCursor();
echo $newValue;
} else {
echo "Error saving, sorry about that!";
}
}
我花了几个小时试图弄清楚这一点。我希望有一个人可以帮助我。谢谢!
【问题讨论】:
标签: php jquery mysql pdo jeditable