Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/22: Рейтинг темы: голосов - 22, средняя оценка - 5.00
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110

Дерево категорий и вывод статей

11.09.2015, 14:16. Показов 5619. Ответов 88
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, здравствуйте! Очень нужна помощь!!!
Пытаюсь сделать дерево категорий.
есть 2 таблицы categories_colloring с id, id_parent, name и таблица articles_colloring c полями id,title,url_img,parent_id,date,view.

Почитав и порывшись в инете появился такой код. Но не могу понять, как выводить на отдельных страницах эти данные. Допустим на одной странице index.php - все категории с parent_id=0

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 <?
 $result2 = mysql_query("SELECT * FROM categories_colloring where parent_id=0",$db);
if (!$result2)
{
echo "<p><strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result2) > 0)
{
$myrow2 = mysql_fetch_array($result2);
do 
{
printf ("<p class='point'>
<a class='nav_link' href='view_cat.php?cat=%s'>%s</a></p>",$myrow2["id"],$myrow2["name"]);
}
while ($myrow2 = mysql_fetch_array($result2));
}
else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
 ?>
далее в view_cat.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
<?php
$result = mysql_query ("SELECT `id`, `parent_id`, `name` FROM `categories_colloring`"); 
 
$cats = array();
  while($cat =  mysql_fetch_assoc($result))
        $cats[$cat['parent_id']][] =  $cat;
 
function create_tree ($cats,$parent_id){
  if(is_array($cats) and  isset($cats[$parent_id])){
    $tree = '<ul>';
    foreach($cats[$parent_id] as $cat){
       $tree .= "<li><a href='colloring.php?catid=".$cat['id']."'>".$cat['name']."</a>";
       $tree .=  create_tree ($cats,$cat['id']);
       $tree .= '</li>';         
    }
    $tree .= '</ul>';
  } 
  else return null;          
return $tree;        
} 
 
echo create_tree ($cats, 0);
?>
очень прошу помочь!

Добавлено через 26 минут
сейчас даже на странице view_cat.php?cat=1 (при переходе с colloring_index.php) выдает не только категорию 1, а и все остальные, а также подкатегории(((
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.09.2015, 14:16
Ответы с готовыми решениями:

Вывод категорий/подкатегорий статей и создание url
Привет. Существует таблица &quot;article_category&quot;, в ней следующая структура: id | name | slug | parent_id id - это уникальный айди...

Выборка нескольких статей из всех категорий
Добрый день, уважаемые форумчане! Задача у меян следующая: вывести на одной странице по пять статей из каждой категории (ограничимся...

Подгрузка всех категорий из статей
Вот такая модель у меня: public class Article { public int Id { get; set; } public string Name { get;...

88
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
16.09.2015, 21:07
Студворк — интернет-сервис помощи студентам
у меня нормально работает. выводит только статьи категории
1
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
16.09.2015, 21:36  [ТС]
билась, билась и я в шоке!!! простите, что морочила вам голову! перезалила файл который отправляла и тоже все нормально стало!!!
0
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
18.09.2015, 09:06  [ТС]
приступила к последнему файлу просмотра конкретной статьи и печати её. статья выводится, что для меня уже огромный прогресс!!! ваши уроки не прошли даром))) но здесь почему-то не идет скачивание. за это отвечает вот такой кусок, нашла у вас на форуме его:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$file = $myrow["url_img"];
if ($_GET['down'] == $file) {  
if (!is_file($file)) {  
echo "Файл <b>$file</b> не найден<br />\n";  
} else {  
header("Content-Disposition: attachment; filename=$file");  
header("Content-type: application/octet-stream");  
readfile($file);  
exit;  
}  
}  
else {  
echo "<span class='noprint'> <input type='button' value='Скачать'  onclick=\"location.href='?down=$file'\" class='button10'></input></span> "; 
}
файл правильно открывают нужную статью, но после нажатия на скачать, выбивает на первую статью из базы.
привожу весь файл view_colloring.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php 
include ("blocks/bd.php");
 if (isset($_GET['id'])) {$id = $_GET['id'];}
 if (!isset($id)) {$id = 1;}
  $result = mysql_query ("SELECT title,url_img,date,
         DATE_FORMAT(date, '%d.%m.%Y') AS eurodate,
         view,id,cat_id FROM articles_colloring  WHERE id=" . (int) $id,$db);
 
         
if (!$result) 
{
echo "<p><strong>Код ошибки:</strong></p>";
exit (mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
$new_view = $myrow["view"] + 1;
$update = mysql_query ("UPDATE articles_colloring SET view='$new_view' WHERE id='$id' ",$db);
}
else
{
echo "<p>Информация по запросу не может быть извлечена. В таблице нет записей.</p>";
exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link rel="stylesheet" type="text/css" href="css/main_jen.css"/>
<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="css/ie6.css" /><![endif]--><!--[if lt IE 8]><link rel="stylesheet" type="text/css" href="css/ie7.css" /><![endif]-->
<meta name="revisit" content="1 days" />
<meta name="robots" content="all" />
<meta name="pragma" content="no-cache" />
<meta name="Description" content="" />
<meta name="Keywords" content="" />
<title></title>
 
 
<style media='print' type='text/css'>
#navbar-iframe {display: none; height: 0px; visibility: hidden;}
.noprint {display: none;}
body {background:#FFF; color:#000;}
a {text-decoration: underline; color:#00F;}
}
</style>
 
<style type='text/css'>.pdownload{display:none}</style>
<script type="text/javascript">
function o(dff){
    document.getElementById(dff);
    var dow = dff.getElementsByTagName('div');
    document.getElementById('dow');
    dow[0].style.display = "block";
}    
</script> 
</head>
 
 
<body>
<div id="wrapper_colloring">
<div id="content_colloring">
<span class="noprint"> 
 
</span>
 
 
<?   
 
$file = $myrow["url_img"];
 
if ($_GET['down'] == $file) {  
if (!is_file($file)) {  
echo "Файл <b>$file</b> не найден<br />\n";  
} else {  
header("Content-Disposition: attachment; filename=$file");  
header("Content-type: application/octet-stream");  
 
readfile($file);  
exit;  
}  
}  
else {  
echo "<span class='noprint'> <input type='button' value='Скачать'  onclick=\"location.href='?down=$file'\" class='button10'></input></span> "; 
}
 
 
 
printf (" 
<span class='noprint'> 
<input type='button' value='Печатать' onclick='print()' class='button10'></input> 
 
<form action='../colloring_index.php' method='post' style='margin:-26px -269px 0 0;'><input type='submit' value='Вернуться' class='button10'></input></form>
 
<BR><H1> %s</H1>
<BR>
</span> 
<img title='%s' src='%s'> 
 
",$myrow["title"],$myrow["title"],$myrow["url_img"]);     
 
?>
 
</div>
 
</div>
</body>
</html>
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.09.2015, 10:08
а так?
PHP/HTML
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
include ("blocks/bd.php");
 if (isset($_GET['id'])) {$id = $_GET['id'];}
 if (!isset($id)) {$id = 1;}
  $result = mysql_query ("SELECT title,url_img,date,
         DATE_FORMAT(date, '%d.%m.%Y') AS eurodate,
         view,id,cat_id FROM articles_colloring  WHERE id=" . (int) $id,$db);
if (!$result) {
    echo "<p><strong>Код ошибки:</strong></p>";
    exit (mysql_error());
}
if (mysql_num_rows($result) > 0){
    $myrow = mysql_fetch_array($result);
    $new_view = $myrow["view"] + 1;
    $update = mysql_query ("UPDATE articles_colloring SET view='$new_view' WHERE id='$id' ",$db);
}
else{
    echo "<p>Информация по запросу не может быть извлечена. В таблице нет записей.</p>";
    exit();
}
$file = $myrow["url_img"];
if ($_GET['down'] == $file) {  
    if(!is_file($file)) {  
        echo "Файл <b>$file</b> не найден<br />\n";  
    } 
    else {  
          header("Content-Disposition: attachment; filename=$file");  
          header("Content-type: application/octet-stream");  
          readfile($file);  
          exit;  
     }  
}  
else {  
echo "<span class='noprint'> <input type='button' value='Скачать'  onclick=\"location.href='?down=$file'\" class='button10'></input></span> "; 
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link rel="stylesheet" type="text/css" href="css/main_jen.css"/>
<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="css/ie6.css" /><![endif]--><!--[if lt IE 8]><link rel="stylesheet" type="text/css" href="css/ie7.css" /><![endif]-->
<meta name="revisit" content="1 days" />
<meta name="robots" content="all" />
<meta name="pragma" content="no-cache" />
<meta name="Description" content="" />
<meta name="Keywords" content="" />
<title></title>
  
<style media='print' type='text/css'>
#navbar-iframe {display: none; height: 0px; visibility: hidden;}
.noprint {display: none;}
body {background:#FFF; color:#000;}
a {text-decoration: underline; color:#00F;}
 
</style>
 
<style type='text/css'>.pdownload{display:none}</style>
<script type="text/javascript">
function o(dff){
    document.getElementById(dff);
    var dow = dff.getElementsByTagName('div');
    document.getElementById('dow');
    dow[0].style.display = "block";
}    
</script> 
</head>
  
<body>
<div id="wrapper_colloring">
<div id="content_colloring">
<span class="noprint"> </span>
  
<?php   
 printf (" 
<span class='noprint'> 
<input type='button' value='Печатать' onclick='print()' class='button10'></input> 
 <form action='../colloring_index.php' method='post' style='margin:-26px -269px 0 0;'><input type='submit' value='Вернуться' class='button10'></input></form>
 <BR><H1> %s</H1>
<BR>
</span> 
<img title='%s' src='%s'> 
 ",$myrow["title"],$myrow["title"],$myrow["url_img"]);     
 ?>
 </div>
 </div>
</body>
1
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
18.09.2015, 10:10  [ТС]
все равно перекидывает на первую статью из базы(
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.09.2015, 10:36
Лучший ответ Сообщение было отмечено hitball как решение

Решение

PHP
1
2
3
4
else { 
$id_aticle = $myrow['id'];
echo "<span class='noprint'> <input type='button' value='Скачать'  onclick=\"location.href='?id=$id_aticle&down=$file'\" class='button10'></input></span> "; 
}
1
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
18.09.2015, 10:52  [ТС]
да!!!!!!! спасибище вам под каждым постом!!!! пойду все красивенько оформлю))))
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.09.2015, 10:55
пожалуйста
0
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
18.09.2015, 11:07  [ТС]
пристану к вам еще с хлебными крошками. это очень сложно делать? думаю надо ли оно вообще, с ними вроде бы понятнее... ткните меня носом как делать привязку к страницам и категориям по ним, чтобы выводилось как на форуме у вас
PHP
1
CyberForum.ru - форум программистов и сисадминов > Форум web-программистов > Форум PHP > Форум PHP и базы данных
только у меня :
PHP
1
главная сайта - категория -подкатегория - статья
если это очень сложно, то не нужно!!!
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.09.2015, 12:16
архив с крошками
Вложения
Тип файла: rar catforum.rar (5.2 Кб, 1 просмотров)
1
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
18.09.2015, 12:23  [ТС]
ничего себе!!! это мне разбираться на пару дней))) спасибо!!!! сбылась мечта идиота)))
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.09.2015, 12:26
Цитата Сообщение от hitball Посмотреть сообщение
это мне разбираться на пару дней
да ничего там сложного. кстати при многоуровневой вложенности категорий, работать не будет.
1
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
18.09.2015, 15:30  [ТС]
появился еще один вопрос. хочу прикрутить простые комментарии к файлу colloring.php. у меня есть файл обработчик. в нем строки заносящие комментарий в базу, возврата обратно на страницу colloring.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
$result = mysql_query ("SELECT sum FROM comments_setting",$db);
$myrow = mysql_fetch_array($result);
if ($pr == $myrow["sum"])
{
$date = date("Y-m-d H:i");
$result2 = mysql_query ("INSERT INTO comments_colloring (post,author,text,date) VALUES
('$id','$author','$text','$date')",$db);
 
$address = "@";
$subject = "Новый комментарий";
 
$result3 = mysql_query ("SELECT `id`, `name` FROM `categories_colloring` where  id = '$cat'",$db);
 
$myrow3 = mysql_fetch_array ($result3);
$post_title = $myrow3["name"];
$message = "Комментарий - ".$post_title."\nКомментарий добавил(а): ".$author."\nТекст комментария: ".$text."\nСсылка на заметку: 
../colloring.php?catid=".$cat."";
 
mail($address,$subject,$message,"Content-type:text/plain; Charset=windows-1251\r\n");
echo "<html><head>
<meta http-equiv='Refresh' content='0; URL=colloring.php?catid=$cat'>
</head></html>";
exit();
Добавлено через 34 минуты
у меня не выход вывести муравьиную дорожку(
не выводятся ни категории, ни подкатегории((( только прямая ссылка

Добавлено через 2 минуты
view_cat.php показывает только главную, а категорию нет.
colloring.php показывает главная и подкатегория, а категорию тоже нет

Добавлено через 21 минуту
fanatikus, получилось вывести в дорожке категории!!! я как вы и раньше говорили этот кусок кода слишком высоко поместила.
но с комментами все никак(
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.09.2015, 15:37
Цитата Сообщение от hitball Посмотреть сообщение
но не понимает к какой категории относить коммент
наверно не к категории а к статье. в таблице с комментами должно быть поле с id статьи.
при выводе статьи, выводите все комменты по id(статьи)
1
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
18.09.2015, 15:40  [ТС]
дело втом, что я хочу как раз сделать, чтобы комментировать можно было как раз подкатегорию, а не статью(((
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.09.2015, 15:45
тогда, в таблице с комментами поле с id категории
0
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
18.09.2015, 15:49  [ТС]
так и есть, это поле post
----------------
в категориях получилось выводить дорожку, а на странице colloring нет( рано обрадовалась(
кусочек кода над шапкой добавила тоже

PHP
1
 <a href="view_cat.php?cat=<?php echo $parent_category['id'];?>"><?php echo $parent_category['name'];?></a>
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.09.2015, 15:52
это есть?

PHP
1
2
$res = mysql_query("select * from categories_colloring where `id`='".$cat_name['parent_id']."'",$db);
$parent_category = mysql_fetch_array($res);
0
 Аватар для hitball
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 110
18.09.2015, 15:53  [ТС]
да, я его нашла)
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
18.09.2015, 15:54
Цитата Сообщение от hitball Посмотреть сообщение
так и есть, это поле post
так в чем проблема. берешь id категории и достаешь статьи
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2015, 15:54
Помогаю со студенческими работами здесь

Ошибка при создании категорий для статей.
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/problemn/social/libs/html1.php on line 251 ...

Дерево категорий
Добрый день. Структура таблицы id| parent_id| name 1| 0| раздел1 2| 1| раздел1.1 3| 2| ...

Конечные ID из дерево категорий
Добрый день. Такая небольшая проблема возникла. У меня есть многоуровневая дерево категорий. Пример: 1.0

Иерархичное дерево категорий
Дано иерархичное дерево категорий. Нужно зделать функцию которая будет выводить дерево в таком виде: Недвижемость -Дома --2х...

Иерархическое дерево категорий
Дано иерархичное дерево категорий. Нужно зделать функцию которая будет выводить дерево в таком виде: Недвижемость -Дома --2х...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru