好的,我有一张名为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");
行允许我连接到我的数据库。
答案 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,则可以使用字段名称或其选定的索引从提取的行中读取它们。您还可以使用sprintf或printf函数将内容合并到字符串中,以帮助保持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>";
?>
我确信这是有效的,因为那是我正在使用的......