国家/地区的动态PHP下拉菜单

时间:2012-04-26 05:49:35

标签: php mysql html database drop-down-menu

好的,我有一张名为Countries的表,它看起来像这样:

---------------------------
|Country      |    Code   |
---------------------------
|Afganastan   |     AF    |
|ÅLAND ISLANDS|     AX    |
|  etc.       |     etc.  |
---------------------------

我想要做的是创建一个动态菜单,用户在其中选择一个国家,并将其本身存储为我可以在用户点击提交后调用的值。

我确实在这里尝试了一些东西,但我不确定它在做什么,因为我还是PHP和HTML的新手,我只是输入内容以查看会发生什么。

无论如何我真的被卡住了,我尝试在这个网站上使用google和搜索功能,但我找不到任何工作......

我尝试的代码是:

<select>
    <?php
        $result = mysql_query('SELECT Country FROM Countries');

        echo '<select name="country">';

        while ($row = mysql_fetch_array($result))
        {
           echo '<option value="'.$row['id'].'">'.$row['name'].'</option>';
        }

        echo '</select>';
    ?>

   </select>

结果应该看起来像一个下拉菜单,其中包含数据库中的国家/地区列表。但这不起作用,只是在下拉列表中显示:

.$row['name']

这与我想要的完全没有关系,因为那甚至不是一个国家。当我删除该部分代码时,用户无法选择,菜单为空。

修改 到目前为止,我的代码仍无效:

<select name = 'country'>
    <?php

    include ("account.php");
    include ("connect.php");

        $result = mysql_query('SELECT Code , Country FROM Countries');
        while ($row = mysql_fetch_array($result))
            {?>

            <option value="<?php echo $row['Code']?>"><?php echo $row['Country']?></option>

            <?php}

    ?>

   </select>

include ("account.php");include ("connect.php");行允许我连接到我的数据库。

9 个答案:

答案 0 :(得分:1)

你的代码应该是这样的

$host = "localhost";
$user = "root";
$pass = "yourpassword";
$db   = "databasename";

// This part sets up the connection to the 
// database (so you don't need to reopen the connection
// again on the same page).
$ms = @mysql_connect($host, $user, $pass);
if ( !$ms )
{
echo "Error connecting to database.\n";
}

// Then you need to make sure the database you want
// is selected.
@mysql_select_db($db);


<form method = "POST" action = "abc.php">
<select name = 'country'>
<?php
$result = mysql_query('SELECT id , name FROM Countries');
while ($row = mysql_fetch_array($result))
    {?>
       <option value="<?php echo $row['id']?>"><?php echo $row['name']?></option>
    <?php}
?>
<input type = "submit" value = "Submit">
</form>

现在在php中使用这个

echo '<pre>';
print_r($_POST);

您将看到用户选择了什么。检查您的设置可能存在一些问题。

答案 1 :(得分:0)

试试此代码

 <?php
        $result = mysql_query('SELECT * FROM Countries');
?>
<select name="country">
<?php 

        while ($row = mysql_fetch_array($result))
        {
?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['name']; ?></option>
<?php
        }
?>
</select>

答案 2 :(得分:0)

你的单引号和双引号搞砸了你:

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

应该是:

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

您可以在脚本周围使用单引号,但当您跳出它来执行$row['id']$row['name']时,您遇到了问题,因为它认为您正在跳回到引用的代码中。 ..使用上面的示例,以双引号开头/结尾并转义需要显示的所有双引号,或者转义$row[\'id\']$row[\'name\']

中的单引号

Thant应该帮助你。

答案 3 :(得分:0)

首先,您的表格没有 ID 列。尝试更改您的查询,如

SELECT Country, Code FROM Countries

然后代码和html应该是这样的

<?php

$host = "localhost";
$user = "user";  //username
$pass = "pass";  //password
$db   = "db";    //database

$con = @mysql_connect($host, $user, $pass);
if ( !$con )
{
echo "Error connecting to database.\n";
}

@mysql_select_db($db);
?>

<select name="country">
<option value="0" selected="selected">Choose..</option>
<?php
//echo '<select name = \'country\'>';

    $result = mysql_query('SELECT Country, Code FROM Countries');

    while ($row = mysql_fetch_array($result))
    {
       echo '<option value="'.$row['Code'].'">'.$row['Country'].'</option>';
    }

?>
</select>

答案 4 :(得分:0)

  <select>
    <?php
    $result = mysql_query('SELECT Country FROM Countries');

    echo '<select name="country">';
    $row = mysql_fetch_array($result)
    for ($i=0; $i<count($row ); $i++)
    {
       echo '<option value="'.$row[$i]['id'].'">'.$row[$i]['name'].'</option>';
    }

    echo '</select>';
?>

下一页使用print_r($ _ POST); 或var_dump($ _ REQUEST);

答案 5 :(得分:0)

如果您使用的是mysql_fetch_array,则可以使用字段名称或其选定的索引从提取的行中读取它们。您还可以使用sprintfprintf函数将内容合并到字符串中,以帮助保持HTML片段清除在值中合并所需的引号。

$result = mysql_query('SELECT Country, Code FROM Countries');
while ($row = mysql_fetch_array($result)) {
   printf('<option value="%1$s">%2$s</option>',
            $row['Code'], $row['Country']);
}

答案 6 :(得分:0)

您的SQL语句仅从“国家/地区”表中选择“国家/地区”;因此,你不可能使用$ row ['id']和$ row ['name']。
请改用它:
    

    echo '<select name="country">';

    while ($row = mysql_fetch_array($result))
    {
       echo '<option value="'.$row['Code'].'">'.$row['Country'].'</option>';
    }

    echo '</select>';
?>

这应该可以解决你的问题。

答案 7 :(得分:0)

我想出了我遇到的问题。第一个是页面中有一个额外的选择标记,第二个是文件被保存为html页面而不是php文件。感谢所有帮助我解决这个问题的人!

答案 8 :(得分:0)

尝试我的代码,我正在使用它,它确实有用......只需更改值...

<?php
    include ('connect.php');

    $sql = "SELECT * FROM casestatusfile";
    $result = mysql_query($sql);

    echo "<select name = 'txtCaseStatus'/>";
    echo "<option value = ''>--- Select ---</option>";
    $casestatus = $_POST['txtCaseStatus'];
    $selected = 'selected = "selected" ';
    while ($row = mysql_fetch_array($result)) {
    echo "<option " .($row['CASESTATUSCODE'] == $casestatus? $selected:''). "value='". $row['CASESTATUSCODE'] ."'>" . $row['CASESTATUS'] ."</option>";
    }
    echo "</select>";
    ?>

我确信这是有效的,因为那是我正在使用的......