Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод массива в тег Select
Форумы портала PHP.SU » PHP » Программирование на PHP » Вывод массива в тег Select

Страниц (1): [1]
 

1. allforweb - 02 Октября, 2010 - 18:15:09 - перейти к сообщению
Я вывел в массив список категорий, а загнать их в выпадающий список SELECT не получается. Подскажите где ошибка:

Список категорий получил циклом For
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query ("SELECT name FROM cat ORDER BY name");
  2.                 $myrow = mysql_fetch_row ($result);
  3.  
  4.             for ($cat=0; $cat<mysql_num_rows($result); $cat++)
  5.             {
  6.           $final = mysql_fetch_array($result);
  7.           echo "$final[name]<br>";
  8.              }


Список выводится на странице корректно, а вот тег Select пустой

PHP:
скопировать код в буфер обмена
  1. <select name=\"cat\">Выбрать Категорию</select>         for ($cat=0; $cat<mysql_num_rows($result); $cat++)
  2.             {
  3.          $final = mysql_fetch_array($result);
  4.          echo <option>$final[name]</option>;
  5.             }
2. Uchkuma - 02 Октября, 2010 - 18:27:09 - перейти к сообщению
Выбрать элементы в массив можно так:
PHP:
скопировать код в буфер обмена
  1. $items = array();
  2. while($myrow = mysql_fetch_assoc($result)){
  3. $items[] = $myrow;
  4. }

А вывести из него в список вот так:
PHP:
скопировать код в буфер обмена
  1. echo 'Выбрать Категорию <select name="cat">';
  2. foreach($items as $item){
  3. echo '<option>'.$item['name'].'</option>';
  4. }
  5. echo '</select>';
Так будет правильнее, чем ваш ваши циклы for. А ошибка у вас еще в том, что вы select закрыли не в том месте. И надпись "Выбрать категорию" тоже не в том месте.
3. allforweb - 02 Октября, 2010 - 20:50:24 - перейти к сообщению
Ошибка здесь:

PHP:
скопировать код в буфер обмена
  1. echo '<option>'.$item['name'].'</option>';


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting
4. JustUserR - 03 Октября, 2010 - 01:17:43 - перейти к сообщению
allforweb пишет:
Список выводится на странице корректно, а вот тег Select пустой
Причиной неправильного вывода списковой информации в виде представления select-элемента может быть содержание их в недостаточном уровне кодирования - в частности если имя выводимой категории является произвольной строкой и содержит неограниченный набор составляюших компонентных символов - то необходимо проводить предварительное HTML-мнемонирование для обеспечения правильного результата - кроме того вы можете просмотреть исходный код сгенерированной HTML-страницы для просмотра значений и уровня интерполируемых значений и определения возможной ошибки
5. Alisandres - 04 Октября, 2010 - 11:55:16 - перейти к сообщению
allforweb
Проверь поля в базе данных или скажи их нам.
Вот мой код которым я выбираю поля:

PHP:
скопировать код в буфер обмена
  1.        
  2. mssql_select_db($db_name, $db_connect) or die ("system_error". __LINE__ );
  3. $query = mssql_query("SELECT * FROM table", $db_connect) or die ("system_error". __LINE__ );
  4. if(mssql_num_rows($query)<=0)
  5. {
  6.         echo ("записей не обнаружено!");
  7.         }else{
  8.                 echo ("SELECT: <select name=\"name\">");
  9.                 while ($row = mssql_fetch_array($query))
  10.                 {
  11.                         echo ("<option value=\"$row[id]\">$row[name]</option>\n");
  12.                 };
  13.                 echo ("</select>");
  14.                
  15. };
  16.  

 

Powered by ExBB FM 1.0 RC1