【发布时间】:2016-03-18 23:42:50
【问题描述】:
我有一个在 HTML 网页上实现的 SQL 数据库。我希望用户能够在搜索框中输入值并搜索下拉菜单中指定的表的列。
例如:表格上有 3 列 - 'first name'、'second name' 和 'surname'。用户可以在下拉菜单中选择这些列名之一,然后在搜索框中输入他们想要在指定列中搜索的内容。假设他们选择了“姓氏”列,并想在该列中搜索“约翰逊”。
结果应显示所有带有“Johnson”的姓氏,并显示找到的每个姓氏的其余部分。我的数据库有点不同并且比这更大,但它的应用相同。我当前的代码可以在下面找到:
<head>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
<meta charset="utf-8" />
<title>The 24 Hour Race</title>
<div id="title">
<a href="index.php"><img src="images/title.png"></img></a>
</div>
<p id="subtitle">For the toughest of the tough</p>
</head>
<body>
<div id="nav">
<form method="post" action="index.php?go" id="searchform">
<br>
<h3>Search in:</h3><select name="field">
<option value="rider_no.">Rider No.</option>
<option value="category">Category</option>
<option value="name">Name</option>
<option value="team_name">Team Name</option>
<option value="nationality">Nationality</option>
<option value="year_participated">Year Participated</option>
<option value="total_laps">Total Laps</option>
<option value="fastest_lap">Fastest Lap</option>
</select>
<input type="text" name="key">
<input type="submit" name="submit" value="Search"><br>
</form>
<br>
<h3>Sort by years:</h3>
<ul>
<li><a href="2007.php">2007</a></li>
<li><a href="2008.php">2008</a></li>
<li><a href="2009.php">2009</a></li>
<li><a href="2010.php">2010</a></li>
<li><a href="2011.php">2011</a></li>
<li><a href="2012.php">2012</a></li>
<li><a href="2013.php">2013</a></li>
<li><a href="2014.php">2014</a></li>
<li><a href="2015.php">2015</a></li>
</ul>
</div>
<div id="form">
<table id="t01" align="right" cellspacing="2">
<thead>
<tr>
<td bgcolor="#ccc">Rider No.</td>
<td bgcolor="#ccc">Category</td>
<td bgcolor="#ccc">Name</td>
<td bgcolor="#ccc">Team Name</td>
<td bgcolor="#ccc">Nationality</td>
<td bgcolor="#ccc">Year Participated</td>
<td bgcolor="#ccc">Total Laps</td>
<td bgcolor="#ccc">Fastest Lap</td>
</tr>
</thead>
<tbody>
<?php
$connect = mysql_connect("localhost","root", "Highland5");
if (!$connect) {
die(mysql_error());
}
mysql_select_db("the24hourrace");
if(isset($_POST[field]) and isset($_POST[key])) {
$results = mysql_query("SELECT ".[field]." FROM riders WHERE ".[field]." = ".[key], $connect);
} else {
$results = mysql_query("SELECT * FROM riders", $connect);
}
while($row = mysql_fetch_array($results)) {
?>
<tr>
<td><?php echo $row['rider_no']?></td>
<td><?php echo $row['category']?></td>
<td><?php echo $row['name']?></td>
<td><?php echo $row['team_name']?></td>
<td><?php echo $row['nationality']?></td>
<td><?php echo $row['year_participated']?></td>
<td><?php echo $row['total_laps']?></td>
<td><?php echo $row['fastest_lap']?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
</body>
我要问的重要部分包括 div id="nav" 和它下面的表格:
<form method="post" action="index.php?go" id="searchform">
<br>
<h3>Search in:</h3><select name="field">
<option value="rider_no.">Rider No.</option>
<option value="category">Category</option>
<option value="name">Name</option>
<option value="team_name">Team Name</option>
<option value="nationality">Nationality</option>
<option value="year_participated">Year Participated</option>
<option value="total_laps">Total Laps</option>
<option value="fastest_lap">Fastest Lap</option>
</select>
<input type="text" name="key">
<input type="submit" name="submit" value="Search"><br>
</form>
还有 PHP 部分:
<?php
$connect = mysql_connect("localhost","root", "Highland5");
if (!$connect) {
die(mysql_error());
}
mysql_select_db("the24hourrace");
if(isset($_POST[field]) and isset($_POST[key])) {
$results = mysql_query("SELECT ".[field]." FROM riders WHERE ".[field]." = ".[key], $connect);
} else {
$results = mysql_query("SELECT * FROM riders", $connect);
}
while($row = mysql_fetch_array($results)) {
?>
<tr>
<td><?php echo $row['rider_no']?></td>
<td><?php echo $row['category']?></td>
<td><?php echo $row['name']?></td>
<td><?php echo $row['team_name']?></td>
<td><?php echo $row['nationality']?></td>
<td><?php echo $row['year_participated']?></td>
<td><?php echo $row['total_laps']?></td>
<td><?php echo $row['fastest_lap']?></td>
</tr>
<?php
}
?>
如果您对我的代码或我的要求有任何疑问,请不要犹豫!我发现这有点难以解释:)
【问题讨论】:
-
所以你想要做的几乎就是一旦他们在字段的 o1 中输入详细信息并点击你希望它显示结果的按钮,或者你希望它确实显示为他们输入吗?
-
@rackemup420 我希望它在点击“提交”后刷新页面并显示新结果
-
您当前的代码有哪些错误?
-
$results = mysql_query("SELECT ".[field]." FROM riders WHERE ".[field]." = ".[key], $connect);应该是$results = mysql_query("SELECT ".$_POST['field']." FROM riders WHERE ".$_POST['field']." = ".$_POST['key'], $connect); -
是的,我意识到我的问题在提交后更像是代码转储......无论如何,在尝试搜索列后它没有显示任何结果。我之前在 [field] 和 [key] 前面有 $_POST,但结果相同。如果我删除 WHERE ".[field]." = ".[key] 来自第一个 IF 语句,然后表格将显示具有所有值的指定列(无需在搜索栏中输入任何内容)并且每行的其余部分将为空。