我有一个包含一些PHP的页面,如下所示:
<table>
<thead>
<tr>
<th class="wheniwant">Date</th>
<th class="wheniwant">Income Amount</th>
<th class="wheniwant">Expense Amount</th>
</tr>
</thead>
<?php
//DB CONNECTION
$varDatePaid = ""; $varIncomePaid =""; $varExpensePaid = "";
$sql = mysql_query(
"
SELECT DATE_FORMAT(`date_paid`, '%Y-%m') `date_paid`,
SUM(CASE WHEN `categoryType` = 'Income' THEN `amount_paid` END) `IncomeAmount`,
SUM(CASE WHEN `categoryType` = 'Expense' THEN `amount_paid` END) `ExpenseAmount`
FROM `accounting`
GROUP BY DATE_FORMAT(`date_paid`, '%Y-%m')
"
);
while($row = mysql_fetch_array($sql))
{
$varDatePaid = $row['date_paid'];
$varIncomePaid = $row['IncomeAmount'];
$varExpensePaid = $row['ExpenseAmount'];
?>
<tr>
<td><?php echo $varDatePaid; ?></td>
<td><?php echo $varIncomePaid; ?></td>
<td><?php echo $varExpensePaid; ?></td>
</tr>
<?php
}
?>
</table>
返回如下表格:
我想添加一些内容:
$sql_query = "SELECT id, DATE_FORMAT(`date_paid`, '%Y') AS year FROM accounting GROUP BY year ORDER BY year DESC";
$result = mysql_query($sql_query) or die(mysql_error());
while ($row = mysql_fetch_array($result)){
echo '<option value='. $row['year'] . '>'. $row['year'] . '</option>';
创建某种过滤器以将结果限制为特定年份。如何在不离开页面的情况下执行此操作?
答案 0 :(得分:0)
您还没有真正提供足够的信息或您尝试过的任何内容。
你需要一个HTML表单,其上有<select>
个框,它们有一个唯一的ID,所以你可以通过$ _POST获取PHP中的值,然后将它们输入到SQL中的“在哪里“陈述。
E.g。
<form action="script.php" method="post">
<select id="filter">
<option value="value1">Value 1</option>
<option value="value2">Value 2</option>
<option value="value3">Value 3</option>
</select>
<input type="submit" value="Filter">
</form>
在script.php中:
<?php
// DB connect
$filter = $_POST['filter'];
$query = "
SELECT *
FROM TableName
WHERE field_to_filter = '$filter'
ORDER BY something ASC
"
//etc
?>
请注意,这是一个非常简短的例子。根据您的具体操作,它会有很大差异。此外,这不会考虑从表单接受用户输入并将其传递给SQL的任何安全问题。
如果script.php是当前页面,按下提交按钮只会刷新页面,并且过滤器已就位。还需要更多代码,例如确保选择框的前一个选择仍处于活动状态。如果你不想刷新页面,那么就需要像jQuery这样的东西,如果你之前没有使用它会增加另一层次的复杂性。
答案 1 :(得分:0)
首先在html中定义下拉列表,并在所选值更改时提交:
<form id="myForm" action="samePage.php" method="post">
<select id="mySelection" name="mySelection" onChange="$('#myForm').submit();">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</form>
并修改php中的查询以按所选值过滤:
$sql = mysql_query(
"
SELECT *
FROM TableName
where ColumnName like '%" . mysql_real_escape_string($_POST['mySelection']) . "%'
ORDER BY something ASC
"
);
我没有测试代码,但你应该从这里得到这个想法。我假设您使用jquery作为 $('#myForm')。submit()脚本。