2017-07-05 12 views
0

PHP Webアプリケーションに特定のCountriesのデータをドロップダウンから表示させようとしていますが、WHERE [Column] = [Value1、 Value2、Value3]をPHPのdorpdownに追加します。MS SQLサーバーからデータを選択するためのドロップダウン

私は"Adventure Works 2014 Full Database Backup"をテスト用に使用しています。

<html> 
</body> 
<!-- form for tower selection --> 
<form action="test20.php" method="POST"> 
Please select the tower you are about to work on. </br></br> 
<select name="TowerSelect"><option> Choose </option> 
<?php 
$serverName = 'SERVERNAME'; 
$uid = 'USERNAME'; 
$pwd = 'PASSWORD'; 
$databaseName = 'AdWorks'; 

$connectionInfo = array('UID'=>$uid, 
         'PWD'=>$pwd, 
         'Database'=>$databaseName); 

$conn = sqlsrv_connect($serverName,$connectionInfo); 
if($conn){ 
    echo ''; 
}else{ 
    echo 'Connection failure<br />'; 
die(print_r(sqlsrv_errors(),TRUE)); 
} 
$sql = "SELECT BusinessEntityID, FirstName FROM dbo.vKelvin WHERE CountryRegionName = 'United States'"; 
$result = sqlsrv_query($conn,$sql) or die("Couldn't execut query"); 
while ($data=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){ 

    echo "<option value="; 
    echo $data['BusinessEntityID']; 
    echo ">"; 
    echo $data['BusinessEntityID']; 
    echo "</option>"; 
} 
?> 
<input type="submit" value="Select Tower"> 
</select></br></br> 
</form> 
</body></html> 
<?php 
if(empty($_POST['TowerSelect'])){  
    $_SESSION['tower'] = ''; 
} else { 
    $_SESSION['tower'] = $_POST['TowerSelect']; 
    echo "<tr>"; 
    echo $_SESSION['tower']; 
    echo " selected. </p>"; 
    echo('<td>'.$row['BusinessEntityID'].'</td><td>'.$row['FirstName'].'</td></tr>'); 
} 
+1

間違っていましたか? SQL SELECTクエリのHTMLフォーム選択要素から$ _POST結果を使用する方法を尋ねていますか?私はあなたのコードのどこにでも "ドロップダウン"(私はと仮定しています)が表示されません。少なくとも、私たちは何かから来たコードを見逃しているようです...そして、何かが投稿されたコードで使用されています(私は思う)、それは失敗していますか? – JBH

+0

私のコードを更新しました。選択したテーブルをテーブルに表示したいのです –

+0

私のコードでは、ドロップダウンメニューから「BusinessEntityID」を選択すると、「**番号ID **が選択されました。しかし、私は残りの 'echo '('​​'。$行[' BusinessEntityID ']。'​​'。$行['名] '。' ');' –

答えて

1

私はこれを修正したと信じています。コードには多くの問題がありました。あなたは$行を参照していましたが、$行の結果となるSQLクエリはありませんでした。閉じたHTMLタグの後にデータを投稿しようとしていました。テーブルを宣言せずにテーブルの行を作成しようとしました。他のもの。これはおそらくテストケースをすばやく作成した結果の一部です。問題ない。あなたの質問に答えることが重要ではない、データベースがSQLインジェクションやその他の不快から身を守るために呼び出した際PDOおよび結合偶然にを使用することがベストプラクティスですが:この...

<?php 
$serverName = 'SERVERNAME'; 
$uid = 'USERNAME'; 
$pwd = 'PASSWORD'; 
$databaseName = 'AdWorks'; 
$connectionInfo = array('UID'=>$uid,'PWD'=>$pwd,'Database'=>$databaseName); 
$conn = sqlsrv_connect($serverName,$connectionInfo); 
if($conn){echo '';}else{echo 'Connection failure<br />';die(print_r(sqlsrv_errors(),TRUE));} 

?><html><body> 
<!-- form for tower selection --> 
<form action="test20.php" method="POST"> 
Please select the tower you are about to work on. </br></br> 
<select name="TowerSelect"><option> Choose </option> 
<?php 

$sql = "SELECT BusinessEntityID, FirstName FROM dbo.vKelvin WHERE CountryRegionName = 'United States'"; 
$result = sqlsrv_query($conn,$sql) or die("Couldn't execut query"); 
while ($data=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){ 
    echo '<option value="'.$data['BusinessEntityID'].'">'; 
    echo $data['BusinessEntityID']; 
    echo "</option>"; 
} 

?><input type="submit" value="Select Tower"> 
</select></br></br> 
</form> 
<table cols="3" cellpadding="0" cellspacing="0" border="0"> 
<?php 

if(empty($_POST['TowerSelect'])){  
    $_SESSION['tower'] = ''; 
} else { 
    $sql = "SELECT BusinessEntityID, FirstName FROM dbo.vKelvin WHERE BusinessEntityID = '".$_POST['TowerSelect']."'"; 
    $result = sqlsrv_query($conn,$sql) or die("Couldn't execut query"); 
    while ($row=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){ 
     $_SESSION['tower'] = $_POST['TowerSelect']; 
     echo '<tr><td>'.$_SESSION['tower'].' selected.</td>'; 
     echo  '<td>'.$row['BusinessEntityID'].'</td>'; 
     echo  '<td>'.$row['FirstName'].'</td></tr>'; 
    } 
} 

?></table></body></html> 

注意してみてください。私はあなたのデータベースを保護するためにそれを調べることをお勧めします。乾杯!

+0

私の限界PHPの知識は問題は、このコードは完璧に働いて、今私が持っている唯一のことは、私のドロップダウンはユニークな値を表示すべきです、今私は**カナダ**を2回、** USA ** 4回など 'SELECT DISTINCT'多分? –

+0

正しい。 [この短いチュートリアル](http://www.mysqltutorial.org/mysql-distinct.aspx)を参照してください。 – JBH

0

[OK]を、私は解決策を持って、私の選択は、あなたが何を求めている

$sql = "SELECT DISTINCT CountryRegionName FROM dbo.vKelvin ORDER BY CountryRegionName"; 
$result = sqlsrv_query($conn,$sql) or die("Couldn't execut query"); 
while ($data=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){ 
echo '<option value="'.$data['CountryRegionName'].'">'; 
echo $data['CountryRegionName']; 
echo "</option>"; 
関連する問題