3

好的,所以我有一个名为 Country 的表,它看起来像这样:

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

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

我确实在这里尝试了一些东西,但我不确定它在做什么,因为我对 PHP 和 HTML 仍然很陌生,以至于我只是输入一些东西来看看会发生什么。

无论如何,我真的被卡住了,我尝试使用谷歌和这个网站中的搜索功能,但我发现没有任何东西对我有用......

我试过的代码是这样的:

<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");允许我连接到我的数据库。

4

9 回答 9

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);

你会看到用户选择了什么。检查你的设置可能有问题。

于 2012-04-26T05:57:36.250 回答
0

您的 SQL 语句仅从“Countries”表中选择了“Country”;因此,您无法使用 $row['id'] 和 $row['name']。
改用这个:

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

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

    echo '</select>';
?>

那应该可以解决您的问题。

于 2012-04-26T08:13:06.090 回答
0

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

于 2012-04-26T20:12:56.693 回答
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']);
}
于 2012-04-26T06:59:48.653 回答
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);

于 2012-04-26T06:50:49.953 回答
0

你的单引号和双引号把你弄乱了:

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

应该:

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

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

Thant应该可以帮助你。

于 2012-04-26T06:13:42.170 回答
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>
于 2012-04-26T06:13:43.503 回答
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>
于 2012-04-26T05:55:06.363 回答
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>";
    ?>

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

于 2013-03-09T13:55:25.837 回答