2016-03-01 2 views
0

Я новичок в PHP, и я пытаюсь создать динамический раскрывающийся список из PostgreSQL-запроса. В основном сценарий запрашивает у моей базы данных, какие курсы (школьные курсы) существует, а затем создает раскрывающийся список всех доступных курсов.Динамический раскрывающийся список, не отображающий строки

Он подключается к базе данных и извлекает правильные значения (я сам это подтвердил), но они отображаются как пустые строки при открытии раскрывающегося списка. Что еще более странно, так это то, что если база данных содержит два курса, в раскрывающемся списке будут два пустых поля, а если их три, тогда у списка также есть три пустых поля.

Это мой код:

<html> 
<body> 
The user interface for <?php echo $_POST["name"]; ?><br> 

<?php 
// Connecting, selecting database 
$dbconn = pg_connect("host=*** dbname=*** user=*** password=***") 
    or die('Could not connect: ' . pg_last_error()); 

// Query for Course Information (for the drop-down box) 
$query = 'SELECT * FROM courseinformation'; 
$result = pg_query($query) or die('Query failed: ' . pg_last_error()); 

// Initialize the drop-down list (html-code) 
echo "<p>Drop-down list:</p><br>"; 
echo "<select name=\"formCourse\">"; 
echo " <option value=\"\">Select Course</option>"; 

// Create the items in the drop-down list 
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) { 
    echo "<option value=\"foo\">$line[0]</option>"; 
} 

// End the drop-down list 
echo "</select>"; 
echo "</p>"; 

// Free resultset 
pg_free_result($result); 

// Closing connection 
pg_close($dbconn); 
?> 

</body> 
</html> 

И вот картина того, что она выглядит следующим образом: What it looks like

Просить $line вместо $line[0] дает этот результат: enter image description here

Что происходит неправильно?

ответ

1

Вы извлекаете результаты, передавая флаг PGSQL_ASSOC. Это означает, что результаты не будут численно индексироваться, например $ line [0], но они будут ассоциативным массивом с ключом массива, который соответствует заголовку столбца postgres. Так может быть $ line ['courseTitle'].

+0

Спасибо, но я не могу его вообще скомпилировать (на веб-сайте отображается пустой экран). Какой флаг можно использовать для индексирования столбцов? Редактировать: Nevermind, нашел его! Это был PGSQL_NUM, и теперь я могу использовать индексы. Благодаря! – Mossmyr

+1

изменить строку, находящуюся в то время ($ line = pg_fetch_array ($ result)) {поскольку все, кроме ресурса, необязательно в любом случае –