За последние 24 часа нас посетили 20156 программистов и 1724 робота. Сейчас ищут 1962 программиста ...

Категории и подкатегории

Тема в разделе "Сделайте за меня", создана пользователем A320_Pilot, 11 апр 2016.

  1. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    Всем добрый вечер, помогите решите проблему, есть БД, в ней есть таблица cats, в ней 4 поля: id, parrent_id, title, desc, как на php и mysql сделать вывод подкатегорий и проверку на существования их, в поле parrent_id по умолчанию NULL, а если стоит > 1, то это подкатегория!
    Заранее спасибо!
     
  2. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    PHP:
    1. function tree_cat_menu($parent_id = null) {
    2.         $result = mysql_query("SELECT id, parent_id, title FROM cats WHERE parent_id='$parent_id'");
    3.         if(mysqli_num_rows($result) > 0)
    4.         {
    5.             echo '<ul>';
    6.  
    7.             while($myrow = mysqli_fetch_array($result)) {
    8.                 echo '<li><a href="category.php?id='.$myrow['id'].'">'.$myrow['title'].'</a></li>';                              
    9.                 tree_cat_menu($myrow['id']);
    10.             }
    11.  
    12.             echo '</ul>';
    13.         }
    14.     }
    15. }
    Не знаю заработает или нет. Попробуй.
     
  3. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Я тебе для этого функцию написал, какие проблемы?
     
  4. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    Не работает(((
    На экран не выводит подкатегории
     
  5. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Я не волшебник, я не могу читать твои мысли. Какие ошибки выдаёт? Как ты функцию в файл запилил? Какой исходный код?
     
  6. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    Если честно, как дал, так и запилил...
    Просто уже бьюсь с этим дня три, уже устал, а это нужно...
     
  7. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Может код и логи покажешь?
     
  8. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    Вот:
    PHP:
    1. <?php
    2. require_once("../modules/left_nav.php");
    3. ?>
    4. <div class="center_content">
    5. <div class="bread">
    6. <a href="{url}">Главная</a>    /    ...
    7. </div>
    8. <h2>...</h2>
    9. <?php
    10. //$res1 = mysql_query("SELECT * FROM cats WHERE root=$id ORDER BY title") or die (mysql_error());
    11. function tree_cat_menu($parent_id = null) {
    12. $result = mysql_query("SELECT id, parent_id, title FROM cats WHERE parent_id='$parent_id'");
    13. if(mysql_num_rows($result) > 0)
    14. {
    15. echo '<ul>';
    16. while($myrow = mysql_fetch_array($result)) {
    17. echo '<li><a href="works_all.php?id='.$myrow['id'].'">'.$myrow['title'].'</a></li>';                              
    18. tree_cat_menu($myrow['id']);
    19. }
    20. echo '</ul>';
    21. }
    22. }
    23. ?>
    24. </div>
    А по логом нет, никаких ошибок не выдаёт!
     
  9. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Наверное потому что нужно вызвать функцию показа категорий.
    Где тебе нужны категории напиши:
    PHP:
    1. tree_cat_menu();
     
  10. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    Вот тут фор
    Всё равно, код теперь такой:
    Не выводятся
    PHP:
    1. <?php
    2. require_once("../modules/left_nav.php");
    3. ?>
    4. <div class="center_content">
    5. <div class="bread">
    6. <a href="{url}">Главная</a>    /    ...
    7. </div>
    8. <h2>...</h2>
    9. <?php
    10. function tree_cat_menu($parent_id = null) {
    11. $result = mysql_query("SELECT id, parent_id, title FROM cats WHERE parent_id='$parent_id'");
    12. if(mysql_num_rows($result) > 0)
    13. {
    14. echo '<ul>';
    15. while($myrow = mysql_fetch_array($result)) {
    16. echo '<li><a href="works_all.php?id='.$myrow['id'].'">'.$myrow['title'].'</a></li>';                          
    17. tree_cat_menu($myrow['id']);
    18. }
    19. echo '</ul>';
    20. }
    21. }
    22. tree_cat_menu();
    23. ?>
    24. </div>
    --- Добавлено ---
    Вот тут формируются ссылки основных категорий (На главной), всё верно тут???:
    PHP:
    1. <div class="leftside">
    2. <h3>Категории изделий</h3>
    3. <ul>
    4. <li><a class="active" href="<?=$url?>">Главная</a></li>
    5. <?php
    6. //Вывод категорий
    7. $res = mysql_query("SELECT * FROM cats WHERE parent_id IS NULL ORDER BY title") or die (mysql_error());
    8. while($row = mysql_fetch_array($res)){
    9. $id = $row['id'];
    10. $title = $row['title'];
    11. ?>
    12. <!--Вывод ссылок-->
    13. <li><a href="<?=$url?>/pages/works_all.php?id=<?=$id?>"><?=$title?></a></li>
    14. <?php
    15. }
    16. ?>
    17. </ul>
    18. </div>
     
  11. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Ты писал есть поле parrent_id а я в sql написал parent_id, правь.
    Код (Text):
    1. $result = mysql_query("SELECT id, parrent_id, title FROM cats WHERE parrent_id='$parent_id'");
    Но лучше изменить название в таблице.
     
  12. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    Появилась ошибка:
    Код (Text):
    1. Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\pages\works_all.php on line 70
    Для справки, в базе есть записи уже
    70 строка:
    PHP:
    1. if(mysql_num_rows($result) > 0)
    --- Добавлено ---
    По факту, мне нужно вывести ТОЛЬКО подкатегории!
     
  13. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Уже лучше. А где именно ошибка поможет узнать:
    PHP:
    1. $result = mysql_query(Запрос) || die(mysql_error());
     
  14. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    Эта же ошибка:
    Код (Text):
    1. Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\pages\works_all.php on line 70
     
  15. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Так к базе ведь не подключились
    PHP:
    1. // Где то
    2. $db = mysql_connect("localhost", "mysql_user", "mysql_password");
    3.  
    4. // В функции
    5. mysql_query(Запрос, $db);
     
  16. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    У меня в шапке инклуд с подключением идёт
     
  17. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Нут так забей его в переменную к примеру в $db. И добавь её в конец mysql_query(Запрос, $db);
     
  18. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    Тоже самое
     
  19. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Чтобы не гадать, лучше выложи код на хостинг (есть бесплатные), настрой базу и дай доступ тут, может кто посмотрит.
     
  20. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Плохая реализация рекурсии с выгрузкой внутри функции. Выгружайте все данные заранее, а в рекурсии оперируйте уже массивами. Иначе рано или поздно mysql под 400%
     
  21. A320_Pilot

    A320_Pilot Новичок

    С нами с:
    14 дек 2013
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Российская Федерация, Москва
    Вот весь код
    PHP:
    1. <?php
    2. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    3. //Подключение файлов настроек
    4. require_once("../engine/mysql.php");
    5. require_once("../engine/config.php");
    6. //Настройка вывода лучших изделий
    7. require_once("../modules/rb.php");
    8. ?>
    9. <!doctype html>
    10. <html lang="en" class="no-js">
    11. <head>
    12. <meta charset="UTF-8">
    13. <meta http-equiv="x-ua-compatible" content="ie=edge">
    14. <meta name="viewport" content="width=device-width, initial-scale=1">
    15. <meta name="keywords" content="<?=$metategs?>"/>
    16. <title><?=$title?> - ...</title>
    17. <link href="http://www.google-analytics.com/" rel="dns-prefetch"><!-- dns prefetch -->
    18. <!-- meta -->
    19. <!-- icons -->
    20. <link href="<?=$tpl_f?>favicon.ico" rel="shortcut icon">
    21. <!-- css + javascript -->
    22. <link rel="stylesheet" href="<?=$tpl_f?>style.css" media="all">
    23. <!--[if lt IE 9]>
    24. <script type="text/javascript" src="<?=$tpl_f?>js/html5shiv.js"></script>
    25. <script type="text/javascript" src="<?=$tpl_f?>js/selectivizr.js"></script>
    26. <script type="text/javascript" src="<?=$tpl_f?>js/respond.js"></script>
    27. <![endif]-->
    28. <script type="text/javascript" src="///cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
    29. </head>
    30. <body>
    31. <!-- wrapper -->
    32. <div class="wrapper">
    33. <header >
    34. <div class="logo">
    35. <img src="<?=$tpl_f?>img/logo.png" alt="" title="">
    36. </div><!-- /logo -->
    37. <div class="contact">
    38. <p class="tel">
    39. ...
    40. </p>
    41. <p class="mail">...</p>
    42. </div>
    43. <nav class="nav" role="navigation">
    44. <ul class="headnav">
    45. <li><a href="<?=$url?>">Главная</a></li>
    46. <li><a href="<?=$url?>/news">Новости</a></li>
    47. <li><a href="<?=$url?>/articles">Статьи</a></li>
    48. <li><a href="<?=$url?>/cus">Обратная связь</a></li>
    49. <li><a href="<?=$url?>/gb">Отзывы</a></li>
    50. <li><a href="<?=$url?>/about">О компании</a></li>
    51. <li><a href="<?=$url?>/contacts">Контактные данные</a></li>
    52. </ul>
    53. <input placeholder="Search..." type="text">
    54. </nav><!-- /nav -->
    55. </header><!-- /header -->
    56. <section class="main_content">
    57. <?php
    58. require_once("../modules/left_nav.php");
    59. ?>
    60. <div class="center_content">
    61. <div class="bread">
    62. <a href="{url}">Главная</a>  /   ...
    63. </div>
    64. <h2>...</h2>
    65. <?php
    66. function tree_cat_menu($parrent_id = null) {
    67. $result = mysql_query("SELECT `id`, `parrent_id`, `title` FROM `cats` WHERE `parrent_id`='$parrent_id'") || die(mysql_error());
    68. if(mysql_num_rows($result) > 0)
    69. {
    70. while($myrow = mysql_fetch_array($result)) {
    71. echo '<li><a href="works_all.php?id='.$myrow['id'].'">'.$myrow['title'].'</a></li>';                             
    72. tree_cat_menu($myrow['id']);
    73. }
    74. }
    75. }
    76. tree_cat_menu();
    77. ?>
    78. </div>
    79. <?php
    80. $result = mysql_query("SELECT * FROM lr ORDER BY id DESC") or die (mysql_error());
    81. if(mysql_num_rows($result) > 0 ) {
    82. while($data2 = mysql_fetch_array($result)){
    83. $lr_id = $data2['id'];
    84. $lr_name = $data2['name'];
    85. $lr_foto = $data2['foto'];
    86. $lr_text = $data2['text'];
    87. ?>
    88. <div class="rightside"><h3>Лучшие изделия</h3>
    89. <ul><li>
    90. <li><a href=''><?=$lr_name?></a>
    91. <img src='<?=$lr_foto?>' alt=''>
    92. <p><?=$lr_text?></p>
    93. </li>
    94. </li></ul></div>
    95. <?php
    96. } } else {
    97. echo "<div class='rightside'><h3>Лучшие изделия</h3>
    98. <ul><li>
    99. В данный момент лучших работ нет!
    100. </li></ul></div>";
    101. }
    102. ?>
    103. <?php
    104. require_once("../modules/stats.php");
    105. ?>
    106. </section><!-- /section -->
    107. <?php
    108. require_once("../modules/footer.php");
    109. ?>
     
  22. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Во-первых, совершенно не обязательно выкладывать всю верстку целиком. Нужен только код.
    А во-вторых, ошибка в том, что функция tree_cat_menu хочет на вход id родительской категории. А вы его оставляете равным NULL, поэтому формируется неверный запрос