我将根据( id_patient )在一列中添加总金额( rialamount ),这对每个用户都是唯一的,并在页面上显示为总金额,然后管理员将能够根据( opening_date )搜索日期,到日期,以查看日期持续时间的总金额。
这是我的示例mysql db:
id_patient opening_date rialamount
1 2015-11-07 250000.00
1 2015-11-09 25000.00
1 2015-11-09 795864.15
1 2015-11-09 12598755.00
以下是我正在寻找的样本。
<label for="fromdate">From Date:</label>
<input size="4" id="fromdate" name="fromdate" value="" maxlength="4" type="text">
- <input size="2" id="dmonth" name="dmonth" value="" maxlength="2" type="text">
- <input size="2" id="dday" name="dday" value="" maxlength="2" type="text">
<label for="todate">To Date:</label>
<input size="4" id="todate" name="todate" value="" maxlength="4" type="text">
- <input size="2" id="dmonth" name="dmonth" value="" maxlength="2" type="text">
- <input size="2" id="dday" name="dday" value="" maxlength="2" type="text">
<h3>Total Amount in Date Duration is: </h3>
我真的很感谢你的帮助。
提前致谢。
答案 0 :(得分:2)
<强>模式强>
CREATE TABLE IF NOT EXISTS `amm` (
`id` int(11) NOT NULL,
`id_patient` int(11) NOT NULL,
`opening_date` varchar(255) NOT NULL,
`rialamount` double NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
数据强>
INSERT INTO `amm` (`id`, `id_patient`, `opening_date`, `rialamount`) VALUES
(1, 1, '2015-11-07', 250000),
(2, 1, '2015-11-09', 25000),
(3, 1, '2015-11-09', 795864.15),
(4, 1, '2015-11-09', 12598755);
SQL QUERY
SELECT SUM(rialamount) as sum_result
FROM amm
WHERE opening_date BETWEEN STR_TO_DATE('2015-11-07', '%Y-%c-%e') AND STR_TO_DATE('2015-11-09', '%Y-%c-%e')
GROUP BY id_patient;
<强> RESULT 强>
13669619.15
PHP / HTML非常简单的实现
<form action="" method="POST">
<h3>Total Amount is:</h3>
<hr>
<label for="fromdate">From Date:</label>
<input size="4" id="fromdate" name="fromdate" value="" maxlength="4" type="text">
- <input size="2" id="dmonth" name="dmonth" value="" maxlength="2" type="text">
- <input size="2" id="dday" name="dday" value="" maxlength="2" type="text">
<label for="todate">To Date:</label>
<input size="4" id="todate" name="todate" value="" maxlength="4" type="text">
- <input size="2" id="dmonth" name="tdmonth" value="" maxlength="2" type="text">
- <input size="2" id="dday" name="tdday" value="" maxlength="2" type="text">
<input type="submit" name="calculateFormSubmit" value="Get" />
<h3>Total Amount in Date Duration is: </h3>
</form>
<?php
if($_SERVER["REQUEST_METHOD"] == "POST" && array_key_exists("calculateFormSubmit", $_POST)) {
$connectionData = [
"server" => "",
"user" => "",
"pass" => "",
"database" => ""
];
$db = null;
try {
$db = new PDO("mysql:host=" . $connectionData["server"] . ";dbname=" . $connectionData["database"], $connectionData["user"], $connectionData["pass"]);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo $e->getMessage();
}
$dateFrom = (int)$_POST["fromdate"] . "-" . (int)$_POST["dmonth"] . "-" . (int)$_POST["dday"];
$dateTo = (int)$_POST["todate"] . "-" . (int)$_POST["tdmonth"] . "-" . (int)$_POST["tdday"];
$stmt = $db->prepare("SELECT SUM(rialamount) as sum_result, id_patient
FROM amm
WHERE opening_date BETWEEN STR_TO_DATE(:date_from, '%Y-%c-%e') AND STR_TO_DATE(:date_to, '%Y-%c-%e')
GROUP BY id_patient;");
$stmt->bindValue(":date_from", $dateFrom);
$stmt->bindValue(":date_to", $dateTo);
$stmt->execute();
$userData = $stmt->fetchAll(PDO::FETCH_ASSOC);
if($userData != false) {
foreach ($userData as $current) {
echo "<b>" . $current["id_patient"] . "</b> - " . $current["sum_result"] . "<br />";
}
}
if($db !== null) {
$db = null;
}
}
?>
答案 1 :(得分:0)
这里有空气代码,但这里有:
Select id, sum(rialamount) from table where Id = $id and date between $start and $end group by id
您可以在php表单中传递开始和结束参数。