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

Форум MySQL

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

 

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

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

тема: Подскажите как сделать вывод подкатегорий выбранной категории
 
 автор: dirol   (25.03.2011 в 21:57)   письмо автору
 
 

скриптом выводятся категории


    $cat=$_GET['cat'];
     $result = $db->sql_query("SELECT id, modul, title, description, img, language, parentid FROM ".$prefix."_categories ORDER BY modul ASC");
    while (list($sid, $modul, $title, $description, $img, $language, $parentid) = $db->sql_fetchrow($result)) {
     if($parentid==0)$content .= "<li class=\"category-top\"><span class=\"top-span\"><a class=\"category-top\" href=\"?cat=$sid\">$title</a></span></li>\n";

        $result = $db->sql_query("SELECT id, modul, title, description, img, language, parentid FROM ".$prefix."_categories WHERE parentid='$cat' ORDER BY modul ASC");
          $content .=  "<div>";
         while (list($sid, $modul, $title, $description, $img, $language, $parentid) = $db->sql_fetchrow($result)) {
         $title =($title);
         $content .=  "<a class=\"menu_right_sub\" href=\"#\">".($title)."</a>";
     }

     $content .=  "</div>";

    }


при нажатии должны появляться под категории под конкретной категорией как на сайте 100moek.ru подскажите как правильно сделать

  Ответить  
 
 автор: dirol   (26.03.2011 в 10:07)   письмо автору
 
   для: dirol   (25.03.2011 в 21:57)
 

помогите пожалуйста

  Ответить  
 
 автор: cheops   (26.03.2011 в 10:44)   письмо автору
 
   для: dirol   (25.03.2011 в 21:57)
 

Подкатегории хранятся в той же таблице, что и категории? Если да, то по каким столбцам они связаны?

  Ответить  
 
 автор: dirol   (26.03.2011 в 19:45)   письмо автору
 
   для: cheops   (26.03.2011 в 10:44)
 

да в тойже




-- 
-- Структура таблицы `cms_categories`
-- 

CREATE TABLE `cms_categories` (
  `id` int(11) NOT NULL auto_increment,
  `modul` varchar(50) NOT NULL default '',
  `title` varchar(100) NOT NULL default '',
  `description` text NOT NULL,
  `img` varchar(100) NOT NULL default '',
  `language` varchar(30) NOT NULL default '',
  `parentid` int(11) NOT NULL default '0',
  `level` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `modul` (`modul`),
  KEY `parentid` (`parentid`)
) ENGINE=MyISAM AUTO_INCREMENT=352 DEFAULT CHARSET=utf8 AUTO_INCREMENT=352 ;

-- 
-- Дамп данных таблицы `cms_categories`
-- 

INSERT INTO `cms_categories` VALUES (1, 'blanco', 'Мойки гранитные', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (2, 'blanco', 'Мойки нержавеющие', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (3, 'blanco', 'Мойки нержавеющие декор', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (221, 'smesitile', 'COSTA', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (5, 'longran', 'Мойки гранитные', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (6, 'longran', 'Мойки нержавеющие', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (7, 'pages', 'Материалы', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (9, 'teka', 'Мойки гранитные', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (14, 'schock', 'Гранитные', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (16, 'smesitile', 'Смесители Atoll', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (18, 'smesitile', 'Смесители HANSGROHE', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (20, 'smesitile', 'Смесители GROHE', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (21, 'blanco', 'Смесители BLANCO', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (22, 'schock', 'Смесители SCHOCK', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (201, 'smesitile', 'LINEARE    ', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (35, 'longran', 'Смесители  Longran', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (28, 'accessories', 'HAILO', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (191, 'smesitile', 'EUROSMART', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (58, 'accessories', 'Системы сортировки отходов BLANCO', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (78, 'shop', 'Аксессуары 2', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (79, 'shop', 'Выдвижные розетки EVOline', '', '', '', 78, 0);
INSERT INTO `cms_categories` VALUES (91, 'teka', 'Мойки нержавейка', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (231, 'smesitile', 'GROHTHERM', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (211, 'smesitile', 'MINTA', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (141, 'smesitile', 'CHIARA', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (151, 'smesitile', 'CONCETTO', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (161, 'smesitile', 'ARIA', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (171, 'smesitile', 'EURODISC', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (181, 'smesitile', 'EUROPLUS', '', '', '', 20, 0);
INSERT INTO `cms_categories` VALUES (251, 'smesitile', 'ТЕРМОСТАТЫ', '', '', '', 18, 1);
INSERT INTO `cms_categories` VALUES (261, 'smesitile', 'Metropol E', '', '', '', 18, 2);
INSERT INTO `cms_categories` VALUES (271, 'smesitile', 'TALIS', '', '', '', 18, 3);
INSERT INTO `cms_categories` VALUES (281, 'aquasanita', 'Кухонные мойки', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (291, 'aquasanita', 'Гранитные смесители', '', '', '', 0, 0);
INSERT INTO `cms_categories` VALUES (301, 'smesitile', 'RAINDANCE', '', '', '', 18, 4);
INSERT INTO `cms_categories` VALUES (311, 'smesitile', 'CROMETTA', '', '', '', 18, 5);
INSERT INTO `cms_categories` VALUES (321, 'smesitile', 'CROMA', '', '', '', 18, 6);
INSERT INTO `cms_categories` VALUES (341, 'smesitile', 'EUROSTYLE', '', '', '', 20, 1);
INSERT INTO `cms_categories` VALUES (351, 'smesitile', 'EUROEKO', '', '', '', 20, 2);


parentid отвечает за родителя

  Ответить  
 
 автор: cheops   (26.03.2011 в 19:56)   письмо автору
 
   для: dirol   (25.03.2011 в 21:57)
 

Если я правильно все понял, блок вывода подкатегорий следует поместить в условие $cat == $sid
<?php
  
...
     
$cat=$_GET['cat']; 
     
$result $db->sql_query("SELECT id, modul, title, description, img, language, parentid FROM ".$prefix."_categories ORDER BY modul ASC"); 
    while (list(
$sid$modul$title$description$img$language$parentid) = $db->sql_fetchrow($result)) { 
     if(
$parentid==0)$content .= "<li class=\"category-top\"><span class=\"top-span\"><a class=\"category-top\" href=\"?cat=$sid\">$title</a></span></li>\n"
        if(
$cat == $sid)
        {
          
$result $db->sql_query("SELECT id, modul, title, description, img, language, parentid FROM ".$prefix."_categories WHERE parentid='$cat' ORDER BY modul ASC"); 
          
$content .=  "<div>"
          while (list(
$sid$modul$title$description$img$language$parentid) = $db->sql_fetchrow($result)) { 
             
$title =($title); 
             
$content .=  "<a class=\"menu_right_sub\" href=\"#\">".($title)."</a>"
           } 
       }

     
$content .=  "</div>"

    }
  ...
?>

  Ответить  
 
 автор: dirol   (26.03.2011 в 20:20)   письмо автору
 
   для: cheops   (26.03.2011 в 19:56)
 

да спасибо так работает. подскажи пожалуйста как выводить еще под категории которые появляются имено под той категорией на которую нажали а не внизу всех категорий

  Ответить  
 
 автор: cheops   (26.03.2011 в 20:24)   письмо автору
 
   для: dirol   (26.03.2011 в 20:20)
 

Оформите их в виде вложенного списка, а не в виде <div>-блока.

  Ответить  
 
 автор: dirol   (26.03.2011 в 20:25)   письмо автору
 
   для: cheops   (26.03.2011 в 20:24)
 

подскажи пожалуйста как. можно без дивов можно с echo, заранее огромное спасибо за помощь

  Ответить  
 
 автор: cheops   (26.03.2011 в 20:32)   письмо автору
 
   для: dirol   (26.03.2011 в 20:25)
 

Примерно так
<?php
    
... 
   
$cat=$_GET['cat'];  
   
$query "SELECT id, modul, title, description, img, language, parentid 
             FROM "
.$prefix."_categories ORDER BY modul ASC";
     
$result $db->sql_query($query);  
    while (list(
$sid$modul$title$description$img$language$parentid) = $db->sql_fetchrow($result)) {  
     if(
$parentid==0$content .= "<li class=\"category-top\"><span class=\"top-span\"><a class=\"category-top\" href=\"?cat=$sid\">$title</a></span></li>\n";  
        if(
$cat == $sid
        { 
          
$query "SELECT id, modul, title, description, img, language, parentid
                    FROM "
.$prefix."_categories WHERE parentid='$cat' ORDER BY modul ASC";
          
$result $db->sql_query($query);  
          
$content .=  "<li><ul>";  
          while (list(
$sid$modul$title$description$img$language$parentid) = $db->sql_fetchrow($result)) {  
             
$title =($title);  
             
$content .=  "<li><a class=\"menu_right_sub\" href=\"#\">".($title)."</a></li>";  
           }  
         
$content .=  "</ul></li>";  
       } 
    } 
  ... 
?>

  Ответить  
 
 автор: dirol   (26.03.2011 в 20:41)   письмо автору
 
   для: cheops   (26.03.2011 в 20:32)
 

не сработало под категории выводятся под всем списком

  Ответить  
 
 автор: cheops   (26.03.2011 в 20:44)   письмо автору
 
   для: dirol   (26.03.2011 в 20:41)
 

Это уже нужно HTML-код обустраивать, чтобы позиции выведенные посреди списка не выносило за пределы этого списка.

  Ответить  
 
 автор: dirol   (26.03.2011 в 23:14)   письмо автору
 
   для: cheops   (26.03.2011 в 20:44)
 

цепанул одну функцию


function categories_list($level, $path, $sel){
    global $prefix, $db, $conf;
    $out = array();
    $cnt = 0;
    $q = $db->sql_query("SELECT id, title from ".$prefix."_categories WHERE parentid='$path' ORDER BY title");
    while ($row = $db->sql_fetchrow($q)){
        $out[$cnt][0] = $row[0];
        $out[$cnt][1] = $row[1];
        $out[$cnt][2] = $level;
        $cnt++;



    }

    return $out;

}




  $categoryID=78; // по умолчанию для проверки
     $out = categories_list(0, 0, $categoryID);

  for ($i = 0; $i <=count($out); $i++) {


  if ($categoryID == $out[$i][0]){

    echo"<b><font color=brown>".$out[$i][1]."-".$out[$i][0]."</font></b><br>";
    $result = $db->sql_query("SELECT id, title FROM ".$prefix."_categories WHERE parentid <>0 AND parentid='".$out[$i][0]."' ORDER BY title");
     if ($db->sql_numrows($result) > 0) {
      while (list($id, $title) = $db->sql_fetchrow($result)) {
          echo"---<a href=\"index.php?categoryID=".$id."\">".$title."</a><br>";
      }
     }

   }else{

    echo"<a href=\"index.php?categoryID=".$out[$i][0]."\">".$out[$i][1]."</a><br>";


  }
 }



все работает как надо. хотел бы мнение услышать, стоит так использовать код?

  Ответить  
 
 автор: cheops   (26.03.2011 в 23:45)   письмо автору
 
   для: dirol   (26.03.2011 в 23:14)
 

Если все работает как надо, то конечно стоит :)

  Ответить  
 
 автор: dirol   (27.03.2011 в 00:19)   письмо автору
 
   для: cheops   (26.03.2011 в 23:45)
 

спасибо еще раз за помощь. не раз уже помогал. большое тебе спасибо

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

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