2017-07-05 2 views
0

Ich versuche, eine PHP-Webanwendung die Daten von bestimmten Countries aus einem Dropdown anzuzeigen, aber ich kann nicht herausfinden, wie man die WHERE [Spalte] = [Value1, Value2, Value3] auf einem PHP-DDPdown.DropDown zum Auswählen von Daten von MS SQL Server

Ich benutze die "Adventure Works 2014 Full Database Backup" für Testporpuse.

<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

Was sind für Sie zu fragen? Fragen Sie, wie Sie die $ _POST-Ergebnisse von einem HTML-Formular-Select-Element in Ihrer SQL SELECT-Abfrage verwenden? Ich sehe kein "Dropdown" (ich gehe davon aus, ) irgendwo in Ihrem Code. Zumindest scheinen wir den Code zu verpassen, von dem etwas kommt ... dann, dass etwas im veröffentlichten Code verwendet wird (denke ich) und das scheitert? – JBH

+0

Aktualisiere meinen Code, möchte die ausgewählte in einer Tabelle anzeigen –

+0

In meinem Code, wenn ich eine 'BusinessEntityID' aus dem Dropdown auswählen, bekomme ich die" ** Nummer ID ** ausgewählt. " aber ich nicht die der Rest 'echo ('' $ row [ 'BusinessEntityID'] '' $ row [ 'Vorname'] ''....);' –

Antwort

1

Ich glaube, ich habe das behoben. Es gab eine Reihe von Problemen mit dem Code. Sie haben auf eine $ -Zeile verwiesen, aber es gab keine SQL-Abfrage, die zu einer $ -Zeile geführt hätte. Sie haben versucht, Daten nach dem schließenden HTML-Tag zu veröffentlichen. Sie haben versucht, Zeilen für eine Tabelle zu erstellen, ohne die Tabelle zu deklarieren andere Dinge. Ein Teil davon war vermutlich ein Ergebnis der schnellen Erstellung des Testfalls. Kein Problem. Versuchen Sie, diese ...

<?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> 

Hinweis: Obwohl es nicht wichtig, um Ihre Frage zu beantworten, ist es eine bewährte Methode PDO und gebundenen paramters zu verwenden, wenn sie Datenbank selbst gegen SQL-Injection und andere Gemeinheiten zu schützen nennt. Ich empfehle Ihnen, sich damit zu befassen, um Ihre Datenbank zu schützen. Prost!

+0

ich meine Grenze PHP-Kenntnisse erraten ist die Problem, dieser Code funktioniert perfekt, das einzige, was ich jetzt habe, ist, dass mein DropDown nur eindeutige Werte anzeigen soll, jetzt habe ich ** Kanada ** zweimal, ** USA ** 4 mal usw. 'SELECT DISTINCT' könnte sein? –

+0

Korrigieren. Schauen Sie sich [dieses kurze Tutorial] (http://www.mysqltutorial.org/mysql-distinct.aspx) an. – JBH

0

Ok, habe ich die Lösung, meine select war falsch

$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>"; 
Verwandte Themen