如何将下拉列表中检索到的值的id从数据库发送到php文件


How to send id of a retrieved value in drop down list from database to a php file?

大家好,我正在从数据库中检索一些值,并使用ajax和php在下拉列表中显示。从下拉列表中选择一个字段(即$row['curse_codes']之一)后,我想在点击提交按钮后将$courseId中包含的主键发送到另一个文件进行进一步处理。我正在按预期在下拉列表中获取值,但我无法将id传递给另一个文件。这是我用来在下拉列表中检索数据的代码。

<?php
    $qd = $_GET['q'];
$q = mysql_real_escape_string($qd);
$branch = $_SESSION['session_branch'];
$_SESSION['sem'] = $q;
$query = "select *FROM course_details WHERE branch='" . $branch . "' AND sem = '" . $q . "'";               
    $run = mysql_query($query) or die($query."<br/><br/>".mysql_error()); 
$num = mysql_numrows($run); 
?>
<select class="action" name='id'>
<option name="usn" value="" class="displayUsn">-- Select Course --</option>
<?php
            while($row = mysql_fetch_assoc($run)){
                $courseId = $row['course_id'];
                echo "<option class='displayRec' value = 'addToTemp.php?id=$courseId'" . ">" . $row['course_codes'] . "</option>"; 
            }   
            echo "</select>";
            if($num > 0){
                echo " ";
                echo "<input type='button' onClick='"window.location.href='addToTemp.php''" value='Add' id='id'>";          
            }else{
                echo "No courses available";
            }
            mysql_close($bd);
?>

在addToTemp.php中,我试图获得如下id:

if(isset($_GET['id'])){
$getId = $_GET['id'];
}

但是id不包含任何值。请帮忙。

您必须更改PHP代码的打印输出,只打印otion值中的id,而不是url:

while($row = mysql_fetch_assoc($run)){
                $courseId = $row['course_id'];
                echo "<option class='displayRec' value = '".$courseId."'" . ">" . $row['course_codes'] . "</option>"; 
            } 

以上可能会生成以下HTML:

<option name="usn" value="" class="displayUsn">-- Select Course --</option>
    <option class='displayRec' value = "1" >1Code</option>
    <option class='displayRec' value = "2" >2Code</option>
    <option class='displayRec' value = "3" >3Code</option>
    <option class='displayRec' value = "4" >4Code</option>
    <option class='displayRec' value = "5" >5Code</option>

使用函数中的window.location。所有结果是:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  <select class="action" name='id' id="sel">
<option name="usn" value="" class="displayUsn">-- Select Course --</option>
    <option class='displayRec' value = "1" >1Code</option>
    <option class='displayRec' value = "2" >2Code</option>
    <option class='displayRec' value = "3" >3Code</option>
    <option class='displayRec' value = "4" >4Code</option>
    <option class='displayRec' value = "5" >5Code</option>
  </select>
  <input type='button' onClick="GotoPage()" value='Add' id='id'> 
  <script>
    function GotoPage(){
      s = document.getElementById('sel');
      if (s.value != ''){
        window.location.href='addToTemp.php?id='+s.value;        
      }
    }
  </script>
</html>

签出此演示

您可以使用一个表单而不是链接到另一个页面。当你链接到另一个网页时,你需要使用javascript获取所有数据,并将其传递到一个新页面。为此,请查看以下内容:(在jQueryAjax函数中将整个表单作为数据传递)。如果加载新页面对您来说无关紧要,那么您可以使用表单,如下所述。

这是index.php,我省略了第一个php标签:

<form method="get" id="myform" enctype="multipart/form-data" action="addToTemp.php">
<input type="hidden" name="courseID" value="<?php echo $courseID; ?>">
<select class="action" name="id">
<option value="select" class="displayUsn">-- Select Course --</option>
<?php
        while($row = mysql_fetch_assoc($run)){
            $courseId = $row['course_id'];
            echo "<option class='displayRec' value = '".$courseId."'>" . $row['course_codes'] . "</option>"; 
        }   
        echo "</select>";
        if($num > 0){
            echo "<input type='"button'" onClick='"document.getElementById('myform').submit();'" value='"Add'" id='"id'">";
        }else{
            echo "No courses available";
        }
        mysql_close($bd);
?>
</form>     

并使用它来读取$_GET数据。或者,您也可以使用方法"post"和$_post来读取数据。注意提交当前表格的"课程ID"值时隐藏的表格标签。

<?php
 $value=$_GET['id'];
 echo "Select value: ".$value;
 print_r($_GET);
?>