2013-03-20 78 views
0

我正在從數據庫中填充PHP中的選擇框(下拉框)。在PHP中從下拉菜單中獲取多個值

function selBox(){ 
    conDB(); 
    $sql1 = "SELECT cname FROM course"; 
    $selResult = mysql_query($sql1); 
    echo"<option value = 'default'>Select Course</option>"; 
     $rowNum = 0; 
     while($selRows = mysql_fetch_array($selResult)){ 
     echo"<option value = " . $selRows[0] . ">" . $selRows[0] . </option>"; 
     } 
    mysql_close(); 
} 

上述函數被調用的HTML這樣的:

<select name="delCourse"><?php selBox();?></select> 

在同一頁上我得到了在下拉框中選擇的值。

$Selected = $_POST['delCourse']; 
      echo $Selected; 

會發生什麼事是,我有很多的課程,在填充到保管箱的數據庫。用戶做出選擇,然後將它放入$ Selected以轉發到另一個函數。

問題:迴應$ Selected給出了雙重答案,如ScienceScience或MathematicsMathematics。我可以對此進行一些字符串操作以獲得正確的答案。是否有另一種方法可以只從保存箱中選擇的內容中獲取單個答案?

+1

你可以顯示選擇框的HTML輸出嗎? – Mark 2013-03-20 09:53:04

+1

您錯過了''的報價 – Waygood 2013-03-20 09:53:50

+0

您正在動態生成HTML,並且未在所有動態內容中使用'htmlspecialchars'。這是一個等待發生的XSS漏洞。使用'echo htmlspecialchars($ selRows [0])'來代替,並確保將第二個和第三個參數傳遞給'htmlspecialchars',以便它可以正確地完成它的工作。 – Jon 2013-03-20 09:55:21

回答

0

好吧,我通過玩弄這個功能得到了我的問題的答案。我的函數現在看起來是這樣的:

function selBox($selValue){ 
    conDB(); 
    $sql1 = "SELECT cid, cname FROM course"; 
    $selResult = mysql_query($sql1); 
    echo"<option value = 'default'>Select Course</option>"; 
     while($selRows = mysql_fetch_array($selResult)){ 
      $id = htmlspecialchars($selRows["cid"]) ; 
      $course = htmlspecialchars($selRows["cname"]); 
      echo "<option value='$id'>$course</option>"; 
     } 
    $selValue = $_POST['delCourse']; 
    mysql_close(); 
    return; 
} 

調用該函數像這樣從我的其他網頁:

<select name="delCourse"><?php selBox($selValue);?></select> 

檢查,看看有什麼選擇現在看起來是這樣的switch語句的一部分:

case "Delete Course": 
      $selValue = ""; 
      $Selected = $selValue; 
      echo $Selected; 
      break; 

我現在通過執行上述操作獲得了單數值。現在我可以再次將該值傳遞給下一個函數。