2012-10-22 88 views
3

我有一个简单的php表单,它允许用户从主题区域的下拉列表中选择返回一组数据库(例如http://library.wabash.edu/biology.php)。如您所见,在进行选择并单击“提交”之前,不会返回任何内容。是否有可能在加载页面时加载一组数据库(生物学数据库将载入生物部门页面等),但是还允许用户再次选择,如我现在所做的那样?我的经验不足,提前表示道歉。在页面加载时加载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); 
} 
?> 

回答

1

正如你现在如果你不打算使用JavaScript,你可以做一两件事:

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

+0

我已经尝试了几天 - 我可以做的GET为了建立链接时,用户做出选择,没有问题,但我不知道如何使一组数据库在页面加载时出现而不是所有的数据库。使用表单中的选定属性可以让用户轻松点击Go来获取该部门的数据库,但直到单击Go时,整个列表才会显示在页面上。抱歉! – user1766841

+0

您是否删除了“提交”验证? “if(isset($ _ POST ['submit']))”这是停止查询在请求上执行的唯一点。如果你删除它,并有链接,如mypage.com/index.php?choice=Biology,生物学集将只出现。 –

0

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

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

0

从你的问题看来,你只是想要一个预先加载的资源列表填充页面,当访问者首次登陆(也许只是为了填补空间?)。作为基本的PHP解决方案,只需在页面顶部运行一个初始查询,仅限于前100个alphabethically放置的记录,并在表格下方的表格中将其回显出来。

不要忘了换行初始查询中的if语句,如:

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

*(如果你分页的结果,显然你并不需要100 - 只是无论多少填补那第一个屏幕。)