我还是一个新手php程序员。请帮我解决这个问题。我想编个时间线。我卡在查询部分了。假设我有一个包含月份的select元素。如果我想选择7月,时间轴将显示2014年7月列出的所有事件。如果已经是2015年了呢?我的查询保持静态(BETWEEN '2014-07-01 00:00:00' AND '2014-07-31 23:59:59'";)
<?php
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("prototype") or die(mysql_error());
if(isset($_POST['submit'])) {
if($_POST['month'] == 'July') {
$sql = "SELECT * FROM events WHERE event_schedule BETWEEN '2014-07-01 00:00:00' AND '2014-07-31 23:59:59'";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
echo "Title:".$row['event_title']."<br>";
echo "Description:".$row['event_description']."<br>";
echo "Schedule:".$row['event_schedule']."<br>";
echo "Date Created:".$row['date_created']."<br>";
echo "Posted By:".$row['posted_by']."<br>";
}
}
if($_POST['month'] == 'August') {
$sql = "SELECT * FROM events WHERE event_schedule BETWEEN '2014-08-01 00:00:00' AND '2014-08-31 23:59:59'";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
echo "Title:".$row['event_title']."<br>";
echo "Description:".$row['event_description']."<br>";
echo "Schedule:".$row['event_schedule']."<br>";
echo "Date Created:".$row['date_created']."<br>";
echo "Posted By:".$row['posted_by'];
}
}
}
echo date("F Y");
?>
<html>
<form method="post">
<select name="month">
<option selected="selected">Select a month...</option>
<option>January</option>
<option>February</option>
<option>March</option>
<option>April</option>
<option>May</option>
<option>June</option>
<option>July</option>
<option>August</option>
<option>September</option>
<option>October</option>
<option>November</option>
<option>December</option>
</select>
<input type="submit" name="submit" value="Submit">
</form>
</html>
可以在查询文本中嵌入PHP变量。因此,您可以使用date():
提取当前年份$queryYear = date('Y');
$sql = "SELECT * FROM events WHERE event_schedule BETWEEN '{$queryYear}-07-01 00:00:00' AND '{$queryYear}-07-31 23:59:59'";
你可以试试这样
$sql = "SELECT * FROM event_schedule LIKE '%-07-%'";
如前所述,您应该考虑更改代码以使用MYSQLi或PDO函数。Mysql_* functions已弃用
关于你的回答,我想提出两点建议。
1 -在html表单
中添加月份值<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
...
2 -只用一组代码改变你的PHP,你不需要测试每个案例和重复你的代码。像这样:
if(isset($_POST['submit'])) {
/*AGAIN THIS IS NOT RECOMMENDED AS IT CAN BE SQLInjected*/
$sql = "SELECT *
FROM events ";
if ($_POST['month']!=''){
$sql .= " WHERE extract(YEAR from event_schedule) = extract(YEAR from now())
and extract(MONTH from event_schedule) = $_POST['month']";
}
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
echo "Title:".$row['event_title']."<br>";
echo "Description:".$row['event_description']."<br>";
echo "Schedule:".$row['event_schedule']."<br>";
echo "Date Created:".$row['date_created']."<br>";
echo "Posted By:".$row['posted_by']."<br>";
}
}