这是我目前的计划:
单击某行选择或获取该行的id,然后将此id传递给最有可能通过AJAX或HTTP请求的删除脚本。我遇到的问题是如何使用“this”来识别点击中的行,如下所示:
$( this ) {
// get id and send to delete script
}
我已经回显了行,所以我有id行
<?php
require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR.'dbconnect.php');
$link = new mysqli("$servername", "$username", "$password", "$dbname");
$query = "SELECT COUNT(*) FROM entries";
if ($result = $link->query($query)) {
/* fetch object array */
while ($row = $result->fetch_row()) {
if($row[0]==0){
echo "There are no entries.";
}else {
$query2 = "SELECT id,saying,date,thumbs_up,comments FROM entries ORDER by ID ASC ";
if (($result = $link->query($query2))) {
/* fetch object array */
while ($row = $result->fetch_row()) {
echo
'<div class="container" align="center"">'.
'<div class="entry-container" align="left">'.
$row[1]." ".
'</div>'.
'<div class="x" align="center">'.
'<button class="red" name="remove" onclick="remove_entry();">remove entry'.
' '.
$row[0].
'</button>'.
'</div>'.
'</div>'.
'<br>'
;
}
}
}
}
/* free result set */
$result->close();
}
?>
remove_entry();
尚未执行任何操作,可能会将id发送到删除脚本,然后使用DELETE命令删除该行
<script type="text/javascript">
function remove_entry() {
var answer = confirm("Delete this entry?")
if (answer){
//some code
}
else{
//some code
}
}
</script>
最直接,最有效/最有效的方式是什么?
我甚至不想显示id,只需使用简单的x作为删除按钮,我回显了id,以便我用它来识别要删除的行。
答案 0 :(得分:1)
使用jQuery可以:
HTML
<div class="entry-container" align="left" id="'.$row[0].'">
JS
$(function(){
$('button.red').click(function(){
var $row = $(this).closest('.entry-container'),
rowId = $row.attr('id');
$.post('/path/to/server', {id: rowId}, function(resp){
if(resp =='ok'){
$row.slideUp(function(){ $row.remove() });
}
});
});
});
然后删除您的内嵌onclick
在PHP中,使用$_POST['id']
接收id并在传递给db query
答案 1 :(得分:1)
对于初学者,不要使用2个SQL查询。只需执行用于获取数据的数据,如果没有行,则提供不同的输出。
使用语义标记,如下所示:
'<button type="button" class="remover" id="entry-' . $row[0] . '">remove this entry</button>'
然后在你的jQuery中,使用这样的东西:
$(function() {
$('.entries').on('click', '.remover', function() {
var eId = this.id.replace(/^\D+/, '');//since IDs should not start with a number
$.post(
'/your/delete/endpoint/',
{
id: eId
},
function(data) {
if (data.ok) {//sending JSON responses are easier to debug and you can add to them later without breaking things
//remove row
}
else {
//display error message
}
}
);
});
});
on()
的第二个参数使其成为委托事件,这意味着您可以使用相同的卸妆标记将新项目添加到现有集合中,并且新的删除按钮也可以使用。