【问题标题】:How to send id of a retrieved value in drop down list from database to a php file?如何将下拉列表中检索到的值的 id 从数据库发送到 php 文件?
【发布时间】:2013-11-17 13:23:27
【问题描述】:

愿你们平安,我正在从数据库中检索一些值并使用 ajax 和 php 在下拉列表中显示。从下拉列表中选择一个字段后(即 $row['course_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 不包含任何值。请帮忙。

【问题讨论】:

  • 你在用jQuery之类的JS库吗?
  • 为什么不使用表单而不是链接?

标签: javascript php mysql ajax html


【解决方案1】:

您必须将 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>

查看此DEMO

【讨论】:

    【解决方案2】:

    您可以使用表单而不是链接到另一个页面。当您链接到另一个网页时,您需要使用 javascript 获取所有数据并将其作为新页面传递。为此,请查看:(Pass entire form as data in jQuery Ajax function)。 如果加载新页面对您来说并不重要,您可以使用表单,如此处所述。

    这是 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 来读取数据。注意隐藏表单标签用于提交当前表单的“courseID”值。

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

    【讨论】:

    • @oliverbachmann...感谢您的回复,我试过了,但“添加”按钮不起作用。当我点击它没有反应
    • 您也可以使用 ,而不是在 onClick 中使用 javascript,这不需要激活 javascript。确保在此处正确转义双引号。
    • 查看生成网站的 HTML 源代码,确保名为“courseID”的隐藏输入字段具有正确的值,以及选择框的选项(可能是引号是错误的?)。按“添加”后,URL 应该是 addToTemp.php?courseID=&id=。你得到什么网址?
    • 提交表单后,我停留在页面中,并且没有任何内容添加到 url
    • 我的意思是页面没有重定向,也没有向 url 添加任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2015-01-27
    • 2015-06-07
    • 2014-06-22
    相关资源
    最近更新 更多