PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 30
ibe Отправлено: 25 Августа, 2009 - 16:14:49 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
var_dump выводит все категории что есть в базе в массив. А мне нужно вывести только родительские категории, ибо не родительские категории уже готовы:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $style = 11;
  3.  $cats1 = mysql_query("SELECT * FROM categories WHERE parent_id=0");
  4.     while  ($cats = mysql_fetch_array($cats1))
  5.    {
  6.  
  7.                 echo " <li class='tn".$style."'>
  8.                         <a href='/view.php?cat=".$cats['id']."'><span>".$cats['title']."</span></a>             </li>";
  9.  
  10.  $style = $style + 1;      
  11.    }
  12.  
  13. ?>

Теперь нужно вывести только нижнее меню, которое состоит из родительских категорий. Как - я не знаю. Пробовал через WHERE parent_id=id... не выходит.
-----
Вы неправильно меня поняли.
ibe Отправлено: 24 Августа, 2009 - 22:12:10 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
Запарели уже эти категории...нифига ничего не получается.
Уже 2-ой день сижу с ними. С массивами я не пониамю как это можно сделать, ибо категории по parent_id не получается отсортировать вообще.
Нахмурился
ibe Отправлено: 24 Августа, 2009 - 14:26:15 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
При таком варианте:
PHP:
скопировать код в буфер обмена
  1. $q = mysql_query("SELECT * FROM categories");
  2. while ($row = mysql_fetch_row($q)) { // в row будет id, parent_id, caption
  3.         $categs[ $row[1] ][] = array($row[0], $row[2]); // ну сам всё видишь.
  4. }
  5. var_dump($categs); // и всё увидишь

получил вот это:
CODE (text):
скопировать код в буфер обмена
  1.     array(8) {
  2.   [1]=>
  3.   array(1) {
  4.     [0]=>
  5.     array(2) {
  6.       [0]=>
  7.       string(2) "PC"
  8.       [1]=>
  9.       string(1) "0"
  10.     }
  11.   }
  12.   [2]=>
  13.   array(1) {
  14.     [0]=>
  15.     array(2) {
  16.       [0]=>
  17.       string(3) "PSP"
  18.       [1]=>
  19.       string(1) "0"
  20.     }
  21.   }
  22.   [3]=>
  23.   array(1) {
  24.     [0]=>
  25.     array(2) {
  26.       [0]=>
  27.       string(7) "XBOX360"
  28.       [1]=>
  29.       string(1) "0"
  30.     }
  31.   }
  32.   [4]=>
  33.   array(1) {
  34.     [0]=>
  35.     array(2) {
  36.       [0]=>
  37.       string(12) "PlayStation3"
  38.       [1]=>
  39.       string(1) "0"
  40.     }
  41.   }
  42.   [5]=>
  43.   array(1) {
  44.     [0]=>
  45.     array(2) {
  46.       [0]=>
  47.       string(5) "Flash"
  48.       [1]=>
  49.       string(1) "0"
  50.     }
  51.   }
  52.   [6]=>
  53.   array(1) {
  54.     [0]=>
  55.     array(2) {
  56.       [0]=>
  57.       string(6) "Mobile"
  58.       [1]=>
  59.       string(1) "0"
  60.     }
  61.   }
  62.   [7]=>
  63.   array(1) {
  64.     [0]=>
  65.     array(2) {
  66.       [0]=>
  67.       string(7) "Новости"
  68.       [1]=>
  69.       string(2) "1"
  70.     }
  71.   }
  72.   [8]=>
  73.   array(1) {
  74.     [0]=>
  75.     array(2) {
  76.       [0]=>
  77.       string(6) "Статьи"
  78.       [1]=>
  79.       string(2) "1"
  80.     }
  81.   }
  82. }
ibe Отправлено: 24 Августа, 2009 - 13:09:58 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
Нет. Я просто никак не пойму.
Вот сейчас поставил для наглядности DataLife engine. Посмотрел таблицу с категориями. Вот что там(см. скриншот)
ibe Отправлено: 24 Августа, 2009 - 09:54:51 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
Как отсортировывать эти родительские категории? Вот к примеру есть 2 категории - "Новости" и "Статьи", к ним 2 родительские категории - "В мире"(относится к "Новости" ), "В России"(относится к "Статьи" ) ?
Какой расклад дожен быть в БД... ?
ibe Отправлено: 24 Августа, 2009 - 09:00:42 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
Цитата:
У самых родительских категорий сделай parent_id = -1 или ноль - что больше нравится.


