2016-02-15 3 views
0

Я пытаюсь заполнить список избранных из моей базы данных. Я только хочу, чтобы столбец «blogID» заполнил его, однако я получаю 10 разных selectlists, все говорят «выберите один». Я не совсем уверен, как его решить.Feeding selectlist из базы данных

<?php 
error_reporting(E_ALL); ini_set('display_errors', 1); 
$serverName = "localhost"; 
$uid = "*****"; 
$pwd = "*****"; 
$databaseName = "blog"; 

$connectionInfo = array("UID"=>$uid,        
"PWD"=>$pwd,        
"Database"=>$databaseName); 
$con=sqlsrv_connect($serverName, $connectionInfo); 
if ($con) 
{ 
} else { 
die(print_r(sqlsrv_errors(), true)); 
} 
$result = sqlsrv_query($con,"SELECT TOP 10 * FROM blog_posts ORDER BY blogID DESC"); 
while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_BOTH)) 
{ 
?> 
<select> 
<option selected="selected">Choose one</option> 
<?php 
foreach($row['blogID'] as $name) { ?> 
    <option><?= $name['name'] ?></option> 
<?php 
} ?> 
</select> 

<?php } sqlsrv_close($con); ?> 

что я делаю неправильно? попробовал суровые разные подходы, но это как можно ближе к концу.

+0

Вы должны переместить открывающий тег '' после того, как ваш 'в то время как () 'цикл закрывается. Кроме того, вам не нужно зацикливать ваш '$ row ['blogID']' -> 'foreach ($ row ['blogID'] как $ name)'. Просто выведите его прямо -> '

ответ

2

Просто переместите <select> тег и choose one вариант вне цикла, и нет никакой необходимости foreach цикла. Это правильный способ вашего кода.

<?php 
error_reporting(E_ALL); ini_set('display_errors', 1); 
$serverName = "localhost"; 
$uid = "*****"; 
$pwd = "*****"; 
$databaseName = "blog"; 

$connectionInfo = array("UID"=>$uid,        
"PWD"=>$pwd,        
"Database"=>$databaseName); 
$con=sqlsrv_connect($serverName, $connectionInfo); 
if ($con) 
{ 
} else { 
die(print_r(sqlsrv_errors(), true)); 
} 
$result = sqlsrv_query($con,"SELECT TOP 10 * FROM blog_posts ORDER BY blogID DESC"); 
?> 
<select> 
<option selected="selected">Choose one</option> 
<?php 
while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_BOTH)) 
{ 
?> 
<option><?= $row['name'] ?></option> 
<?php 
} 
?> 
</select> 
<?php 
sqlsrv_close($con); ?> 
3

Потому что вы используете <select> внутри своего цикла while.

Попробуйте это:

<?php 
    error_reporting(E_ALL); ini_set('display_errors', 1); 
    $serverName = "localhost"; 
    $uid = "*****"; 
    $pwd = "*****"; 
    $databaseName = "blog"; 

    $connectionInfo = array("UID"=>$uid,        
    "PWD"=>$pwd,        
    "Database"=>$databaseName); 
    $con=sqlsrv_connect($serverName, $connectionInfo); 
    if ($con) 
    { 
    } else { 
    die(print_r(sqlsrv_errors(), true)); 
    } 
    $result = sqlsrv_query($con,"SELECT TOP 10 * FROM blog_posts ORDER BY blogID DESC"); 
    ?> 
    <select> 
    <option selected="selected">Choose one</option> 
    <?php 
    while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_BOTH)) 
    { 
    ?> 
     <option><?= $row['blogID'] ?></option> 
    <?php } 
    ?> 
    </select> 
    <?php 
    sqlsrv_close($con); ?> 

Пожалуйста, не используйте короткие теги PHP

+2

Также переместите опцию - выберите один за пределами цикла –

+0

Спасибо, на один шаг ближе, теперь я получаю 1 selectlist, но все со значением« выберите один » –

+0

Да, это правильно , Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^