2012-10-22 87 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 - 只是無論多少填補那第一個屏幕。)