Вот здесь можно по подробней. Почему в parent_id нельзя записать id категории.
К примеру:
Новости ( id - 9) - подкатегория "В мире" (parent_id - 9).
Статьи (id - 16) - подкатегория "В России" (parent_id - 16) ?
Объясните пожалуйста
ibe Отправлено: 24 Августа, 2009 - 08:53:41 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
Цитата:
Зря ты не стал пользоваться массивом, который я показал.

У меня меню не много другое. Верхняя часть состоит из картинок(т.е. категория PC игры - картинка PC Игры, см. скриншот)

Цитата:
У самых родительских категорий сделай parent_id = -1 или ноль - что больше нравится.

Вот здесь можно по подробней. Почему в parent_id нельзя записать id категории.
К примеру:
Новости ( id - 9) - подкатегория "В мире" (parent_id - 9).
Статьи (id - 16) - подкатегория "В России" (parent_id - 16) ?
Объясните пожалуйста
ibe Отправлено: 23 Августа, 2009 - 21:25:47 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
Вернёмся к меню.
С верхней частью(категории) меню все в порядке:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $style = 11;
  3.  $cats1 = mysql_query("SELECT * FROM categories WHERE parent_id=0");
  4.     while  ($cats = mysql_fetch_array($cats1))
  5.    {
  6.  
  7.            echo " <li class='tn".$style."'>
  8.            <a href='/view.php?cat=".$cats['id']."'><span>".$cats['title']."</span></a>        </li>";
  9.  
  10.  $style = $style + 1;      
  11.    }
  12.  
  13. ?>

Но вот с родительскими категориями проблема. Как можно их сгенерировать, если в базе они отсортировываются по полю parent_id ?
Пример:
категория "Новости" (id - 1) к ней род. категория "В мире" (id - 2, parent_id - 1) ?
ibe Отправлено: 22 Августа, 2009 - 18:54:12 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
В общем я вернулся к этому варианту:
PHP:
скопировать код в буфер обмена
  1. $q = mysql_query("SELECT id, parent_id, title FROM categories");
  2. while ($row = mysql_fetch_row($q)) { // в row будет id, parent_id, caption
  3.         $categs[ $row[1] ][] = array($row[0], $row[2]);
  4. }
  5. var_dump($categs);
  6.  

Это получилось меню.
Теперь как реализовать вывод новостей, статей и т.п. по их категориям ? Ещё не понятно, как будет работать при этом таблица parent_id ?
ibe Отправлено: 21 Августа, 2009 - 19:54:15 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
PHP:
скопировать код в буфер обмена
  1. while ($myarticle = mysql_fetch_array($result2));
  2.     {
  3. # цикл
  4. }

