繁体   English   中英

mysql的php下拉列表

[英]php dropdown list from mysql

我上周刚开始学习php,我正尝试从mysql数据库的html表单中填充下拉列表的值。 下拉列表显示,但仅显示“选择”作为选项。 我做错了什么,任何帮助将不胜感激。 以下是我的代码的问题部分。

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

 <?php
  require_once('connectvars.php');
  $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  $query = "SELECT event_id, event_name FROM events";

  $results= mysqli_query( $dbc, $query);

  $options="";

 while ($row=mysql_fetch_array($result)) {

 $id=$row["event_id"];
 $event=$row["event_name"];
 $options ="<OPTION VALUE=\"$id\">".$event;
 } 
?>


 <SELECT NAME=eventid>
<OPTION VALUE=0>Choose
  <?php echo $options ?>
 </SELECT> 
</form>

更改

$options ="<OPTION VALUE=\"$id\">".$event;

$options .="<OPTION VALUE=\"$id\">".$event;

串联而不是总是更改值。也可以考虑关闭选项标签。

在Benedikt Olek的回答之后包括更正。

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<?php
 require_once('connectvars.php');
 $dbc = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
 $query = "SELECT event_id, event_name FROM events";
 $db = mysql_select_db(DB_NAME);
 $results= mysql_query( $dbc, $query);
?>


<SELECT NAME=eventid>
<OPTION VALUE=0>Choose</OPTION>
  <?php 
     while($row = mysql_fetch_array($results)
        echo "<option value=\"" . $row['event_id'] . "\">" . $row['event_name'] . "</option>";
  ?>
</SELECT> 
</form>

这是mysql驱动程序解决方案。

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php
    require_once('connectvars.php');
    $dbc = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    $db = mysql_select_db(DB_NAME);
    $results= mysql_query("SELECT event_id, event_name FROM events");
?>
<select name="eventid">
    <option value="0">Choose</OPTION>
    <?php 
        while($row = mysql_fetch_array($results)) {
            echo '<option value="'.$row['event_id'].'">'. $row['event_name'].'</option>';
        }
    ?>
</select> 
</form>

试试这个:

 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 <SELECT NAME=eventid>
 <?php
  require_once('connectvars.php');
  $dbc = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
  mysql_select_db(DB_NAME);
  $query = "SELECT event_id, event_name FROM events";

  $results= mysql_query( $dbc, $query);

  $options="";

 while ($row=mysql_fetch_array($result)) {

 $id=$row["event_id"];
 $event=$row["event_name"];
echo "<OPTION VALUE=".$id\.">".$event."</option>";
 } 
?>

 </SELECT> 
</form>

由于“选择”是一个硬编码选项,因此始终显示。 您不会获得更多结果,因为Variable $options为空。 您可以使用var_dump($options)

空变量的原因是while迭代。 您的函数mysql_fetch_array()永远不会返回true。

那是因为您混淆了驱动程序。 您正在通过mysqli连接,因此mysql_fetch_array无法正常工作。

您有两个选择:更改为使用mysql驱动程序进行连接,或者重新编码迭代以使用mysqli-api。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM