2

Web ページのリストボックスに入力しようとしていますが、リストボックスを空白で開始したいと考えています。ボタンをクリックすると、リストボックスにデータが入力されます。以下のコードはリストボックスを自動的に埋めますが、ボタンでそれを実行したいと思います。

<?php 
$dbc = mysql_connect('','','') 
     or die('Error connecting to MySQL server.'); 

mysql_select_db('MyDB'); 

$result = mysql_query("select * from tblRestaurants order by RestName ASC"); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>SEARCH</title> 


 </head> 

<body> 
<form method="post" action="1004mcout.php">



<p><center>SEARCH</CENTER></P> 
<select name="RestName"> 
<?php 
 while ($nt= mysql_fetch_assoc($result))  
{ 
     echo '<option value="' . $nt['RestID'] . '">' . $nt['RestName'] . '</option>'; 
}  
?> 
</select>

<p> SPACE</p> 

<p>Click "SUBMIT" to display the calculation results</p> 

<input type="submit" name="Submit" value="Submit" /> 

<br /> 

</form> 

</body> 

</html> 
4

3 に答える 3

1

この簡単な方法はどうですか、これがあなたの言いたいことですか、

安全ではありません。誰でも show=yes を投稿できますが、ユーザーが単にクリックして結果を表示できるようにしたいだけだと思います

<select name="RestName"> 
<?php 

// if show=yes
if ($_POST['show'] == "yes"){

$dbc = mysql_connect('','','') 
 or die('Error connecting to MySQL server.'); 

mysql_select_db('MyDB'); 

$result = mysql_query("select * from tblRestaurants order by RestName ASC"); 

 while ($nt= mysql_fetch_assoc($result))  
{ 
     echo '<option value="' . $nt['RestID'] . '">' . $nt['RestName'] . '</option>'; 
}
}
?> 
</select>

<form method="post" action="#">
<input type="hidden" name="show" value="yes" />
<input type="submit" name="Submit" value="Submit" /> 
</form>

非表示のdivを使用してリスト ボックスを非表示にし、ボタンに onclick アクションを指定して div を表示することもできます。

于 2013-01-10T23:49:45.677 に答える
1

私は次のいずれかを行います:データを準備ができているが目に見えないhtmlリスト(おそらく少しn00b)としてページにプリロードするか、データをjavascript配列として保存し、関数がそれをページにロードします(より良い)、またはajax呼び出しを行います同じページに(簡単にするために)(おそらく最良の方法は、ページの開始後に更新されたデータのオプションを開いたままにすることです)。

Ajax ルートでは jQuery を使用する必要があります (this_page.phpこれが呼び出されたページに変更します)。

<?php


while ($nt= mysql_fetch_assoc($result))
    $arrData[] = $nt;

//If you want to test without DB, uncomment this, and comment previous
/*$arrData = array(
        array('RestID' => "1", 'RestName' => "Mike"),
        array('RestID' => "2", 'RestName' => "Sebastian"),
        array('RestID' => "3", 'RestName' => "Shitter")
        );*/

if(isset($_GET["ajax"]))
{
    echo json_encode($arrData);
    die();
}
?>
<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
function displayItems()
{
    $.getJSON("this_page.php?ajax=true", function(data) {
        $.each(data, function(index, objRecord) {
            var option=document.createElement("option");
            option.value=objRecord.RestID;
            option.text=objRecord.RestName;
            $("#RestName").append('<option value="' + objRecord.RestID + '">' + objRecord.RestName + '</option>');
        });
    });

}
    </script>
    <title>SEARCH</title>
</head>
<body>
    <form method="post" action="1004mcout.php">
        <p><center>SEARCH</CENTER></P>
        <select id="RestName"></select>
        <p> SPACE</p> 
        <p>Click "SUBMIT" to display the calculation results</p> 
        <button type="button" onclick="javascript:displayItems();">Insert options</button>
        <br /> 
    </form> 
</body> 
</html> 

基本的に、データを収集し、URL に ajax データの要求があるかどうかを確認し、そうでない場合はページの残りを (空の選択で) 印刷します。URL に ajax フラグがある場合、php はデータを json にエンコードし、それを出力して停止します。ユーザーが空の選択でページを受け取ると、displayItems()関数をトリガーするボタンをクリックします。その関数内で、URL に設定された ajax フラグを使用して同じページへの jQuery ベースの ajax 呼び出しを実行し、結果 (json) が有効な JavaScript 配列に評価されます。次に、その配列がオプションに作成され、RestName SELECT 要素にロードされます。

ファイナルクッキー?前の回答で説明したように、とにかくデータをオプションとして選択に出力することができます。次に、displayItems() 関数内で、jQuery/ajax 呼び出しからロードする前に選択をクリアします。そうすれば、ユーザーはデータを最初から見ることができ、DB からの最新のデータでのみこれを更新します。きれいで、すべてが 1 ページにまとめられています。

于 2013-01-11T00:21:28.343 に答える
1
<?php 
$dbc = mysql_connect('','','') 
     or die('Error connecting to MySQL server.'); 

mysql_select_db('MyDB'); 

$result = mysql_query("select * from tblRestaurants order by RestName ASC"); 
?>

<html>
<head>
<script>
function displayResult()
{
   var x =document.getElementById("RestName");
   var option;

   <?php 
 while ($nt= mysql_fetch_assoc($result))  
 {
       echo 'option=document.createElement("option");' .
            'option.value=' . $nt['RestID'] . ';' . 
            'option.text=' . $nt['RestName'] . ';' .
            'x.add(option,null);';
 }  
  ?>
}
</script>
</head>

<body>

  <select name="RestName"> 
  </select>

  <button type="button" onclick="displayResult()">Insert options</button>

  </body>
</html>

Java スクリプトから要素を選択するためのオプションの追加について詳しくは、こちらをご覧ください

于 2013-01-10T23:47:50.240 に答える