我正在为此而挣扎,请一些人帮忙。我不是html或php专家。
我创建了一个简单的网页,通过每次更改select语句,从mysql数据库中提取最近7天、10天等的记录。一直到这里都很好。但是每次更改select语句都很痛苦,相反,我想创建一个简单的下拉列表。
我添加了一个简单的下拉列表,其中包含日期列表,如1(表示一天的记录)、7-7天的记录等。一旦用户选择7,它就必须跳转到提取7天记录的查询,然后继续。但是我在这里做错了什么,我不能执行它。
这是我的代码
<!DOCTYPE html>
<html>
<head>
<title>PHP</title>
</head>
<body>
<p>
<select name="value">
<option value="7">7</option>
<option value="1">1</option>
</select>
<?php
$dbh = mysqli_connect("","", "", "");
if (!$dbh) {
echo "Error: Unable to connect to mysqli." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
print ("<h1>Metrics</h1>");
print ("<table class='"hovertable'">'n");
if($_POST['value'] == '7')
{
// query to get 7 records
$select="select * from table where FROM_UNIXTIME(date)>= (NOW() - INTERVAL 7 DAY)";
}
else
{
// query to get 1 records
$select="select * from table where FROM_UNIXTIME(date)>= (NOW() - INTERVAL 1 DAY)";
}
$result = $dbh->query($select);
print "Total records :". ' '. $result->num_rows ;
if ($result->num_rows > 0)
{
while ($row = $result->fetch_assoc())
{
// Capture each record
$data = array('row'=>$row);
print ("<tr>");
print ("<td style='"white-space: nowrap'"> $ID</td>");
print ("<td style='"white-space: nowrap'"> $department</td>");
print ("<td style='"white-space: nowrap'"> $customername</td>");
print ("<td style='"white-space: nowrap'"> $date</td>");
print ("</tr>'n");
}
}
else
{
echo "0 results";
}
exit;
?>
$dbh->close();
</p>
</body>
</html>
我看到您在这里检查用户发布的值:
$_POST['value']
但我没有看到你在哪里以及如何将这个值发布到页面上。也许你需要一个表格和一个提交按钮来发布所选值:
<form action="youpage.php" method="post">
//your dropdown code here
<input type="submit" value="Submit">
</form>
您可以通过表单或JavaScript发布select的值。
使用一个表单看起来像:
<form method="post">
<select name="value">
<option value="7">7</option>
<option value="1">1</option>
</select>
<input type="submit" value="go" />
</form>
使用JavaScript
<form method="post" >
<select name="value" onchange="this.form.submit()">
<option value="7">7</option>
<option value="1">1</option>
</select>
</form>
如果您不想重新加载整个页面,则需要将查询和表分离或复制到另一个PHP页面中,并使用XHR提交表单。
更新为包含一个创建选择选项的函数。
<?php
Function ddform_Interval($array) {
// generates the dropdown selects based on values in array
$result = "";
$post = 1; // default post value
IF (isset($_POST['value'])) {
// validate the post value. It must match a value in array
IF (in_array($_POST['value'], $array)) { $post = $_POST['value']; }
}
Foreach($array as $value) {
IF ($post == $value) { $result .= "<option selected value='"".$value."'">".$value."</option>";
}ELSE{ $result .= "<option value='"".$value."'">".$value."</option>";
}
}
return $result;
}
$allowed_postvals = array('1', '7'); // add more values to add select options
$result = "";
$dbh = mysqli_connect("","", "", "");
if (!$dbh) {
echo "Error: Unable to connect to mysqli." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
// set & validate post value
IF (isset($_POST['value'])) {
IF (in_array($_POST['value'], $allowed_postvals)) { $postvalue = $_POST['value']; }ELSE{ $postvalue = '1'; }
}ELSE{
$postvalue = 1;
}
$query = "SELECT * FROM table WHERE FROM_UNIXTIME(date)>= (NOW() - INTERVAL ".$postvalue." DAY)";
$sql = $dbh->query($query);
if ($sql->num_rows > 0) {
$result .= "Total records :". ' '. $sql->num_rows ;
$result .= "<table class='"hovertable'">'n";
while ($row = $sql->fetch_assoc()) {
// Capture each record
$data = array('row'=>$row);
$result .= "<tr>";
$result .= "<td style='"white-space: nowrap'"> ".$row['ID']."</td>";
$result .= "<td style='"white-space: nowrap'"> ".$row['department']."</td>";
$result .= "<td style='"white-space: nowrap'"> ".$row['customername']."</td>";
$result .= "<td style='"white-space: nowrap'"> ".$row['date']."</td>";
$result .= "</tr>'n";
}
$result .= "</table>'n";
}else{
$result .= "0 results";
}
$dbh->close();
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP</title>
</head>
<body>
<p>
<form action="" name="form" method="post">
<select name="value"><?php echo(ddform_Interval($allowed_postvals)); ?></select>
<input type="submit" name="submit" value="Submit">
</form>
</p>
<h1>Metrics</h1>
<?php echo($result); ?>
</body>
</html>