2017-11-08 13 views
1

PHPを使用してAzure SQLデータベースからデータを取得していて、データベースから取得したオプションでドロップダウン(選択)ボックスを作成しました。 SQLクエリは、タイトル& Cycle_IDの2つの列を返します。PHPで選択されたオプションを変数として使用Selectドロップダウン

タイトルとしてテキスト文字列を、Cycle_IDに値を設定しました。 これで、現在選択している値(Cycle_ID)を変数(MyVariable)に保存します。これは、作成する次のドロップダウンボックス、つまりWHERE Cycle_ID = MyVariableに対してSQLクエリで使用します。 この方法では、ユーザーはドロップダウンボックスで下方向に進むにつれて選択範囲を徐々に絞り込みます。 私の現在のコードは以下の通りですが、現在の選択を作成してMyVariableに保存する方法がわかりません。

<?php 
//create the database connection and define the query 
$serverName = "myserver"; 
$connectionOptions = array(
    "Database" => "mydatabase", 
    "Uid" => "mysqlaccount", 
    "PWD" => "mypassword" 
); 
//Establishes the connection 
$conn = sqlsrv_connect($serverName, $connectionOptions); 

//defines cycle query 
$cyclesql= "SELECT [Cycle_ID] 
     ,[Title] 
    FROM [ods].[Cycle] 
    WHERE End_Date > DATEADD(month,-6,GETDATE()) AND Updated IS NOT NULL 
    ORDER BY Cycle_ID Asc"; 
$cycleResults= sqlsrv_query($conn, $cyclesql); 

if ($cycleResults == FALSE) 
    echo (sqlsrv_errors()); 
?> 

<html> 
<body> 

<form action="cyclefile.php" method="post"> 
<div id="select"> 
<p>Select the week:</p><select name='Week'> 
<option value="">Select...</option> 
<?php 
//starts loop 
while ($row = sqlsrv_fetch_array($cycleResults, SQLSRV_FETCH_BOTH)) { 
//defines cycle variable 
$cycle = $row['Title']; 
//defines cycle_id variable 
$cycle_id = $row['Cycle_ID']; 
//displays cycle variable as option in select (dropdown) list and cycle_id as value 
echo '<option value="'.$cycle_id.'">'.$cycle.'</option>'; 
} 
?> 
</select> 
</div> 
</form> 
</body> 
</html> 
+0

<select name="cycle_data" id="cycle_id"> <option value="cycle1" > Cycle 1</option> <option value="cycle2" >Cycle 2</option> </select> 

は、次にスクリプトを行うことができます。あなたが気にしない場合は、その変数をGETとして新しいURLを作成し、フォームをポストバックするときに新しいドロップダウンボックス –

+0

を表示するようにビルドすると、変数$ _POST ["Week"] 'が利用可能になりますそのドロップダウンに選択されたオプションのIDが含まれています。または、ページがリフレッシュされる前にJavascriptでクライアント側の値を使用する場合は、そのことを明確にしてください。 – ADyson

答えて

1

私はあなたの選択にAJAX呼び出しを行うと、あなたのクエリを実行することができ、別のファイルにあなたの結果を処理するために選択した値を渡すことが示唆されました。あなたがWebページをリロードしたくない場合はJavaScriptを使用する必要があるとしている

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $("#cycle_id").change(function(){ 
    var cycle_data = $(this).val(); 
    var dataString = "cycle_data="+cycle_data; 

    $.ajax({ 
    type: "POST", 
    url: "get-data.php", 
    data: dataString, 
    success: function(result){ 
     // Process your result here 
    } 
    }); 
    }); 
    }); 
</script> 
+0

ありがとう、私はこのアプローチを試してみます – ladders81

関連する問題