9

我想在选择框中显示 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>

此外,字段值必须按升序显示。如何达到..

4

6 回答 6

17
<?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_*函数。看看这个线程的原因。

于 2013-01-17T05:56:34.650 回答
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>
于 2013-01-17T05:55:30.827 回答
0

您必须使用 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>
于 2013-01-17T05:55:48.243 回答
0
<?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>

于 2013-01-17T06:02:53.790 回答
0
<?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-08-24T09:55:40.477 回答
0

有一些提示可以压缩此任务的代码块——太多了,无法在接受的答案下发表评论。

测试代码:

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 手册参考 另一个 StackOverflow 帖子
  • 通过插值将数组元素写入文字字符串时,将元素包裹在花括号中是一种很好的做法(尽管并非总是必要的)。这通常会在 IDE 中触发有用的突出显示,并确保数组后面的字符不会意外地与变量名本身耦合。
  • 如果值与开始和结束标记 ( )之间的文本不同,您只需要在标记内写入value属性。如果省略了冗余属性,表单提交和 javascript 实现都将相同。<option><option>the text in here</option>value
  • 如果您确实希望在选择字段而不是文本中提交不同的值,则语法如下所示:

    echo "<option value=\"{$row['Emp_id']}\">{$row['Emp_name']}</option>";
    
  • 如果您想selected根据预先存在的变量(例如$selected_id)在其中一个选项上编写属性,它可以如下所示:

    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>";
    
于 2019-01-22T22:08:55.550 回答