Не хочет.
ibe Отправлено: 21 Августа, 2009 - 19:07:10 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
Не понял Вот код:
PHP:
скопировать код в буфер обмена
  1. $cat = mysql_real_escape_string($_GET['cat']).
  2. include("include/db.php");
  3. if (!isset($cat)) { $cat = 1; }
  4. // Создаем запросы
  5. $result2 = mysql_query("SELECT * FROM `articles` WHERE `cat` = '$cat' ORDER BY `id` DESC", $db);
  6. if(mysql_num_rows($result2) > 0)
  7. {
  8. $myarticle = mysql_fetch_array($result2);
  9.  
  10. while ($myarticle = mysql_fetch_array($result2));
  11.  
  12.     {
  13.   echo "
  14.  
  15.         <td class='stat-box-full'>
  16.                                
  17.                        
  18.                                 <table cellpadding='0' cellspacing='0' border='0' width='100%' class='stat-item'>
  19.                                 <tr>
  20.                                 <td class='s-box1'>
  21.                                         <a href='/articles/693/view.html'>
  22.                                         <div class='im'>
  23.                                                                                         <img src='".$myarticle['poster']."' alt='' width='150' height='100' />
  24.                                                                                         </div>
  25.                                         </a>
  26.                                         <div class='review' style='margin-top: 4px; vertical-align: middle;''><nobr>
  27.                                                                                 </nobr></div>
  28.                                 </td>
  29.                                 <td class='s-box2'>
  30.                                         <span class='date'>
  31.                                         ".$myarticle['date']."                                  </span>
  32.                                         <h3><a href='/'>".$myarticle['title']."</a></h3>
  33.                                         <p>".$myarticle['short_story']." </p>
  34.                                 </td>
  35.                                 </tr>
  36.                                 </table>
  37.                                  
  38.  
  39.  
  40.  ";
  41.    }
  42.  

Вывода информации из бд не происходит.
ibe Отправлено: 21 Августа, 2009 - 18:00:30 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
На приведённом примере
PHP:
скопировать код в буфер обмена
  1. while ($mynews = mysql_fetch_array($result)) {
  2. //код цикла
  3. }

не выводит информацию из бд.
ibe Отправлено: 21 Августа, 2009 - 17:28:00 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
А с точки зрения безопастности ?
ibe Отправлено: 21 Августа, 2009 - 15:59:15 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
Всем огромное спасибо. Я разобрался.
Таки сделал вот так:
PHP:
скопировать код в буфер обмена
  1. include("include/functions.php");
  2. switch($_GET['subcat']) {
  3.  
  4. case '1':
  5. ShowNews($cat);
  6. break;
  7.  
  8. case '2':
  9. ShowArticles($cat);
  10. break;
  11.  
  12.   default:
  13.     print('<p style=" margin-top:25px; margin-left:15px; font-size:15px;">Извините, категория пуста</p>');
  14.   break;
  15.   }
  16.  

Вот файл с функциями:
PHP:
скопировать код в буфер обмена
  1. function ShowNews($cat)
  2. {
  3. include("include/db.php");
  4. $cat = $_GET['cat'];
  5. // Создаем запросы
  6. $result = mysql_query("SELECT * FROM `news` WHERE `cat` = '$cat' ORDER BY `id` DESC", $db);
  7. $mynews = mysql_fetch_array($result);
  8.  do
  9.         {
  10.   echo "<td class='news-box-full'>
  11.                                            <div class='news-item'><div class='news-item-a'>
  12.                                    <p><a href='/news/6932/view.html'>
  13.                                            <img src='".$mynews['poster']."' width='150' height='100' alt='".$mynews['title']."' />
  14.                                            </a>
  15.                    <span class='date'>".$mynews['date']."</span>
  16.                    <a href='/viewpost.php'>".$mynews['title']."</a> <div class='review' style='margin-left: 6px; vertical-align: middle;'><nobr>
  17.  
  18.                                        </nobr></div>
  19.                    </p>
  20.                </div></div>
  21.                          </td>";
  22.        }
  23.   while ($mynews = mysql_fetch_array($result));
  24. }
  25.  
  26. .....и т.п.
  27.  

Теперь надо бы сделать вывод "case" автоматически, с помощью бд
----
Скажите, нормально ?
ibe Отправлено: 21 Августа, 2009 - 13:34:57 • Тема: Категории и подкатегории • Форум: Работа с СУБД

Ответов: 67
Просмотров: 27805
Стоп.
Почему же нельзя сделать примерно так:
создать в базе 2 таблици - categories, subcategories.
Поля categories:
Цитата:
id
title

Поля subcategories:
Цитата:
id
title
parent_id(индефикатор категории из таблици categories)

Далее разберёмся с меню:
PHP:
скопировать код в буфер обмена
  1.     <?PHP
  2.  
  3.  $subcat = mysql_query("SELECT * FROM subcategories WHERE cat=$cat", $db);
  4. $mysubcat = mysql_fetch_array($subcat);
  5. do
  6. {
  7. echo "
  8. <li><a href='/view.php?subcat=".$mysubcat['id']."&&cat=1'><b>".$mysubcat['title']."</b></a></li>
  9.  
  10. ";
  11. }
  12. while ($mysubcat = mysql_fetch_array($subcat));
  13. ?>
  14.  

И с выводом через GET, с помощью "case" будет производится вывод контента и подкатегорий к активной категории.
Ссылки будут таковы:
Цитата:
/view.php?cat=ид_категории&&subcat=ид_подкатегории

Только вот для статьей, новостей из других подкатегорий придётся писать разные запросы или как?!
Объясните пожалуйста.

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB