我是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);
}
无论如何,任何帮助都很乐意接受。 谢谢你的时间。