Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод родительской категории
 
 автор: allforweb   (07.04.2011 в 00:53)   письмо автору
 
 

Подскажите с решением такой задачи:
есть категории и подкатегории со структурой таблицы в БД id - name - parent (категория родитель, если она равна 0, это категория, если нет - подкатегория). Добавление категории сделал, а вот задачу по модулю редактирования уже созданных категорий решить не могу.

Как сделать чтобы при редакировании категории выводилась в выпадающем списке категория родитель с элементом selected, т.е. чтобы видно было кто родитель подкатегории.

Первую часть кода написал, если родителя нет:
while ($myrow = mysql_fetch_assoc($result)) {
                 if ($myrow['parent'] == 0) {
      $cat .='<option value="'. $myrow['id_cat'] .'">'. $myrow['name'] .'</option>';               
                 } else {
      а вто здесь уже проблема
                 }

  Ответить  
 
 автор: cheops   (07.04.2011 в 09:21)   письмо автору
 
   для: allforweb   (07.04.2011 в 00:53)
 

Можно воспользоваться рекурсивной функцией
<?php
  
// Выпадающий список каталогов
  
function get_catalog($id_cat 0$indent "")
  {
    
// Объявляем имя таблицы глобальным
    
global $tbl;

    
// Предотвращаем SQL-инъекцию
    
$id_cat intval($id_cat);

    
// Формируем список
    
$query "SELECT * FROM $tbl_cat
              WHERE id_par = 
$id_cat
              ORDER BY name"
;
    
$cat mysql_query($query);
    if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error());
    if(empty(
$id_cat)) $subcat[0] = "Не выбрано";
    if(
mysql_num_rows($cat))
    {
      while(
$catalog mysql_fetch_array($cat))
      {
        
$subcat[$catalog['id_cat']] = "   $indent$catalog[name]";
        
$arr get_catalog($catalog['id_cat'], "   $indent");
        if(!empty(
$arr)) $subcat $subcat $arr;
      }
    }
    return 
$subcat;
  }
?>
Функция возвращает массив с ключами id_cat и именами разделов и подразделов с отступами, которые соответствуют их уровню вложенности.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования