【问题标题】:How to call PHP function in dropdown menu?如何在下拉菜单中调用 PHP 函数?
【发布时间】:2016-10-10 10:24:48
【问题描述】:

我想通过 onchange 事件在下拉菜单中调用 php 函数。我想选择其中一个选项,从数据库中读取适当的值并在另一个下拉菜单中列出。

代码:

<?php

function read() {

mysql_connect("localhost", "username", "password");

mysql_select_db("database_name");

$sql = mysql_query("SELECT name FROM table");

if (mysql_num_rows($sql)) {
    $select = '<select name="select">';
    while ($rs = mysql_fetch_array($sql)) {
        $select.='<option value="' . '">' . $rs['name'] . '</option>';
    }
}
$select.='</select>';
echo $select;
} 
?>

    <!--html code -->

    <select onchange="document.write('<?php read(); ?>');">
    <option value="0">a</option>
    <option value="1">b</option>
    <option value="2">c</option>
    </select>

这段代码输出:

我想要的输出:

我怎样才能得到我想要的输出?谢谢

【问题讨论】:

  • 您使用 AJAX 调用脚本并取回数据。
  • 您必须使用 Javascript 与下拉菜单进行交互。 PHP 在页面显示之前完成所有工作,如果没有前端脚本语言(如 Javascript)的帮助,PHP 将无法在呈现的页面上工作。
  • PHP运行在服务端,不能被JS代码“调用”。您可以执行 ajax 请求来调用 php 脚本,但这不是“调用”php 函数。
  • 您是否需要 (a,b,c) 选择列表中的值才能显示新的选择列表?我在您的示例中没有看到这一点。

标签: php html call


【解决方案1】:

解释一下:

PHP 代码在用户浏览器(服务器端)呈现页面之前执行。

另一方面,Javascript 在客户端执行。表示php已经执行完毕。

如果你想调用一个 php 函数,你必须向 Server 发出另一个请求。

要“即时”执行此操作,您必须使用 AJAX,正如 cmets 中 @Jon 所指的那样。

这是一个使用jQuery 的示例(只是一个 javascript 库,以简化我们的任务):

<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javasript">

    //Listen to select 'onchange' event
    $('select#your_select_id').change(function(){

        //Read selected value
        var inputValue = $(this).val();

        //Make an ajax call
        $.post('ajaxscript.php', { value: inputValue }, function(data){

            //The return of 'read' function will be accessible trough 'data'

            //You may create DOM elements here
            alert('Finnished');

        });

    });

</script>

这是我们的 ajaxscript.php 内容:

<?php
//Declare (or include) our function here
//function read(){ ... }

$value = $_POST['value']; //Selected option
//...

echo read();

【讨论】:

    【解决方案2】:

    您好,您也可以在此使用 javascript form submit 并致电 php function

    <?php
    function read() {
    mysql_connect("localhost", "username", "password");
    mysql_select_db("database_name");
     $sql = mysql_query("SELECT name FROM table");
    if (mysql_num_rows($sql)) {
    $select = '<select name="select">';
    while ($rs = mysql_fetch_array($sql)) {
    $select.='<option value="' . '">' . $rs['name'] . '</option>';
     }
    }
     $select.='</select>';
    echo $select;
     } 
     if (isset($_POST['value'])) {
      read($_POST['value']);
    }
        ?>
      <form method="POST">
     <select name="value" onchange="this.form.submit()">
     <option value="0">a</option>
    <option value="1">b</option>
    <option value="2">c</option>
    </select>
     </form>
    

    【讨论】:

    • 我对此进行了测试并且有效,但它在逻辑上是否正确(发送表单)?
    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多