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

Форум MySQL

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

 

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

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

тема: Выборка из бд. Сложное условие: двухтабличное!
 
 автор: One art galery   (02.02.2007 в 13:12)   письмо автору
 
 

Делается меню на сайт(выпадающие) есть уловие чтобы можно было дабавлять и убирать пункты в меню! меню вида:
---глав. пункт----- | ---глав пункт---- |
-пункт ниже--- | -пункт ниже--- |(пунктов ниже может быть сколько угодно в одном глав пункте)

Есть две таблице в первой(menyglav) находяться все заглавные пункты
а во второй таблице находятся все пункты ниже

меню сделано на css:

<div class="пункт главный">
   <div class="пункт ниже">
   <div class="пункт ниже">
   <div class="пункт ниже">
<div class="пункт главный">
   <div class="пункт ниже">
   <div class="пункт ниже">
   <div class="пункт ниже">


Пытался сделать, но не получилось сотавить условие!
прдпологаю что нужно втиснуть в одни вывд из бд, другой вывод(выводящий "пункт ниже")!

дамп таблиц:

Create table menyglav (
  id_menyglav INT(11) not NULL AUTO_INCREMENT,
  name tinytext not null,    // имя
  url TINYTEXT not null,    // ссылку
  title TINYTEXT NOT NULL,  // титл ссылки
  adminurl TINYTEXT NOT NULL,  //так для нужд
  timeup DATETIME NOT NULL,    // время последнег редактирования
  primary key (id_menyglav));

Create table podmeny (
  id_podmeny INT(11) NOT NULL AUTO_INCREMENT,
  podname TINYTEXT NOT NULL,
  podurl TINYTEXT NOT NULL,
  podtitle TINYTEXT NOT NULL,
  idglav SMALLINT NOT NULL,  
  podtimeup DATETIME NOT NULL,
  primary key (id_podmeny));



Не написал самое главное:
ЗАДУМКА ТАКОВА: ВО ВТОРОЙ ТАБЛИЦЕ ЕСТЬ ПУНКТ "IDGLAV" НЕМ БУДЕТ СОДЕРЖАТЬСЯ ID_MENYGLAV , И ВЫВОДИТЬСЯ БУДЕТ ПО ЭТОМУ ПРИЗНАКУ!

   
 
 автор: One art galery   (02.02.2007 в 14:33)   письмо автору
 
   для: One art galery   (02.02.2007 в 13:12)
 

скрипт не рабочий, но задмка там прослеживается!

$query = "SELECT * FROM menyglav";
  $cat = mysql_query($query);
  if(!$cat) exit(mysql_error());


  While(list($id_menyglav, $name, $url, $adminurl, $title, $timeup) = mysql_fetch_row($cat))
   {
echo "<ul>
<li><a class=\"outer\" href=\"$url\" title=\"$title\">$name</a></li>";

$query2 = "SELECT * FROM podmeny, menyglav Where podmeny.idglav = menyglav.id_menyglav";
  $cat2 = mysql_query($query2);
  if(!$cat2) exit(mysql_error());
  While(list($podname, $podurl, $adminpurl, $podtitle, $idglav, $podtimeup) = mysql_fetch_row($cat2))
   {
echo "<li><a class=\"inner\" href=\"$podurl\" title=\"$podtitle\">$podname</a></li>";
   }
echo "</ul>";

}

   
 
 автор: tonnal   (02.02.2007 в 20:03)   письмо автору
 
   для: One art galery   (02.02.2007 в 13:12)
 

может я конечно что, то не понял но для оргинизации меню и подменю не нужно городить огород из таблиц. Иерархия разделов делается в одной таблице, где нужны два обязательных поля: ID-первичный ключ и P_ID - родитель (у корневых - 0).

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

А т.к. получаем рекурсивную структуру данных, то и обрабатывать их нужно рекурсиями.

Есть вопросы стучитесь в асю.

---

One art galery не согласен что стоит сразу генерить html, лутше собрать в массив а дальше юзать по мере надобности.

   
Rambler's Top100
вверх

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