2010-12-01 8 views
2

Я не могу получить значения таблицы в своем раскрывающемся списке. У меня нет ошибок, только пустой выпадающий список. Это мой код:Выпадающий список PHP с элементами из базы данных

<?php    
include_once ("classes/Keten.class.php"); 
$keten = new Keten(); 
$allKet = $keten->getAllKetens(); 

echo '<select name="fk_keten_id">';    
while($row = mysql_fetch_array($allKet)) 
{ 
    echo '<option value="' . 
     $row['pk_keten_id'] . '">' . $row['keten_naam'] . '</option>'; 
} 
echo '</select>'; 
?> 

Функция getAllKetens работает, потому что я использую его в другой странице.

Заранее спасибо :)

по запросу, функция getAllKet() в классах/Keten.class.php

public function getAllKetens() 
    { 
     include ("connection.php"); 
     $sSql = "SELECT * FROM tblKetens;"; 
     $vResult = mysqli_query($link, $sSql); 
     mysqli_close($link); 
     return($vResult); 
    } 
+1

Не могли бы вы отладить $ allKet и сообщить нам, что вы получаете? – RabidFire 2010-12-01 18:54:35

+1

do print_r ($ allket); что сказать? – Breezer 2010-12-01 18:56:53

ответ

2

Я не уверен, что можно смешивать команды mysqli и mysql, в вашем fetch_array вы использовали mysql_fetch_array вместо mysqli_fetch_array.

0
  • Убедитесь, что ошибки включены
  • Открыть источник , Если есть какие-либо ошибки, они будут спрятаны тегом select
  • Сделайте print_r($allket);, чтобы узнать, действительно ли возвращен getAllKeten() anyt Хин.
+0

с print_r ($ allket); Я получаю «1» – 2010-12-01 19:03:37

+0

@Glenn: Тогда вам нужно проверить свою функцию `getAllKetens` - возможно, разместите код в своем вопросе. – casablanca 2010-12-01 19:08:34

0

Эта часть кода выглядит отлично:

echo '<select name="fk_keten_id">';    
while($row = mysql_fetch_array($allKet)) 
{ 
    echo '<option value="' . 
     $row['pk_keten_id'] . '">' . $row['keten_naam'] . '</option>'; 
} 
echo '</select>'; 

Ваша проблема должна лежать в $ allKet.

Вам нужно предоставить Keten() любые аргументы для инициализации чего-либо?

+0

нет Keten() не нуждается аргументы – 2010-12-01 19:14:57

0

Я подозреваю, что $ allKet - это не то, что вы думаете.

Сначала проверьте HTML. Если вы получаете <, выберите имя = "???"> </select> then

a) Проверить $ allKet - это resouce (думаю, print_r скажет вам). b) Убедитесь, что SQL выбирает строки. (попробуйте в phpmyadmin) c) Убедитесь, что у вас есть правильные варианты написания имен полей.

Если вы видите < значение параметра = «??»> </опция> записи, затем

а) Проверьте имена полей вы печатаете правильны б) Проверьте, что вы не скрывая их с псевдоним (печать покажет последнее поле).

Включить отчет об ошибках (в php.inf) и удалить все сообщения об ошибках.

+0

я обнаружил ошибку в HTML: <выберите имя = «fk_keten_id»>
Предупреждение: mysql_fetch_array(): поставляется аргумент не является допустимым MySQL результаты ресурс в /главный/****/addLocatie.php на линии
Я не работаю на локальном хосте, так что я не могу позволить ошибки – 2010-12-01 19:19:26

0

Хорошо я получил его

Использование: в то время как ($ строка = mysqli_fetch_assoc ($ allKet))

вместо: в то время как ($ строка = mysql_fetch_array ($ allKet))

Спасибо всем за ваши быстрые ответы!

+0

приятно сообществу (и нашей репутации), чтобы отметить, какие бы ни ответ помогли вам (наиболее) как «приняты» - зеленый галочка – zanlok 2010-12-01 19:49:37

1

Ваша функция getAllKetens() закрывает базу данных. Вы не должны пытаться получить строку после закрытия соединения с базой данных.

Мыльница в стороне: Возможно, было бы неплохо иметь еще более стандартное соглашение об именовании. Если вы возвращаете дескриптор объекта запроса mysql, рассмотрите $ query или $ hQuery вместо того, что (для меня) намного более загадочно, как $ allKet. IMO, если функция называется «getAllKetens()», она должна возвращать массив данных, а не дескриптор запроса.