应用“this”jQuery,从sql数据库中删除php中的回显行

时间:2015-04-09 00:50:32

标签: php jquery mysql row

这是我目前的计划:

单击某行选择或获取该行的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'.
       '&nbsp;'.
       $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,以便我用它来识别要删除的行。

2 个答案:

答案 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()的第二个参数使其成为委托事件,这意味着您可以使用相同的卸妆标记将新项目添加到现有集合中,并且新的删除按钮也可以使用。