이런 테이블이 있어요
id | date | category | concept | amount
카테고리에는 소득과 결과의 두 가지 옵션이 있습니다.
예를 들어 내 테이블은 다음과 같이 보일 수 있습니다.
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
내 위치의 헤더에 그 결과를 표시하고 싶습니다. 여기에 아이디어를 제공하는 스크린 샷이 있습니다.
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>';
}
}
}
}
미리 감사드립니다.
조건부 합계를 사용하여 SQL에서 직접 계산을 수행 할 수 있습니다.
select sum(case when category = 'income' then amount else -amount end) total_sales
from mytable
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다