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

Форум MySQL

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

 

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

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

тема: Дерево каталога из mysql (помогите)
 
 автор: virtus   (06.01.2006 в 15:12)   письмо автору
 
 

Привет. Пытаюсь самотужки написать каталог продукции. Вот структура бд

CREATE TABLE catal_cat (
  idcat int(11) NOT NULL auto_increment,
  pidcat int(11) default '0',
  name varchar(255) default NULL,
  description text,
  picture varchar(30) default NULL,
  PRIMARY KEY  (idcat)
) ENGINE=MyISAM;

CREATE TABLE catal_prod (
  idprod int(11) NOT NULL auto_increment,
  idcat int(11) default NULL,
  name varchar(255) default NULL,
  description text,
  price float default NULL,
  picture varchar(30) default NULL,
  s_picture varchar(30) default NULL,
  b_picture varchar(30) default NULL,
  sklad int(1) default NULL,
  d_pole1 text,
  d_pole2 varchar(255) default NULL,
  d_pole3 varchar(255) default NULL,
  PRIMARY KEY  (idprod)
) ENGINE=MyISAM;


я вывожу категории в которых pidcat равен нулю (т.е. которые не являются подкатегориями)!!!
ВОПРОС: как мне вывести подкатегории под нужную мне категорию при клике на линк
т.е. при клике на нужную категорию, что бы под ней вывелись все подкатегории...
вроде ясно пояснил.
спасибо

   
 
 автор: cheops   (06.01.2006 в 15:26)   письмо автору
 
   для: virtus   (06.01.2006 в 15:12)
 

Для этого через ссылку передайте idcat корневого каталога
<a href=index.php?idcat=1>dfjd;lfj;ds</a>

И проверяйте, если файлу передан параметр $_GET['idcat'], то выводите подкатегории при помощи запроса
SELECT * FROM catal_cat WHERE pidcat = $_GET['idcat']

Только предварительно проверьте, чтобы $_GET['idcat'] было целочисленным
<?php
  
if(!preg_match("|^[\d]+$|",$_GET['idcat']) && !empty($_GET['idcat'])) exit("Недопустимый параметр");
?>

иначе будет возможна SQL-инъекция.

   
 
 автор: virtus   (06.01.2006 в 16:42)   письмо автору
 
   для: cheops   (06.01.2006 в 15:26)
 

да я знаю, Но мне нужно, ..вот пример как есть

<?php
$result 
mysql_query("SELECT * FROM $tblName_cat WHERE pidcat ='0' ORDER BY name DESC");
  if (
$result
  { 
    while(
$catalog mysql_fetch_array($result)) 
    { 
      
$pos strpos(substr($catalog['description'],$numchar), " "); 
      
// Если новость длинная, то выводим троеточие... 
      
if(strlen($catalog['description'])>$numchar$srttmpend " >..."
      else 
$strtmpend ""
      
// Выводим анонс 
    
$telo substr($catalog['description'], 0$numchar+$pos).$srttmpend;
      echo 
"<tr><td align=right><a title=\"$telo\" class=catalog href='".$pathlg."/catalog".$catalog['idcat']."'>".$catalog['name']."</a>     
</td></tr>"

    } 
  } 
  else 
"Ошибка"
?>

на выводе:
категория1
категория2
категория3

а нужно
категория1
-подкатегория1
-подкатегория2
----под-подкатегория1
категория2
категория3
-подкатегория1

И так далее
....
спасибо.

   
 
 автор: cheops   (06.01.2006 в 16:51)   письмо автору
 
   для: virtus   (06.01.2006 в 16:42)
 

Если подкатегории вложенные и число вложений заранее не известно - нужно реализовывать меню через рекурсивную функцию.

   
 
 автор: virtus   (06.01.2006 в 17:01)   письмо автору
 
   для: cheops   (06.01.2006 в 16:51)
 

а где ее поглядеть в примерах можно?

   
 
 автор: cheops   (06.01.2006 в 20:52)   письмо автору
 
   для: virtus   (06.01.2006 в 17:01)
 

В электронном виде сейчас вряд ли вспомню, но такая система описывается в PHP 5. Практика создания Web-сайтов.

   
Rambler's Top100
вверх

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