Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Категории и подкатегории [3]
Форумы портала PHP.SU » » Работа с СУБД » Категории и подкатегории

Страниц (5): « 1 2 [3] 4 5 »
 

31. Champion - 21 Августа, 2009 - 18:59:02 - перейти к сообщению
Ну как это не выводит? Это в точности тот же самый код, только с предусловием и более человеческий. Внимательнее посмотри: может быть, опечатался.

С точки зрения безопасности, твой код уязвим для SQL-инъекций.
$cat = $_GET['cat'] замени на
$cat = mysql_real_escape_string($_GET['cat']).
А пред этим попробуй в качестве GET параметра попробовать значение
Цитата:
' OR '1'='1
Просто ради интереса
32. ibe - 21 Августа, 2009 - 19:07:10 - перейти к сообщению
Не понял Вот код:
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.  

Вывода информации из бд не происходит.
33. Champion - 21 Августа, 2009 - 19:46:29 - перейти к сообщению
ibe пишет:
#
$myarticle = mysql_fetch_array($result2); // ???
while ($myarticle = mysql_fetch_array($result2));
{
А должен?
34. ibe - 21 Августа, 2009 - 19:54:15 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. while ($myarticle = mysql_fetch_array($result2));
  2.     {
  3. # цикл
  4. }

Не хочет.
35. Champion - 21 Августа, 2009 - 20:00:11 - перейти к сообщению
ibe пишет:
while ($myarticle = mysql_fetch_array($result2));
36. ibe - 22 Августа, 2009 - 18:54:12 - перейти к сообщению
В общем я вернулся к этому варианту:
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 ?
37. Champion - 23 Августа, 2009 - 19:17:15 - перейти к сообщению
Ну... ты посмотрел на var_dump? Ни на какие мысли не навело? Смысл полей в таблице ясен?
38. ibe - 23 Августа, 2009 - 21:25:47 - перейти к сообщению
Вернёмся к меню.
С верхней частью(категории) меню все в порядке:

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) ?
39. Champion - 24 Августа, 2009 - 08:37:28 - перейти к сообщению
ibe пишет:
категория "Новости" (id - 1) к ней род. категория "В мире" (id - 2, parent_id - 1)
Да, именно так. Отсортировать по parent_id - это добавь в конец запроса ORDER BY parent_id. У самых родительских категорий сделай parent_id = -1 или ноль - что больше нравится.

Зря ты не стал пользоваться массивом, который я показал. Мне все-таки кажется, он удобнее. Ты формируешь этот массив, а потом просто по нему идешь и выводишь менюшки.
Это получается массив (меню) массивов (подменю).
40. ibe - 24 Августа, 2009 - 08:53:41 - перейти к сообщению
Цитата:
Зря ты не стал пользоваться массивом, который я показал.

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

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

Вот здесь можно по подробней. Почему в parent_id нельзя записать id категории.
К примеру:
Новости ( id - 9) - подкатегория "В мире" (parent_id - 9).
Статьи (id - 16) - подкатегория "В России" (parent_id - 16) ?
Объясните пожалуйста
41. Champion - 24 Августа, 2009 - 08:55:49 - перейти к сообщению
А какая разница? Ну в общем, не важно. Раз работает, то хорошо
42. ibe - 24 Августа, 2009 - 09:00:42 - перейти к сообщению
Цитата:
У самых родительских категорий сделай parent_id = -1 или ноль - что больше нравится.


Вот здесь можно по подробней. Почему в parent_id нельзя записать id категории.
К примеру:
Новости ( id - 9) - подкатегория "В мире" (parent_id - 9).
Статьи (id - 16) - подкатегория "В России" (parent_id - 16) ?
Объясните пожалуйста
43. Champion - 24 Августа, 2009 - 09:12:10 - перейти к сообщению
Потому что так не правильно. Ты этой таблицей описываешь иерархическую структуру. Она может содержать и 2 и больше уровней вложенности.
У каждой категории есть родительская категория. Точнее, должна быть, потому что такой способ описания данных. Но логика подсказывает, что есть несколько категорий, у которых не должно быть родительской категории. Поэто му для них делается такая псевдо категория с id -1, которая их в себя и включает.

А если у категории с id 16 будет подкатегория с id 16, то она будет подкатегорией самой себя... А это приводит к удивительным последствиям.
44. ibe - 24 Августа, 2009 - 09:54:51 - перейти к сообщению
Как отсортировывать эти родительские категории? Вот к примеру есть 2 категории - "Новости" и "Статьи", к ним 2 родительские категории - "В мире"(относится к "Новости" ), "В России"(относится к "Статьи" ) ?
Какой расклад дожен быть в БД... ?
45. Champion - 24 Августа, 2009 - 10:04:07 - перейти к сообщению
По-моему, ты не читаешь, что я пишу или не думаешь.

 

Powered by ExBB FM 1.0 RC1