如何在onclick函数中使用AJAX从数据库中删除内容

时间:2014-06-19 01:09:50

标签: php html sql ajax

我是php和整个网页设计的新手。我听说在这种情况下我可以同时使用php和ajax,不幸的是我不知道如何使用它们。请注意,我只写了两页,Despesas.php(表格)和Despesa.php(类)。另外两页不是我写的,我希望你们能解释他们应该如何工作(他们实际上并没有)以及问题是否在我写的页面内。 这是代码:

页面:Despesas.php

    <script type="text/javascript" src="ajax/despesa.js">

    </script>

    <form method="post" action="">
            <br/>
            <table>
                <tr><th>IDDespesa</th><th>Categoria</th><th>Metodo</th><th>Local</th><th>Valor</th><th>Data</th><th>Prioridade</th><th>Ações</th></tr>
                <?php
                $resd=Despesa::findAll();
                while ($rowd = $resd->fetch_object()) {
                    $nc=Categoria::findById($rowd->idcat);
                    $rownc=$nc->fetch_object();
                    $nm=Metodo::findById($rowd->idmet);
                    $rownm=$nm->fetch_object();
                    $nl=Local::findById($rowd->idmet);
                    $rownl=$nl->fetch_object();
                    echo'<tr><td>' . $rowd->iddes . '</td><td>' . $rownc->nome . '</td><td>' . $rownm->nome . '</td><td>' . $rownl->nome . '</td><td>' . $rowd->valor . '</td><td>' . $rowd->data . '</td><td>' . $rowd->prior . '</td><td><a onclick="return remDespesa();" href=#"' . $rowd->iddes . '>Remover</a></td></tr>';
                }
                ?>
            </table>
    </form>

这里我有一个表单,可以读取数据库中的所有内容,幸运的是它按预期工作。最后一列Ações(Actions)有一个链接,用于从数据库中删除Despesa(费用)的每一行。或者至少,它应该做的是:P

页面:despesa.js

function remDespesa(id) {
    var res = false;
    if (confirm("Deseja apagar despesa?")) {
        var xmlHttp = new XMLHttpRequest();
        var parms = "operacao=remDesp&id=" + id;
        xmlHttp.onreadystatechange = remDespesaCompleted;
        xmlHttp.open("POST", "controller/apagarDespesa.php");
        xmlHttp.setRequestHeader("Content-type", "application/x-WWW-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", parms.length);
        xmlHttp.setRequestHeader("Connection", "close");
        xmlHttp.send(parms);
        res = true;
    }
    return(res);
}

function remDespesaCompleted() {
    if (this.readyState == 4 && this.status == 200) {
        var divMsg = document.getElementById("msg");
        var res = this.responseText;
        var obj = JSON.parse(res);
        if (obj.info != undefined) {
            divMsg.innerHTML = obj.info;
            var tabela = document.getElementById(Despesas);
            tabela.innerHTML = obj.tabela;
        } else if (obj.error != undefined) {
            divMsg.innerHTML = obj.error;
        }
    }
}

这是我得到的ajax代码,我没有写这个。我想知道你们是否能看出它是否有意义。虽然我理解第一个功能,但第二个功能完全不同。

页面:apagarDespesa

require_once '../class/Despesa.php';

if (isset($_POST['operacao'])) {
    $operacao = $_POST['operacao'];
    if ($operacao == "remDesp"){
        $msg=Despesa::remDesp();
        if(isset($msg['info'])){
        ob_start();

        require "../pages/Despesas.php";
        $msg['tabela']=ob_get_contents();
        ob_end_clean();
        }


        $str=  json_encode($msg);
        echo $str;
    }
}

我理解这里的一些事情:D

要完成,这里是Despesa类,猜猜我只会写上面使用的2种方法:

public static function remDesp($id) {
        if (isset($_POST['id'])) {
            $id = $_POST['id'];
            $d = new Despesa();
            $d->id = $id;
            $res = $d->delete();
            if ($res) {
                $msg['info'] = 'Despesa Apagada com sucesso';
            } else {
                $msg['error'] = 'Despesa Apagada com sucesso';
            }
        } else {
            $msg['error'] = 'Pedido invalido';
        }
        return ($msg);
    }
public function delete(){
        $db=DB::getInstance();
        $sql="DELETE FROM despesa WHERE iddes=".$this->iddes;
        $res=$db->query($sql);
        return($res);
    }

无论如何,任何帮助都很乐意接受。 谢谢你的时间。

0 个答案:

没有答案