【发布时间】:2020-06-28 21:07:58
【问题描述】:
我有一张这样的桌子
id | date | category | concept | amount
该类别有 2 个可能的选项:收入和结果
因此,例如,我的表格可能如下所示:
id | date | category | concept | amount
----------------------------------------------------
1 | 2020-01-20 | income | tv sale | 200
2 | 2020-01-20 | income | radio sale | 100
3 | 2020-01-20 | income | pc sale | 500
4 | 2020-01-25 | outcome | salary payment | 600
根据该表,我需要做以下帐户:当类别为收入时,将所有类别项目相加,当类别为结果时减去,以给我总现金。
基本上200+100+500-600 = 200
我想在我的 pos 的标题中显示该结果,这是一个屏幕截图,可以提供一个想法:
我应该如何在我的 PHP 代码中进行 SQL 查询?我这里用的PDO是模型代码:
static public function mdlIngresarMovimiento($tabla, $datos){
$stmt = Conexion::conectar()->prepare("INSERT INTO $tabla(fecha, categoria_cd, concepto, observacion_cd, monto) VALUES (:fecha, :categoria_cd, :concepto, :observacion_cd, :monto)");
$stmt->bindParam(":fecha", $datos["fecha"], PDO::PARAM_STR);
$stmt->bindParam(":categoria_cd", $datos["categoria_cd"], PDO::PARAM_STR);
$stmt->bindParam(":concepto", $datos["concepto"], PDO::PARAM_STR);
$stmt->bindParam(":observacion_cd", $datos["observacion_cd"], PDO::PARAM_STR);
$stmt->bindParam(":monto", $datos["monto"], PDO::PARAM_INT);
if($stmt->execute()){
return "ok";
}else{
return "error";
}
$stmt->close();
$stmt = null;
}
这是我的控制器:
static public function ctrCrearMovimiento(){
if(isset($_POST["fechaMovimiento"])){
if(preg_match('/^[a-zA-Z0-9ñÑáéíóúÁÉÍÓÚ ]+$/', $_POST["categoriaMovimiento"]) &&
preg_match('/^[a-zA-Z0-9ñÑáéíóúÁÉÍÓÚ ]+$/', $_POST["entradaConcepto"]) &&
preg_match('/^[a-zA-Z0-9ñÑáéíóúÁÉÍÓÚ ]+$/', $_POST["observacionMovimiento"])){
$tabla = "caja_diaria";
$datos = array("id"=>$_POST["idMovimiento"],
"fecha"=>$_POST["fechaMovimiento"],
"categoria_cd"=>$_POST["categoriaMovimiento"],
"concepto"=>$_POST["entradaConcepto"],
"observacion_cd"=>$_POST["observacionMovimiento"],
"monto"=>$_POST["montoMovimiento"]);
$respuesta = ModeloCajaDiaria::mdlIngresarMovimiento($tabla, $datos);
if($respuesta == "ok"){
echo'<script>
swal({
type: "success",
title: "El movimiento ha sido guardado correctamente",
showConfirmButton: true,
confirmButtonText: "Cerrar"
}).then(function(result){
if (result.value) {
window.location = "caja-diaria";
}
})
</script>';
}else{
echo'<script>
swal({
type: "error",
title: "¡El movimiento no puede ir vacío!",
showConfirmButton: true,
confirmButtonText: "Cerrar"
}).then(function(result){
if (result.value) {
window.location = "caja-diaria";
}
})
</script>';
}
}
}
}
提前致谢。
【问题讨论】: