Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
1

Категории разделов

06.09.2011, 14:18. Показов 1152. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите, пожалуйста, с меню...
У меня две таблицы:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE `catalogue` (
`id` INT UNSIGNED AUTO_INCREMENT, 
`title` VARCHAR (50), 
`pid` INT UNSIGNED, 
PRIMARY KEY (`id`)
)
 
CREATE TABLE `adverts` (
`id` int(20) NOT NULL auto_increment,
`category_id` int(11) NOT NULL default '0',
 ...
`body` text NULL,
`title` text (150) NULL,
`img_big` longblob NULL,
`img_small` blob NULL,
`mimetype` varchar(16) NULL default `image/*`,
 PRIMARY KEY (`id`)
 FOREIGN KEY ('category_id') REFERENCES 'catalogue' ('id')
  )
Надо сделать, чтобы при нажатии на разделы меню таблицы catalogue, переходило на страницу с данными с таблицы adverts с сортировкой по category_id.

Вот мой скрипт с выводом меню...
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function tree($pid, $lvl){
        $query = mysql_query("SELECT * FROM catalogue WHERE pid = '$pid'") or die(mysql_error());
        while($categ = mysql_fetch_object($query)){
     
           for($i=0;$i<$lvl;$i++){
           echo " &nbsp;";
          }
          $lvl++;
          echo $categ->title;
           echo "<br>\n";
           tree($categ->id, $lvl--);
        }
    }
    tree(0, 0); //Вывод скрипта
Хотя бы подскажите, а то у меня уже больше 10 страниц (и вывод данных adverts) работают, и нормально, а добавить меню разделов не могу на страницы... Сама пробовала много разных скриптов. Но не работают, даже ошибок не дают, хотя и прописано:
ini_set('display_errors',1);
error_reporting(E_ALL);

Я в тупике и сама похоже не выберусь...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2011, 14:18
Ответы с готовыми решениями:

Категории, под категории, под под категории, добавление товара
Не мог бы кто мне помочь с категориями, под категориями и под под категориями. Проблема в том, что...

Массив из разделов
Работает только для 1 уровня вложенности. Как сделать для N-го уровня вложенности? $arrDir=...

Видимость разделов
Добрый день.У меня возник вопрос как сделать через PHP,так чтобы разделы видел авторизированный...

Создание меню разделов сайта
Здравствуйте. Прошу помоши. Себе сломал уже всю голову. Хочу создать небольшую админку для сайта....

7
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 30
06.09.2011, 15:02 2
так запросы же существуют в MySQl сразу с сортировкой...
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
06.09.2011, 15:18 3
Значит, необходимо, чтобы при нажатии на пункт меню в каталоге выбрасывало из adverts все то, что относится к данному, как бы, разделу каталога?
Тогда так.
SQL
1
2
3
SELECT c.title, a.title FROM `adverts` a
INNER JOIN `catalogue` c
ON c.id=a.category_id
Что такое pid я не знаю, поэтому в запрос его не включил. Если что добавишь в самом конце
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
06.09.2011, 16:31  [ТС] 4
pid - обозначение порядка разделов, pid=0 - это Разделы, pid>0 - подразделы. Меню двухуровневое.
Если вывод будет такой:
PHP
1
2
3
4
 $query = mysql_query("SELECT c.title, c.pid, a.id, a.category_id, a.body FROM `adverts` a INNER JOIN `catalogue` c ON c.id=a.category_id ORDER BY category_id DESC");
while($adverts = mysql_fetch_object($query)){
echo "Разделы ".$adverts[title].""; 
echo "Инфо ".$adverts[body]."";}
Простите, объясните пожалуйста, каким образом объединить вывод меню и информации?
И как в этом случае вывести правильно название разделов с подразделами?
Если например у нас ссылка из меню, такого вида:
PHP
1
 echo "<a href='adverts34.php?action=adverts&id=".$categ->id."'>".$categ->title."</a>";
А принимающий файл (adverts.php) такого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ( !isset( $_GET["action"] ) ) $_GET["action"] = "adverts"; 
switch ( $_GET["action"] )
{
  case "adverts":    // Вывод всех объявлений
    show_adverts(); break;
  default:
    show_adverts();
}
 
function show_adverts() {
 $query = mysql_query("SELECT c.title, c.pid, a.id, a.category_id, a.body FROM `adverts` a INNER JOIN `catalogue` c ON c.id=a.category_id ORDER BY category_id DESC");
while($adverts = mysql_fetch_object($query)){
echo "Разделы ".$adverts[title].""; 
echo "Инфо ".$adverts[body]."";}
}
Что необходимо, чтобы файл adverts.php принял id - категории и вывел информацию из категории?
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
06.09.2011, 16:54 5
Цитата Сообщение от wredyatina Посмотреть сообщение
PHP
1
2
...echo "Разделы ".$adverts[title].""; 
echo "Инфо ".$adverts[body]."";
Перво-наперво:
  • закавычьте индексы в квадратных скобках одинарными кавычками.
  • уберите пустые двойные кавычки. Они ни к чему
  • при такой реализации как у вас, перекавыьте все строки в одинарные кавычки
А теперь к основному.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$action = isset($_GET['action'])?$_GET['action']:'adverts';
$id = (int)$_GET['id'];
switch ( $action )
{
  case 'adverts':    // Вывод всех объявлений
    show_adverts(); break;
  default:
    show_adverts();
}
 
function show_adverts() {
 $query = mysql_query("SELECT c.title, c.pid, a.id, a.category_id, a.body FROM `adverts` a INNER JOIN `catalogue` c ON c.id=a.category_id WHERE c.id=$id ORDER BY category_id DESC");
while($adverts = mysql_fetch_object($query)){
echo "Разделы ".$adverts[title].""; 
echo "Инфо ".$adverts[body]."";}
}
Насколько я вник в топологию, по-моему так
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
07.09.2011, 12:40  [ТС] 6
Денис Н. Спасибо огромное за ответ!!!
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
07.09.2011, 15:20 7
Получилось?
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
14.09.2011, 15:50  [ТС] 8
Нет не получилось(((
Вот что у меня получилось:
вывод меню categories.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
function block($pid=0) {
$query = mysql_query("SELECT * FROM catalogue WHERE pid='".($pid ? $pid : 0)."' ORDER BY pid DESC");
echo '<ul>';
while($row = mysql_fetch_array($query)) {
echo '<li><a href="adverts.php?action=adverts&id='.$row['id'].'">'.$row['title'];
block($row['id']);
echo "</li>";
}
echo '</ul>';
}
 
block();
Выводит не правильно( Дает:
id=1
-id=6
-id=39
-id=38
-id=37
-id=36
-id=35
-id=34
-id=33
-id=13
-id=12
-id=11
-id=10
-id=9
-id=8
-id=7
-id=40
id=31
id=30
id=29
id=28
id=5
и тд все в непонятном порядке.

Дальше при ссылке на adverts.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$action = isset($_GET['action'])?$_GET['action']:'adverts';
$id = (int)$_GET['id'];
switch ( $action )
{
  case 'adverts':    // Вывод всех объявлений
    show_adverts(); break;
  default:
    show_adverts();
}
 
 
function show_adverts() {
        $query = mysql_query("SELECT c.id, c.title, c.pid, a.id, a.category_id, a.estate, a.room, a.address, a.flor, a.area, a.tel, a.door, a.bal, a.bal3, a.bal4, a.price, a.body, a.title_pic, a.img_big, a.img_small, a.mimetype FROM `adverts` a INNER JOIN `catalogue` c ON c.id=a.category_id WHERE c.id=$id ORDER BY category_id DESC");
while($adverts = mysql_fetch_object($query)){
 
 echo $adverts['title']; //это вывод заголовка
            // Выводим в таблице
  echo '<table width="564" height="270"  border="0px double #000" class="advor">' ;
  echo ' <tr>';
  echo '<td width="73">Раздел</td>';
  echo '<td width="179">Тип недвижимости</td>';
  echo '<td width="147">Описание</td>';
  echo ' <td width="137">Редактирование</td>';
  // Выводим раздел
  $number1 = mysql_num_rows($adverts['category_id']);
  echo '<td width="73"><p>'.$adverts['category_id'].'</p>['.$number1.']';
  echo ' </td>';
  //Выводим тип недвижимости
  echo ' <td width="179"> '.$adverts['estate'].'' ;
  echo ' </td>';
  echo '<td width="147">';
  // Выводим изображение
  $title = str_replace( '"', '', $adverts['title_pic'] );
  echo '<div><a href="newsimage.php?size=big&id='.$adverts['id'].'" target="_blank">';
  echo '<img src="newsimage.php?size=small&id='.$adverts['id'].'" alt="'.$title.'" border="0" /></a></div>'; 
  // Разделительная линия между отдельными изображениями
  echo '<hr>';
  // Выводим описание (все функции)
  echo ''.$adverts['room'].''.$adverts['address'].''.$adverts['flor'].''.$adverts['area'].''.$adverts['tel'].''.$adverts['door'].''.$adverts['bal'].''.$adverts['bal3'].''.$adverts['bal4'].''.$adverts['price'].''.$adverts['body'].'' ;
  echo '</td>';
  //Функция удаления
  echo '<td width="137"><a href="advertslist.php?action=delete"><p>Удалить</p></a>
    <a href="advertslist.php?action=editform"><p>Изменить</p></a>';
 echo '</td></tr></table>';
 // Всего объявлений
 $number0 = mysql_num_rows($adverts['id']);
 echo ' Всего объявлений '.$number0.'';
 
         }
 }
Ругается именно на
PHP
1
2
 $query = mysql_query("SELECT c.id, c.title, c.pid, a.id, a.category_id, a.estate, a.room, a.address, a.flor, a.area, a.tel, a.door, a.bal, a.bal3, a.bal4, a.price, a.body, a.title_pic, a.img_big, a.img_small, a.mimetype FROM `adverts` a INNER JOIN `catalogue` c ON c.id=a.category_id WHERE c.id=$id ORDER BY category_id DESC");
while($adverts = mysql_fetch_object($query)){
0
14.09.2011, 15:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2011, 15:50
Помогаю со студенческими работами здесь

Ограничения количества разделов на странице
Помогите решить проблему данный код выводит ограничение количества разделов на странице если в...

Категории бесконечной вложенности (Вывод определенной родительской категории с дочерними)
Имеется SQL база категорий вида (id,name,subcategory) - Если subcategory=0 то это родительская...

Код в представлении генерирует ссылки на категории товаров: при щелчке по категории идёт 404 ошибка
плин Добавлено через 14 секунд Этот код в представлении генерирует ссылки на категории товаров...

Select [Категории] и [под категории]
Доброго времени суток ув. форумчане. Столкнулся с большой задачей, которую не знаю даже с чего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru