php中的动态选择列表与mysql

时间:2013-11-13 12:53:41

标签: php mysql

使用带有mysql的select列表创建了一个列表。我有一个带有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>

5 个答案:

答案 0 :(得分: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/

上查看 祝你好运!

答案 1 :(得分:0)

你应该从表单中写出select标签 因为在表单提交之前不会填充此列表

答案 2 :(得分:0)

希望这就是你所需要的。您可以选择下拉菜单的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>

答案 3 :(得分: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>"

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

答案 4 :(得分:0)

如果我理解你是对的,那么在我发现这个解决方案之前,你正试图做同样的事情......

我正在创建一个下拉列表,用于选择每页显示的结果数量。 共有6个选项,我存储在一个数组中......

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

接下来,我使用了&#34; foreach&#34;构建选项列表...以及一个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>';

你可以使用&#34;同时&#34;迭代器。只需检查数组元素是否与您选择的元素匹配。

或者,如果你想得到想象并使用一个关联数组,通过键而不是值来选择选项,你可以使用&#34; key()&#34;函数获取密钥并测试它是否与您选择的密钥匹配...

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.'';