更新,删除,编辑数据

时间:2018-02-19 02:21:02

标签: php jquery css ajax

我的英语不好。抱歉。我相信你明白我的意思。 我在下面分享的代码询问是否有新内容,如果有,请将新内容添加到页面。但我不知道更新或删除相同或不同(id)需要什么逻辑。如何进行更新和删除?

的index.php

<?php require "ayar.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>jQuery Ajax ile Anlık Veri Güncelleme Uygulaması</title>
    <style type="text/css">
    ul, li {padding: 0; margin: 0; list-style: none; font: 14px Arial}
    ul li {padding: 5px; background: #eee; margin-bottom: 5px}
    ul li.new {background: lightgreen}
    </style>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script type="text/javascript" src="ajax.js"></script>
</head>
<body>

<ul>
    <?php
    $query = mysql_query("SELECT * FROM veri ORDER BY veri_id DESC");
    while ($row = mysql_fetch_object($query)){
        echo '<li id="'.$row->veri_id.'">'.$row->veri_text.'</li>';
    }
    ?>
</ul>

<div id="sonuc"></div>

</body>
</html>

ajax.php

<?php

    require "ayar.php";

    if ($_POST){

        $lastid = $_POST["lastid"];
        if (!$lastid){
            $array["hata"] = "Geçersiz işlem!";
        } else {

            $query = mysql_query("SELECT * FROM veri WHERE veri_id > $lastid ORDER BY veri_id DESC");
            if (mysql_affected_rows()){
                while ($row = mysql_fetch_object($query)){
                    $array["veriler"] = '<li class="new" id="'.$row->veri_id.'">'.$row->veri_text.'</li>';
                }
            }

        }

        echo json_encode($array);

    }

?>

ajax.js

$(function () {

    $ajaxLoad = function () {

        var lastid = $("ul li:first").attr("id");

        $.ajax({
            type: "post",
            url: "ajax.php",
            data: {"lastid": lastid},
            dataType: "json",
            success: function (result) {
                if (result.error) {
                    $("#result").html(result);

                }
                else{
                    $("ul").prepend(result.data);
                }
            }

        });
    }
    setInterval("ajaxLoad()",5000);

3 个答案:

答案 0 :(得分:1)

在使用jQuery的Javascript中,您可以:

  • 使用$( "selector" ).length检查元素是否存在
  • 使用$( "selector" ).remove()删除项目。
  • 使用$( "selector" ).html()更新内容。

其中selector是rowid(例如:#123

因此,在您的成功处理程序中,您可以将$("ul").prepend(result.data);替换为:

  1. 获取现有<li> id列表的内容(示例:idList = jQuery.map(jQuery("ul li"),function(e){return e.id})
  2. 要检查新结果是否存在(例如:idList.indexOf(results.data.test(/id="(.*?)"/) > 0
  3. ...然后决定是否插入/更新/删除列表。

答案 1 :(得分:1)

根据您的代码,您每5秒钟通过ajax查询更新或加载数据。 $ajaxLoad()是一个函数而不是字符串。所以你的setInterval函数应该是这个

        setInterval($ajaxLoad(), 5000)

删除相同或不同的ID:
当您想要删除时?在执行click之类的任何特定操作后,如果是,那么您也可以通过ajax查询执行此操作。

答案 2 :(得分:0)

在ajax.js的最后一行,你错过了函数名称上的美元符号$,你应该有setInterval("$ajaxLoad()",5000);