2013-12-10 74 views
0

我有下面的代碼生成我的選擇:使用選擇選項的值來查詢數據庫

<?php 
$sql = "SELECT DISTINCT MyID FROM database"; 
$query = $db->prepare($sql); 
$query->execute(); 
$option = ""; 
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $rows) { 
    $id = $rows[MyID]; 
    $option.="<option>".$id."</option>"; 
} 
?> 

<select name="options" id="options" class="options"> 
<option value="$id">Select an Option</option> 
<?php echo $option?> 
</select> 

我想用所選選項的值在我的下一個查詢..這樣的:

<?php 
$myDB= $db->prepare("SELECT * FROM names WHERE RowID = :option"); 
$myDB->bindParam(':option', $option); //the value of the option selected in my dropdown 
$myDB->execute(); 
$result = $myDB->fetchAll(); 

由於某些原因,這不起作用。你能幫忙嗎?由於

+0

$選項應該在$ _POST或$ _GET超級全局變量中 – 2013-12-10 18:25:37

+0

您是否將所選值發送到服務器,如果是,如何? – jeroen

+0

也是'$ rows ['MyID']'而不是'$ rows [MyID]',注意單引號。 – user555

回答

0
<?php 
$sql = "SELECT DISTINCT MyID FROM database"; 
$query = $db->prepare($sql); 
$query->execute(); 
$option = ""; 
$result = $query->fetchAll(PDO::FETCH_ASSOC); 
foreach ($result as $row) { 
    $id = $row['MyID']; 
    $option.='<option value="'.$id.'">'.$id.'</option>'; 
} 
?> 
<form method="post" action"(`The url of the next page`)"> 
<select name="options" id="options" class="options"> 
<option disabled>Select an Option</option> 
<?php echo $option?> 
</select> 
<input type="submit" value="submit" /> 
</form> 

下一頁:

<?php 
if(isset($_POST['submit']) && isset($_POST['options'])) { 

    $option = $_POST['option']; 
    $myDB= $db->prepare("SELECT * FROM names WHERE RowID = :option"); 
    $myDB->bindParam(':option', $option); //the value of the option selected in my dropdown 
    $myDB->execute(); 
    $result = $myDB->fetchAll(); 
} 
  1. 隨着fetchAll()你應該通過指定這一個變量,然後循環。
  2. $row[MyID]身份識別碼應該被包裹在「」或「」作爲索引是一個字符串,因此$row['MyId']
  3. 你需要將數據提交到服務器的PHP才能夠對它做任何事,因爲PHP創建他HTML然後將其從服務器發送到瀏覽器。
  4. 我已經使用if(isset())作爲REQUEST變量($ _GET,$ _POST),這將防止PHP拋出錯誤,如果您嘗試加載頁面而不能使用它們。

如果您有任何其他問題,我很樂意提供幫助。

希望這會有所幫助! :)

編輯

<?php 
if(isset($_GET['submit']) && isset($_GET['options'])) { 

    $option = $_GET['option']; 
    $myDB= $db->prepare("SELECT * FROM names WHERE RowID = :option"); 
    $myDB->bindParam(':option', $option); //the value of the option selected in my dropdown 
    $myDB->execute(); 
    $result = $myDB->fetchAll(); 

    /** 
    * You'll need to put the logic for the query above here 
    **/ 
} else {   

    $sql = "SELECT DISTINCT MyID FROM database"; 
    $query = $db->prepare($sql); 
    $query->execute(); 
    $option = ""; 
    $result = $query->fetchAll(PDO::FETCH_ASSOC); 
    foreach ($result as $row) { 
     $id = $row['MyID']; 
     $option.='<option value="'.$id.'">'.$id.'</option>'; 
    } 
?> 

    <form method="get" action""> 
    <select name="options" id="options" class="options"> 
    <option disabled>Select an Option</option> 
    <?php echo $option?> 
    </select> 
    <input type="submit" value="submit" /> 
    </form> 
<?php 
} // End of else 
?> 

我也改變了形式方法來獲取和刪除的操作,所以它會提交當前頁面。

+0

感謝您的幫助。非常翔實。但一個問題是,我可以發送表單數據到相同的頁面,即<?php echo $ _SERVER ['PHP_SELF']; ?>。我想這樣做,仍然得到相同的結果。基本上我想顯示一個基於查詢在同一頁上的表 – user3045800

+0

@ user3045800,我已經添加了一個編輯到我的答案,以顯示我的想法你的意思。這意味着你只有一個頁面。希望這可以幫助! –