3

我有一个简单的 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);
}
?>
4

3 回答 3

1

正如你现在所拥有的,如果你不打算使用 javascript,你可以做一件事:

1-删除$_POST['submit']的验证,你可以只检查$choice=$_POST['choice']变量。2-将选择变量从 $_POST 数组更改为 $_GET 数组,这样您就可以构建类似的链接。--> mypage.com/index.php?choice=生物学。有了这个,您将能够填写生物学页面上的列表,也可以让用户选择任何其他选项。

于 2012-10-22T23:49:47.543 回答
0

从您的问题来看,您似乎只想要一个预先加载的资源列表来在访问者首次登陆时填充页面(也许只是为了填充空间?)。作为一个基本的 PHP 解决方案,只需在页面顶部运行一个初始查询,仅限于例如前 100* 个按字母顺序排列的记录,然后在表单下方的表格中回显它们。

不要忘记将初始查询包装在 if 语句中,例如:

if(!ISSET($_POST)) {
    //run query
}

*(如果您对结果进行分页,显然您不需要 100 - 只需填充第一个屏幕即可。)

于 2012-10-23T00:03:39.597 回答
0

如果您愿意,您可以预加载不同主题的所有数据并将其保存到 Javascript 变量中,以便访问它们只需等待SELECT更改事件触发。

或者您可以使用 Ajax 加载相关的主题变量。相同的方式只是它是服务器端代码提供数据而不是存储的 Javascript 变量中的数据。

于 2012-10-22T23:51:36.497 回答