在选择框中显示 Mysql 表字段值
Posted
技术标签:
【中文标题】在选择框中显示 Mysql 表字段值【英文标题】:Display Mysql table field values in Select box 【发布时间】:2012-12-31 14:59:54 【问题描述】:我想在选择框中显示 mysql 表 Filed 值。我尝试了以下代码来显示。 但它通常在回显函数中显示指定的字段值,而不是在选择框中。我不知道我错在哪里了。
$con = mysql_connect("localhost","root","root");
$db = mysql_select_db("Time_sheet",$con);
$get=mysql_query("SELECT Emp_id FROM Employee");
while($row = mysql_fetch_assoc($get))
echo ($row['Emp_id']."<br/>");
<html>
<body>
<form>
<select>
<option value = "<?php echo($row['Emp_id'])?>" ><?php echo($row['Emp_id']) ?></option>
</select>
</form>
</body>
</html>
字段值也必须按升序显示。如何实现..
【问题讨论】:
在您的查询中,添加ORDER BY
子句,例如:SELECT Emp_id FROM Employee ORDER BY Emp_ID ASC
谢谢。为什么选择框中不显示字段值?
【参考方案1】:
<?php
$con = mysql_connect("localhost","root","root");
$db = mysql_select_db("Time_sheet",$con);
$get=mysql_query("SELECT Emp_id FROM Employee ORDER BY Emp_id ASC");
$option = '';
while($row = mysql_fetch_assoc($get))
$option .= '<option value = "'.$row['Emp_id'].'">'.$row['Emp_id'].'</option>';
?>
<html>
<body>
<form>
<select>
<?php echo $option; ?>
</select>
</form>
</body>
</html>
PS:顺便说一句,请停止使用mysql_*
函数。看看this线程的原因。
【讨论】:
如果选项与可见文本相同,则没有理由为选项声明value
属性。【参考方案2】:
你可以这样轻松地做到这一点
$con = mysql_connect("localhost","root","root");
$db = mysql_select_db("Time_sheet",$con);
$get=mysql_query("SELECT Emp_id FROM Employee");
<html>
<body>
<form>
<select>
<option value="0">Please Select</option>
<?php
while($row = mysql_fetch_assoc($get))
?>
<option value = "<?php echo($row['Emp_id'])?>" >
<?php echo($row['Emp_id']) ?>
</option>
<?php
?>
</select>
</form>
</body>
</html>
【讨论】:
如果选项与可见文本相同,则没有理由为选项声明value
属性。【参考方案3】:
您必须使用 while 循环在选择框中显示选项。试试这个...
$con = mysql_connect("localhost","root","root");
$db = mysql_select_db("Time_sheet",$con);
$get=mysql_query("SELECT Emp_id FROM Employee order by Emp_id");
<html>
<body>
<form>
<select>
<?php
while($row = mysql_fetch_assoc($get))
?>
<option value="<?php echo $row['Emp_id']; ?>"><?php echo $row['Emp_id']; ?></option>
<?php
?>
</select>
</form>
</body>
</html>
【讨论】:
【参考方案4】:<?php
$con = mysql_connect("localhost","root","root");
$db = mysql_select_db("Time_sheet",$con);
$get=mysql_query("SELECT Emp_id FROM Employee");
?>
<html>
<body>
<form>
<select>
<?php
while($row = mysql_fetch_assoc($get))?>
<option value = "<?php echo($row['Emp_id'])?>" ></option>
<?php ?>
</select>
</form>
</body>
【讨论】:
只有代码的答案在 *** 上的价值很低。【参考方案5】:<?php
$con = mysql_connect("localhost","root","root");
$db = mysql_select_db("Time_sheet",$con);
$res=mysql_query("SELECT Emp_id FROM Employee");
?>
<html>
<body>
<form>
<select>
<?php
while ($row = $res->fetch_assoc())
echo '<option value=" '.$row['id'].' "> '.$row['name'].' </option>';
?>
</select>
<form>
</body>
</html>
【讨论】:
我们不应该在 2017 年看到mysql_
的答案。纯代码答案在 *** 上的价值很低。
感谢您的宝贵意见...我会提高自己。
编辑时确保不要混合使用面向对象和过程化mysqli
语法。【参考方案6】:
有一些提示可以压缩此任务的代码块——太多了,无法在接受的答案下发表评论。
测试代码:
if (!$con = new mysqli("localhost", "root", "root", "Time_sheet"))
echo "Database Connection Error: " , $con->connect_error; // don't show actual error in "production" stage
elseif (!$result = $con->query("SELECT Emp_id FROM Employee ORDER BY Emp_id"))
echo "Syntax Error: " , $con->error; // don't show actual error in "production" stage
else
echo "<select>";
foreach ($result as $row)
echo "<option>$row['Emp_id']</option>";
echo "</select>";
if
行既声明了$con
,又在一步中检查它是否存在错误的返回值。
切勿向您的用户提供原始连接或查询错误。在开发过程中没关系,但您不希望陌生人访问您的服务器将提供的关键/信息性错误。这是安全的基本最佳做法。
elseif
行既声明了$result
,又在一步中检查它是否存在错误的返回值。
else
块将处理由于成功的 SELECT 查询而生成的零行或多行数据。
mysqli 结果是“可遍历的”,这意味着您可以使用foreach()
对其进行迭代,并通过关联键直接访问行数据。 PHP Manual ReferenceAnother *** Post
通过插值将数组元素写入文字字符串时,最好将元素括在花括号中(尽管并非总是必要的)。这通常会在 IDE 中触发有用的突出显示,并确保数组后面的字符不会意外地与变量名本身耦合。
您只需要在<option>
标记内写入value
属性,前提是该值与开始和结束标记之间的文本(<option>the text in here</option>
) 不同。如果省略多余的 value
属性,表单提交和 javascript 实现将全部工作。
如果您确实希望在选择字段而不是文本中提交不同的值,语法如下所示:
echo "<option value=\"$row['Emp_id']\">$row['Emp_name']</option>";
如果您想基于预先存在的变量(例如 $selected_id
)在其中一个选项上编写 selected
属性,它可以如下所示:
echo "<option" , ($row['Emp_id'] == $selected_id ? " selected" : "") , ">$row['Emp_name']</option>";
如果你想结合前面的两个过程,它可以是这样的:
echo "<option value=\"$row['Emp_id']\"" , ($row['Emp_id'] == $selected_id ? " selected" : "") , ">$row['Emp_name']</option>";
【讨论】:
以上是关于在选择框中显示 Mysql 表字段值的主要内容,如果未能解决你的问题,请参考以下文章