2013-03-20 76 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; 

我现在通过执行上述操作获得了单数值。现在我可以再次将该值传递给下一个函数。