繁体   English   中英

用mysql动态选择列表

[英]dynamic select list in php with mysql

在MySQL中使用选择列表创建了一个列表。 我有一个c_code,表中心的mysql数据,并且有数据1. id,2。 名称3。 码。 我想在数据列表中选择名称后从mysql数据中选择名称,但要显示与该名称对应的代码,而不使用选择下拉列表中的任何提交按钮,并且代码显示在标签或输入文本框中。

这是我的完整代码。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled 1</title
    </head>
    <body>
        <form id="form1" name="form1" action="" , method="post" >
            <div>
                <label for="list">Center</label>
                <select name="list">
                    <option value=''>-----SELECT-----</option>
                    <?php
                    $conn = mysqli_connect('localhost', 'root', '');
                    $result = mysqli_query($conn, 'SELECT id,name,code FROM center');
                    while ($row = mysqli_fetch_assoc($result)) {
                        echo "<option value='$row[id]'>$row[name]</option>";
                    }
                    ?>
                </select>
            </div>
        </form>
    </body>
</html>

首先,让我们整理一下代码...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled 1</title>
    </head>
    <body>
        <form id="form1" name="form1" action="" method="post">
            <div>
                <label for="list">Center</label>
                <select name="list">
                    <option value=''>-----SELECT-----</option>
            <?php 
                $conn=mysqli_connect('localhost','root',''); 
                $result=mysqli_query($conn,'SELECT id,name,code FROM center'); 
                while($row=mysqli_fetch_assoc($result)) { 
                    echo "<option value='$row[id]'>$row[name]</option>"; 
                } 
            ?> 
                </select> 
            </div> 
        </form> 
    </body> 
    </html>

其次,PHP无法在HTML中动态地执行任何操作,PHP是服务器端脚本,在用户操作后如果不刷新页面便无法回传数据。

您正在寻找$ .ajax(); 解。 我建议您在http://api.jquery.com/jQuery.ajax/上进行调查

祝好运!

您应该写出表单之外的选择标签,因为在提交表单之前不会填充此列表

希望它是您所需要的。 您可以在ID和名称上选择下拉菜单。 选择元素后,将提交表单,并执行新的sql查询将返回代码。 还有其他几种返回代码的方法,这只是一种简单的方法

注意,我没有使用准备好的语句! 因为我现在头上没有正确的synatx,所以您应该考虑准备好的语句的一般实现。

<form id="form1" name="form1" action="" method="post" >
            <div>
                <label for="list">Center</label>
                <select name="list" onchange="this.form.submit()">
                    <option value=''>-----SELECT-----</option>
                    <?php
                    $conn = mysqli_connect('localhost', 'root', '');
                    $result = mysqli_query($conn, 'SELECT id,name FROM center');
                    while ($row = mysqli_fetch_assoc($result))
                    {
                      $selected = (isset($_POST['list']) && $_POST['list'] ==  $row['id']) ? 'selected' : '';
                      echo "<option value='$row[id]' $selected >$row[name]</option>";
                    }
                    ?>
                </select>
            </div>

            <div>
                <?php
                if (isset($_POST['list']))
                {
                    $result = mysqli_query($conn, 'SELECT code FROM center WHERE id=' . $_POST['list']);
                    while ($row = mysqli_fetch_assoc($result))
                    {
                        echo $row['code'];
                    }
                }
                ?>
            </div>

        </form>

尝试通过串联分别回显$row变量。 所以换这行

echo "<option value='$row[id]'>$row[name]</option>"

echo "<option value=". $row[id] .">".$row[name]."</option>"

或者你可以这样使用转义字符

echo "<option value={$row[id]}>{$row[name]}</option>"

我认为现在您的选择选项将起作用。

如果我理解正确,那么您正在尝试做与发现此解决方案之前相同的事情...

我正在创建一个下拉菜单,用于选择每页显示多少个结果。 总共6个选项,我将它们存储在一个数组中...

$page_sizes = array(10, 25, 50, 100, 200, 500);

接下来,我使用“ foreach”构建选项列表...以及一条if语句,仅当该选项与当前页面大小匹配时才显示该选项(页面大小是在脚本中使用$ page_size变量在前面确定的)。 ..

foreach($page_sizes as $pagesize_opt){

  ($pagesize_opt == $page_size) ? $pagesize_options .= '<option selected="selected" value="'.$pagesize_opt.'">'.$pagesize_opt.'</option>':
  $pagesize_options .= '<option value="'.$pagesize_opt.'">'.$pagesize_opt.'</option>';

}

然后,我将我的选择插入下拉菜单中...

$page_size_select = '<strong>Results Per Page </strong><select id="analytics_page_size_select">'.$pagesize_options.'</select>';

您可以使用“ while”迭代器进行相同的操作。 只要检查一下数组元素是否与您选择的元素匹配即可。

或者,如果您想花哨并使用关联数组,该数组通过键而不是通过值选择选项,则可以使用“ key()”函数获取键并测试其是否与所选键匹配。 。

http://php.net/manual/zh/function.key.php

所以整个代码看起来像这样...

$page_sizes = array(10, 25, 50, 100, 200, 500);

foreach($page_sizes as $pagesize_opt){($pagesize_opt == $page_size) ? $pagesize_options .= '<option selected="selected" value="'.$pagesize_opt.'">'.$pagesize_opt.'</option>':
  $pagesize_options .= '<option value="'.$pagesize_opt.'">'.$pagesize_opt.'</option>';
}

$page_size_select = 'Results Per Page '.$pagesize_options.'';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM