【问题标题】:Can not get value for Select item?无法获得选择项目的价值?
【发布时间】:2011-09-24 17:14:01
【问题描述】:

我似乎无法通过 PHP 获取“选定项目”的值以传递给 JavaScript 函数,该函数使用该值从 MySQL 数据库中查询数据 -> 填充不同的下拉列表。

这是我的“HTML”代码

<select name="numbers" id="numbers" onChange="populateOtherSelect()">
   <option value="one">one</option>
   <option value="two">two</option>
   <option value="three">three</option>
   <option value="four">four</option>
</select>

<?php echo $option ?>

这是我的“JavaScript”函数代码

function populateOtherSelect() {
 <?php
   // code that opens db connection

   $numbers = $_POST['numbers']; 

   $query = "select*from Database.Table where Something = 'Something' and Numbers like '%".$numbers."%'";

   $result = mysql_query($query);

   $option = "";

   while($row = mysql_fetch_array($result))
    {
        $OtherOptions = $row["OtherOptions"];
        $option.="<option value=\"$OtherOptions\">".$OtherOptions."</option>\r\n";
    }

   // code that closes db connection
?>

}

任何信息都会有所帮助。

非常感谢

【问题讨论】:

  • 那么问题出在哪里? $numbers 是空的,还是查询有问题?
  • 如果您想像现在这样,您必须发布表单,这将导致每次更改列表时网站都会重新加载。否则,它是 AJAX .. 看看 @jeroen 的答案。
  • 是的,我看过他的回答。我现在正在研究 AJAX。我还没有真正看过 AJAX。我是编程新手。谢谢
  • 明确说明(因为其他 cmets 或答案似乎还没有这样做):在将页面下载到用户的 Web 浏览器之前,PHP 代码在 Web 服务器上运行。 JavaScript 代码在 Web 浏览器中运行。这意味着您的 JavaScript 函数不能调用您的 PHP 函数,反之亦然。正如其他人所建议的那样,当您的选择元素发生更改时,您必须向网络服务器发送另一个请求,然后重新加载整个页面并适当填充您的第二个选择,或者(首选方式)使用 AJAX 来获取新数据而无需重新加载页面。

标签: php javascript mysql select


【解决方案1】:

我认为您需要在 select 语句中添加一个空格:

$query = "select * from Database.Table where Something = 'Something' and Numbers like '%".$Numbers."%'";

【讨论】:

    【解决方案2】:

    首先,$Numbers 变量不存在,它是$numbers

    【讨论】:

    • 好吧,我更改了代码,以便更容易遵循所有命名具有相同大小写。
    【解决方案3】:

    您的 javascript 代码似乎是 html / php 文档的一部分,这不起作用; php 仅在初始页面加载时运行,此时可能没有 $_POST 变量。

    您需要做的是,在您的第一个选择发生更改时对 php 脚本进行 ajax 调用,并使用该 ajax 调用的响应来填充您的第二个选择。

    所以基本上你的 javascript 函数必须看起来像:

    function populateOtherSelect() {
      /*
       * 1. get the value of the numbers select
       * 2. make an ajax call to a php script / the server that gets some information from a database
       * 3. use the response from the ajax call to populate your second select
       */
    }
    

    【讨论】:

    • +1 刚刚意识到他有 onChange 调用 php 函数。
    猜你喜欢
    • 2019-04-22
    • 2021-09-10
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2020-11-04
    • 2021-09-17
    • 1970-01-01
    • 2017-05-06
    相关资源
    最近更新 更多