За последние 24 часа нас посетили 16065 программистов и 1422 робота. Сейчас ищут 839 программистов ...

Построение каталога товаров в виде дерева на PHP и MySQL

Тема в разделе "PHP для новичков", создана пользователем 0nik2008, 9 мар 2010.

  1. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Кто мне может помочь со структурой дерева?Структура каталога бирётся из БД.Я написал вот что в коде


    PHP:
    1. <?php
    2. switch ($_GET[mod]) {
    3. default:
    4. print "<div align=\"center\"><b>НАСТРОЙКИ</b></div>";
    5. print_form_sysvals ("SHOP");
    6. break;
    7. case "razmest":
    8. print "<div align='center'><b>Добавление товара на Торговую площадку</b></div><br />";
    9. print"<div align='center'><font color='#FF3333'><b>Выбрать категорию товара</b></font></div>";
    10. echo "<table>";
    11. $r=mysql_query("SELECT * FROM ".$plgtables['t_cat_tovar']." WHERE cat='0' AND tip='1' AND status='1' ORDER BY id ASC");
    12. $num=mysql_num_rows($r);
    13. for($i=0;$i<$num;$i++) {
    14. $category1=mysql_fetch_assoc($r);
    15. echo"<tr><td>";
    16. if ($category1['id']==$cat1) {
    17. echo"<img border='0' src='../mag-wm/img/minus.gif'><img border='0' src='../mag-wm/img/open.gif'> <b>".$category1['name']."</b>";
    18. } else {
    19. echo"<img border='0' src='../mag-wm/img/plus.gif' style=\"cursor:pointer\" onClick=\"location.href='$PHP_SELF?mod=".$_GET['mod']."&cat1=".$category1['id']."'\"><img border='0' src='../mag-wm/img/closed.gif'><font style=\"color:#3333CC; font-weight:bolder\">".$category1['name']."</font>";
    20. }
    21. echo"</td></tr>";
    22. if ($category1['id']==$cat1) {
    23. $r1=mysql_query("SELECT * FROM ".$plgtables['t_cat_tovar']." WHERE cat='$cat1' AND tip='2' AND status='1' ORDER BY id ASC");
    24. $num1=mysql_num_rows($r1);
    25. for($i1=0;$i1<$num1;$i1++) {
    26. $category2=@mysql_fetch_assoc($r1);
    27. echo"<tr><td>";
    28. if ($category2['id']==$cat2) {
    29. echo"&nbsp;&nbsp;&nbsp;&nbsp;<img border='0' src='../mag-wm/img/minus.gif'><img border='0' src='../mag-wm/img/open.gif'> <b>".$category2['name']."</b>";
    30. } else {
    31. echo"<img border='0' src='../mag-wm/img/plus.gif' style=\"cursor:pointer\" onClick=\"location.href='$PHP_SELF?mod=$_GET[mod]&cat1=$cat1&cat2=$category2[id]'\"><img border='0' src='../mag-wm/img/closed.gif'> ".$category2['name']."</a>";
    32. }
    33. echo"</td></tr>";
    34. if ($category2['id']==$cat2) {
    35. $r2=@mysql_result("SELECT * FROM `".$plgtables['t_cat_tovar']."` WHERE `cat`='$cat2' AND `tip`='3' AND `status`='1' ORDER BY `id` ASC");
    36. $num2=mysql_num_rows($r2);
    37. for($i2=0;$i2<$num2;$i2++) {
    38. $category3=@mysql_fetch_assoc($r2);
    39. echo"<tr><td>";
    40. if ($category3['id']==$cat3) {
    41. echo"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border='0' src='../mag-wm/img/doc_sel.gif'> <b>".$category3['name']."</b> <font color='#C0C0C0'>-OK Категория выбрана процент системе ".$get_sysval['shop_adminproc']."</font>";
    42. } else {
    43. echo"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='$PHP_SELF?mod=$_GET[mod]&cat1=".$cat1."&cat2=".$cat2."&cat3=".$category3['id']."'><img border='0' src='../mag-wm/img/doc.gif'> ".$category3['name']."</a>";
    44. }
    45. echo"</td></tr>";
    46.  } } } } }
    47. echo"<form name='$PHP_SELF' method='post' action='$PHP_SELF?mod=$_GET[mod]=info_form' onSubmit='return ValidateForm(this)'> <input type='hidden' name='cat_id' value='$cat3'> <tr><td><br><center><input type='submit' name='register' value='Далее'></td></tr> </form>
    48. <script language='JavaScript'>
    49. function ValidateForm(frm) {
    50. if (frm.cat_id.value==\"\") {
    51. alert(\"Категория товара не выбрана!\");
    52. return false;
    53. } } </script>\n";
    54. echo"</table>";
    55. break;
    56. }
    57. print "</center>";
    58.  

    Первая часть каталога читается из БД а вот вторая часть при открывание каталого те подкатегории не читает выводит мне начальный каталог и всё.Кто мне может подскажит в чём ошибка моя?И буду благодарен кто мне хотябы пример кинет каталога товаров на мыло niko-loskutov@yandex.ru.Заранее буду благодарен Вам.Так помогите мне ра зобраться с написание м каталога товаров в древовидном виде,т.е. как в проводнике Windows.
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    боюсь, с такой кашей никто не поможет…

    http://sourceforge.net/projects/phpcatalog/

    http://phpclub.ru/detail/article/db_tree
     
  3. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Помогите написать категорию товаров в древовидном виде.Чтоб товары можно разместить в категорию.Но перед размещением товаров сначало должно идти выбор категории товара затем добавление товара уже в выбранную категорию.Как например на тоговой площадке http://www.paywm.ru/ .И это я вам в...жит разобраться с каталогом найти ошибки мои.
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    еслиб вы привели свой код к такому(читаемому) виду:
    PHP:
    1. <?
    2. //комментарий
    3. if(){
    4.     //комментарий
    5.     if(){    
    6.         //комментарий
    7.    
    8.     }
    9.  
    10. } else { //комментарий
    11.             <table>
    12.                 <tr>
    13.                     <td>
    14.                        
    15.                     </td>
    16.                 </tr>
    17.             </table>
    18.         }
    19. ?>
    то нашли бы ошибку сами, возможно даже кто то бы и помог...
    но это же просто не реально...
    почему у вас print и echo перемешаны?
     
  5. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Но если вот эта часть кода читается из БД

    PHP:
    1. <?php
    2. $r=mysql_query("SELECT * FROM ".$plgtables['t_cat_tovar']." WHERE cat='0' AND tip='1' AND status='1' ORDER BY id ASC");
    3.  $num=mysql_num_rows($r);
    4.  for($i=0;$i<$num;$i++) {
    5.  $category1=mysql_fetch_assoc($r);
    6.  echo"<tr><td>";
    7.  if ($category1['id']==$cat1) {
    8.  echo"<img border='0' src='../mag-wm/img/minus.gif'><img border='0' src='../mag-wm/img/open.gif'> <b>".$category1['name']."</b>";
    9.  } else {
    10.  echo"<img border='0' src='../mag-wm/img/plus.gif' style=\"cursor:pointer\" onClick=\"location.href='$PHP_SELF?mod=".$_GET['mod']."&cat1=".$category1['id']."'\"><img border='0' src='../mag-wm/img/closed.gif'><font style=\"color:#3333CC; font-weight:bolder\">".$category1['name']."</font>";
    11.  }
    12.  echo"</td></tr>";
    13. ?>
    А второе влозение каталога уже не читается БД
    Вот второе вложение которое должно было открыть подкаталог а он не открывает
    PHP:
    1. <?php
    2. if ($category1['id']==$cat1) {
    3.  $r1=mysql_query("SELECT * FROM ".$plgtables['t_cat_tovar']." WHERE cat='$cat1' AND tip='2' AND status='1' ORDER BY id ASC");
    4.  $num1=mysql_num_rows($r1);
    5.  for($i1=0;$i1<$num1;$i1++) {
    6.  $category2=@mysql_fetch_assoc($r1);
    7.  echo"<tr><td>";
    8.  if ($category2['id']==$cat2) {
    9.  echo"    <img border='0' src='../mag-wm/img/minus.gif'><img border='0' src='../mag-wm/img/open.gif'> <b>".$category2['name']."</b>";
    10.  } else {
    11.  echo"<img border='0' src='../mag-wm/img/plus.gif' style=\"cursor:pointer\" onClick=\"location.href='$PHP_SELF?mod=$_GET[mod]&cat1=$cat1&cat2=$category2[id]'\"><img border='0' src='../mag-wm/img/closed.gif'> ".$category2['name']."</a>";
    12.  }
    13.  echo"</td></tr>";
    14. ?>
    15.  
    почему и в чём ошибка?
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    собаку специально поставили?
     
  7. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Да я собаку и убирал и ставил только толку ноль.
     
  8. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    0nik2008
    а сколько категорий всего ?
     
  9. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    и что, картинку показывает?

    что-то у вас совсем странно массив в строку добавляется.

    включите вывод ошибок!
    PHP:
    1. <?php error_reporting(E_ALL);?>
    в начало скрипта
     
  10. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Rfтегорий всего три подкатекорий пять.
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    написали бы 1 функцию для mysql запросов 1 для генерации html и каши не было бы и отлаживать легче
     
  12. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Да каттинку показывает всё показывает весь начальный каталог а подкаталог уже не показывает выдаёт мне начальный каталог опять.Т.Е нажимаю на +Пинкоды должно открыться ещё подкаталог и стать
    -Пинкоды
    +Мегафон
    +Билайн
    Вот этого он вообще не открывает а ссылка вбраузере есть на этот каталог а он мне оставляет результат +Пинкоды
     
  13. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    ДО
    PHP:
    1. <?php
    2.  if ($category1['id']==$cat1) {
    3.   $r1=mysql_query("SELECT * FROM ".$plgtables['t_cat_tovar']." WHERE cat='$cat1' AND tip='2' AND status='1' ORDER BY id ASC");
    4.   $num1=mysql_num_rows($r1);
    5.   for($i1=0;$i1<$num1;$i1++) {
    6.   $category2=@mysql_fetch_assoc($r1);
    7.   echo"<tr><td>";
    8.   if ($category2['id']==$cat2) {
    9.   echo"    <img border='0' src='../mag-wm/img/minus.gif'><img border='0' src='../mag-wm/img/open.gif'> <b>".$category2['name']."</b>";
    10.   } else {
    11.   echo"<img border='0' src='../mag-wm/img/plus.gif' style=\"cursor:pointer\" onClick=\"location.href='$PHP_SELF?mod=$_GET[mod]&cat1=$cat1&cat2=$category2[id]'\"><img border='0' src='../mag-wm/img/closed.gif'> ".$category2['name']."</a>";
    12.   }
    13.   echo"</td></tr>";
    14.  ?>
    после
    PHP:
    1.  
    2. <?php
    3.  if ($category1['id']==$cat1) //проверяем условие
    4. {
    5.   $r1=mysql_query("SELECT * FROM ".$plgtables['t_cat_tovar']." WHERE cat='$cat1' AND tip='2' AND status='1' ORDER BY id ASC"); //выполняем запрос, пока все верно
    6.   $num1=mysql_num_rows($r1);
    7.   for($i1=0;$i1<$num1;$i1++) //опять какое то условие
    8. {
    9.   $category2=@mysql_fetch_assoc($r1);
    10.   echo"<tr><td>";
    11.   if ($category2['id']==$cat2)
    12. { пусть будет условие 3
    13.   echo"    <img border='0' src='../mag-wm/img/minus.gif'><img border='0' src='../mag-wm/img/open.gif'> <b>".$category2['name']."</b>"; //тут тоже все верно
    14.   } //конец условия 3
    15.  else //если условие 3 неверно
    16.  {
    17.   echo"<img border='0' src='../mag-wm/img/plus.gif' style=\'cursor:pointer\' onClick=\'location.href='.$PHP_SELF?mod=$_GET[mod]&cat1=$cat1&cat2=$category2[id]'\"><img border='0' src='../mag-wm/img/closed.gif'> ".$category2['name']."</a>";//Вот здесь начинаются проблеммы в ссылке ооочено много непонятных переменных в сочетании с символами равно и разделителями капайся исправляй. Дам подсказку использование двойных и одинарных кавычек в одной строке + отсутствие точек между переменными и кавычками.
    18.   } //конец если условие неверно
    19.   echo"</td></tr>"; // вдобавок скажу что не нашел закрывающие фигурные скобки первых двух условий...
    20.  ?>
    21.  
     
  14. 0nik2008

    0nik2008 Активный пользователь

    С нами с:
    9 мар 2010
    Сообщения:
    26
    Симпатии:
    0
    Да ссылки я исправлял.Ни открывается каталог как струтура дерева и всё.Может кто нибудь подскажит мне свой пимер открытие каталогов в ввиде дерева.Каталог должен использовать БД и написан на PHP.