gpt4 book ai didi

php - jEditable 只采用一个 id

转载 作者:行者123 更新时间:2023-11-29 00:48:00 25 4
gpt4 key购买 nike

好的。我是 jEditable 的新手。让我解释一下我在使用 jEditable 时遇到的问题。

我的数据库中有这个简单的表 -

id  car        make 
1 panamera porsche
2 italia ferraris
3 avantador lamborghini
4 slk mercedes

我将在 while 循环中回显此表,下面是代码 -

<script type="text/javascript">
<?php
$query2 = "SELECT * FROM inplace LIMIT 0, 6";
$result2 = mysql_query($query2) or die ('Query couldn\'t be executed');
$row2 = mysql_fetch_assoc($result2);
?>

$(function() {
$(".items").editable("handler.php", {
submitdata : {userid: "<?php echo $row2['id']; ?>"},
indicator : "<img src='img/indicator.gif'>",
tooltip : "Doubleclick to edit...",
event : "click",
onblur : "submit",
name : 'newvalue',
id : 'elementid',

});
});
</script>

</head>
<body>

<ul>
<?php
$query = "SELECT * FROM inplace LIMIT 0, 6";
$result = mysql_query($query) or die ('Query couldn\'t be executed');
while ($row = mysql_fetch_assoc($result)) {

echo '<li class="items" id="car">'.$row['car'].'</li>';
echo '<li class="items" id="make">'.$row['make'].'</li>';
}

?>
</ul>

在上面的代码中,我传递了 newvalue (用户编辑)和 elementid (汽车或品牌)在 jeditable 脚本中。而且我还需要一个标识符来帮助识别要更新的正确数据库 ID。所以我试图在 submitdata : {userid: "<?php echo $row2['id']; ?>"} 中传递数据库 ID .我不确定该方法是否正确。

下面是“handler.php”文件中的更新查询 -

require("db.php");

function fail($msg) {
header('HTTP/1.0 404 Not Found');
die($msg);
}

$id = (int)@$_POST['userid'];

$field = @$_POST['elementid'];

$allowed_fields = array('car','make');
if (!in_array($field, $allowed_fields)) fail('Invalid or missing field.', 404);
$newvalue = $_POST['newvalue'];
$query = "UPDATE inplace SET `$field`='$newvalue' WHERE id=$id";
$result = mysql_query($query);
echo $newvalue;

所以这里的问题是,这个submitdata : {userid: "<?php echo $row2['id']; ?>"}仅传递第一个 ID。这意味着它只传递一个 id。所以即使你编辑 italiaavantador分别属于 id 2 和 3,它更新 1st id。当我回应查询时,无论您编辑哪辆车,它总是显示为 UPDATE inplace SETcar='volante' WHERE id=1 .当我直接在提交数据中写入 2 或 3 或 4 时,它会正确更新。它只传递一个 id。有人建议我使用 like id="car-'.$row['id'].'"然后爆炸它然后使用 foo 和东西。我尝试使用它但对我不起作用。正在为此寻找解决方案。

最佳答案

您可以在 <li> 中创建自定义属性包含 ID 号的标签。然后在您的 jQuery 中,您只需获取该值。

<script type="text/javascript">

$(function() {

$("li.items").each(function(index) {

$(this).editable("handler.php", {
submitdata : {userid: $(this).attr('carid')},
indicator : "<img src='img/indicator.gif'>",
tooltip : "Doubleclick to edit...",
event : "click",
onblur : "submit",
name : 'newvalue',
id : 'elementid',
});

});

});

</script>

</head>
<body>

<ul>

<?php
$query = "SELECT * FROM inplace LIMIT 0, 6";
$result = mysql_query($query) or die ('Query couldn\'t be executed');
while ($row = mysql_fetch_assoc($result)) {
echo '<li class="items" carid="'.$row['id'].'" id="car">'.$row['car'].'</li>';
echo '<li class="items" carid="'.$row['id'].'" id="make">'.$row['make'].'</li>';
}
?>

</ul>

免责声明:我没有对此进行测试,我对 jQuery 语法不是 100% 确定。

[编辑] 我只是将其更改为希望使用 $(this) 工作选择器引用每个特定的 <li> .

关于php - jEditable 只采用一个 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9748127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com