0

使用 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>
4

5 回答 5

1

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

<!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/上查看它

祝你好运!

于 2013-11-13T13:05:26.487 回答
0

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

我正在创建一个下拉菜单,用于选择每页显示多少个结果。总共 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/en/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.'';
于 2015-04-30T00:19:23.320 回答
0

希望这是你需要的。您对下拉菜单的 ID 和名称进行选择。选择一个元素后,表单将被提交,新的 sql 查询将返回代码。还有其他几种返回代码的方法,这只是一种简单的方法

注意,我没有使用准备好的语句!因为我现在没有正确的语法...你应该考虑准备好的语句的一般实现。

<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>
于 2013-11-13T13:21:36.600 回答
0

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

于 2013-11-13T13:04:10.620 回答
0

尝试通过连接分别回显$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>"

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

于 2014-03-01T07:49:29.933 回答