3

ユーザーがサブジェクト領域のドロップダウン リストから選択して一連のデータベースを返すことができる単純な php フォームがあります (例: http://library.wabash.edu/biology.php )。ご覧のとおり、選択が行われて [送信] がクリックされるまで、何も返されません。ページが読み込まれるときに一連のデータベースが既に読み込まれている可能性はありますか (生物学データベースは Biology Dept ページに読み込まれるなど)、その後、ユーザーが別の選択を行えるようにすることはできますか? 私の経験不足がここに現れているので、事前にお詫び申し上げます。

<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 つのことを行うことができます。

1- $_POST['submit'] の検証を削除します。$choice=$_POST['choice'] 変数のみを確認できます。2- 選択変数を $_POST 配列から $_GET 配列に変更すると、次のようなリンクを作成できます。--> mypage.com/index.php?choice=生物学. これがあれば、たとえば生物学ページのリストを埋めることができ、ユーザーに他の選択肢を選択させることもできます.

于 2012-10-22T23:49:47.543 に答える
0

SELECT必要に応じて、さまざまなサブジェクトのすべてのデータをプリロードし、Javascript 変数に保存して、 change イベント トリガーを待つだけでアクセスできるようにすることができます。

または、Ajax を使用して、関連するサブジェクト変数をロードすることもできます。同じように、保存された Javascript 変数のデータではなく、サーバー側のコードがデータを提供します。

于 2012-10-22T23:51:36.497 に答える
0

あなたの質問から、訪問者が最初に着陸したときにページにデータを入力するために、事前にロードされたリソースのリストが必要なようです(おそらくスペースを埋めるためだけですか?)。基本的な PHP ソリューションとして、ページの上部で最初のクエリを実行し、たとえば、アルファベット順に配置された最初の 100* レコードに限定して、フォームの下のテーブルにエコーアウトします。

最初のクエリを if ステートメントでラップすることを忘れないでください。

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

*(結果をページ分割する場合、明らかに 100 は必要ありません。最初の画面を埋めるのにいくらでも必要です。)

于 2012-10-23T00:03:39.597 に答える