2016-04-14 170 views
0

我有以下while循環,這是我用來創建一個下拉列表中選擇含有日期取出從數據庫:While循環打印附加空行

$sql = "SELECT name FROM persons"; 
$result = mysql_query($sql); 
while ($row = mysql_fetch_array($result)) { 
    echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>"; 
} 

while循環打印的附加空行到降列表,即列表中出現空行。我怎樣才能避免這種情況?

+1

小邊注:如果該值與顯示的文本相同,您可以省略'value'屬性 - 它將默認顯示文本。 ''將產生「約翰史密斯」作爲它的價值。 –

+0

投票結束 - 數據庫中有一個「NULL」或「empty」記錄。 – skrilled

+1

停止使用MySQL,[開始使用MySQLi](http://stackoverflow.com/questions/12020227/updating-from-mysql-to-mysqli)。你將活着享受變化:-) – Martin

回答

1

此代碼中沒有內容會打印空白選項。你確定你的數據庫中沒有記錄名稱爲空或空的記錄嗎?

嘗試增加

WHERE name IS NOT NULL and name != "" 

到您的查詢

0

聽起來像是你有你的結果從數據庫中的空行。您可以檢查人員表,或者你可以通過執行類似下面的修復它的代碼:這樣

$sql = "SELECT name FROM persons"; 
$result = mysql_query($sql); 
while ($row = mysql_fetch_array($result)) { 
    if (!empty($row['name'])) { 
     echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>"; 

    } 
} 
+1

這將仍然打印一個空的選項,因爲isset()將返回true,因爲該值可能是一個空字符串。您應該使用!empty()代替 –

+0

Doh沒有注意。更新。 – Codar

0

只需使用PHP空函數:

$sql = "SELECT name FROM persons"; 
$result = mysql_query($sql); 
    while ($row = mysql_fetch_array($result)) { 
     if(!empty($row['name'])) 
     { 
      echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>"; 
     } 
}