2016-04-14 18 views
0

ben açılan liste oluşturmak için kullanılan aşağıdaki while döngü, veritabanından getirilen tarihini içeren seçmesini:iken döngü baskı ek boş satır

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

while döngüsü baskılar damla içine ek bir boş satırını liste, yani listede görünen boş bir çizgi var. Bundan nasıl kurtulabilirim?

+1

Minör yan not: Eğer Değer, görüntülenen metinle aynıdır, 'value' özniteliğini atlayabilirsiniz - görüntülenen metne varsayılan olarak gelir. "" değeri "John Smith" değerini verecektir. –

+0

Kapatmak için oy - db'nizde bir 'NULL' veya 'boş' kaydı var. – skrilled

+1

MySQL'i kullanmayı bırakın, [MySQLi'yi kullanmaya başlayın] (http://stackoverflow.com/questions/12020227/updating-from-mysql-to-mysqli). Değişikliğin tadını çıkaracaksınız :-) – Martin

cevap

1

Bu koddaki hiçbir şey boş bir seçenek yazdırmaz. Veritabanınızda adın NULL veya boş olduğu bir kayıt olmadığından emin misiniz?

deneyin Eğer veritabanından sonuçlarınızda boş satır var gibi

0

Sesler sorgunuzla

WHERE name IS NOT NULL and name != "" 

ekledi. Bunun için kişilerin tablosunu kontrol edebilir ya da aşağıdaki gibi bir şey yaparak kodunda düzeltmek olabilir: böyle

$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

Bu, boş bir dize olabileceğinden, isset() true olarak döneceğinden, bu hala boş bir seçenek basacaktır. Kullanmalısınız! Boş() yerine –

+0

Doh dikkat etmiyordu. Güncellenmiş. – Codar

0

Hemen kullanmak PHP boş işlevi:

$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>"; 
     } 
}