我有一个简单的php表单,允许用户从主题区域的下拉列表中进行选择,以返回一组数据库(例如http://library.wabash.edu/biology.php)。如您所见,在进行选择并单击“提交”之前,不会返回任何内容。是否有可能在页面加载时加载一组数据库(生物数据库将加载到生物部门页面等),但是还允许用户进行另一个选择,就像我现在一样?我的经验不足,请提前道歉。
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<select name="choice" id="choice">
<option value="Biology">Biology</option>
<option value="Chemistry">Chemistry</option>
<option value="Computer Science">Computer Science</option>
<option value="Mathematics">Mathematics</option>
<option value="Medicine">Medicine</option>
<option value="Physics">Physics</option>
</select>
<input type="submit" name="submit" value="Go" style="margin-left: 10px">
<input type="submit" name="reset" value="Clear" style="margin-left: 10px">
<input type="hidden" name="submitted" value="true"/>
</form>
<?php
if(isset($_POST['submit'])) {
$choice=$_POST['choice'];
$localhost="localhost";
$username="xxxxxxx";
$password="xxxxxxx";
$database="xxxxxxx";
$linkid=mysql_connect($localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
mysql_select_db("databases",$linkid);
$resultid=mysql_query("SELECT name, mobile, app, tutorial, help
FROM databaselist
WHERE dept
LIKE '%{$choice}%'
ORDER BY sortname ASC", $linkid);
echo"<table>";
while ($row = mysql_fetch_row($resultid))
{
echo"<tr>";
foreach ($row as $field)
{
echo"<td>$field</td>";
}
echo"</tr>";
}
echo"</table>";
mysql_close($linkid);
}
?>
答案 0 :(得分:1)
如果你现在不打算使用javascript,你可以做一件事:
1-删除$ _POST ['submit']的验证,你只能检查$ choice = $ _ POST ['choice']变量。 2-将选择变量从$ _POST数组更改为$ _GET数组,这样就可以构建类似的链接。 - &GT; mypage.com/index.php?choice=Biology。有了这个,您将能够填写生物学页面上的列表,并让用户选择任何其他选择。
答案 1 :(得分:0)
如果您愿意,可以预加载不同主题的所有数据并将其保存到Javascript变量中,以便访问它们只需等待SELECT
更改事件触发器。
或者您可以使用Ajax加载相关的主题变量。同样的方式只是服务器端代码提供数据而不是存储的Javascript变量。
答案 2 :(得分:0)
从您的问题看来,您似乎只想要一个预先加载的资源列表,以便在访问者首次登陆时填充页面(也许只是为了填补空间?)。作为一个基本的PHP解决方案,只需在页面顶部运行一个初始查询,仅限于,例如,前100 *字母顺序放置的记录,并在表格下方的表格中回显它们。
不要忘记将该初始查询包装在if语句中,例如:
if(!ISSET($_POST)) {
//run query
}
*(如果您对结果进行分页,显然您不需要100 - 只需填写第一个屏幕即可。)