2011-11-16 139 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。