2011-11-16 111 views
0

我刚刚开始学习PHP上周,我想填充从MySQL数据库我的HTML形式下拉列表中的值。下拉菜单显示,但只显示“选择”作为选项。我做错了什么,任何帮助将继续赞赏。以下是我的代码的问题部分。从php mysql下拉列表

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

回答

1

这是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> 
+0

非常感谢,它没有工作 – dansasu11

1

变化

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

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

来连接,而不是总是在不断变化的价值..也考虑关闭选项标签..

+0

好吧把零件改成了$ options。=“

+0

,你确定结果正在提取?例如:我看到没有错误处理..尝试类似:if(!$ results)echo mysql_error($ dbc);并看看你是否收到任何消息 – mishu

1

后贝内迪克特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> 
+0

其给我服务器错误 – dansasu11

+0

@paabobo在'500内部服务器错误'? – check123

+0

@paabobo在'while'循环条件下,它应该是'$ results'而不是'$ result'。我纠正了代码 – check123

0

试试这个:

<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> 
+0

出来一个空箱子 – dansasu11

0

由于 “选择” 是硬编码的选项,它总是显示。 由于变量$options为空,您没有收到更多结果。 您可以使用var_dump($options)进行验证。

您的空变量的原因是while-iteration。你的功能mysql_fetch_array()永远不会返回true。

那是因为你在混合驱动程序。您通过mysqli连接,因此mysql_fetch_array不起作用。

您有两种选择:更改为使用mysql-driver进行连接或重新编码迭代以使用mysqli-api。