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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сосзадание карты сайта [2]

 PHP.SU

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


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

> Описание: карта сайта
Champion Супермодератор
Отправлено: 19 Января, 2009 - 11:16:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




private - это не функция, это слово задает область видимости члена класса. public - доступно ото всюду, private - только внутри класса, protected - как и private, но такая переменная будет доступна друзьям и наследникам класса
 
 Top
Stierus Супермодератор
Отправлено: 19 Января, 2009 - 11:21:27
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Цитата:
Я наверное опять туплю, у меня выводится ошибка
в строке private $content = false;

Печально, что у вас выводится ошибка, было бы неплохо код посмотреть Улыбка

ps
Класс не тестировал, привёл для наглядного показа хода мыслей, в котором нужно двигаться.
 
My status
 Top
Evil Cold
Отправлено: 19 Января, 2009 - 11:38:03
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2009  
Откуда: Не далеко от Москвы


Помог: 0 раз(а)




Уважаемый Вы наверное будите смеяться, очень громко, я просто откопипастил ваш код, я просто пока еще до классов не добрался, не успел.
Я пока первый месяц пытаюсь что-то кодить, а до этого лет 8-10 назад QBASE занимался да и то потом забросил.

(Отредактировано автором: 19 Января, 2009 - 11:39:32)

 
 Top
Stierus Супермодератор
Отправлено: 19 Января, 2009 - 11:40:12
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Тогда структуру базы данных хоть выложите что ли
Прикреплено изображение (Нажмите для увеличения)
f_4958a50c15933.jpg

(Отредактировано автором: 19 Января, 2009 - 11:43:29)

 
My status
 Top
Evil Cold
Отправлено: 19 Января, 2009 - 11:57:48
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2009  
Откуда: Не далеко от Москвы


Помог: 0 раз(а)




CODE (text):
скопировать код в буфер обмена
  1. # phpMyAdmin SQL Dump
  2. # version 2.5.6
  3. # http://www.phpmyadmin.net
  4. #
  5. # Хост: localhost
  6. # Время создания: Янв 19 2009 г., 12:56
  7. # Версия сервера: 3.23.53
  8. # Версия PHP: 4.3.6
  9. #
  10. # БД : `test`
  11. #
  12.  
  13. # --------------------------------------------------------
  14.  
  15. #
  16. # Структура таблицы `subdivision`
  17. #
  18.  
  19. CREATE TABLE `subdivision` (
  20.   `subdivision_id` int(50) NOT NULL auto_increment,
  21.   `parent` varchar(100) NOT NULL default '',
  22.   `name_ru` varchar(100) NOT NULL default '',
  23.   `name_en` varchar(100) NOT NULL default '',
  24.   PRIMARY KEY  (`subdivision_id`)
  25. ) TYPE=MyISAM AUTO_INCREMENT=8 ;
  26.  
  27. #
  28. # Дамп данных таблицы `subdivision`
  29. #
  30.  
  31. INSERT INTO `subdivision` VALUES (1, '0', 'О компании', 'company');
  32. INSERT INTO `subdivision` VALUES (2, '0', 'Контакты', 'contacty');
  33. INSERT INTO `subdivision` VALUES (3, '0', 'Вакансии', 'job');
  34. INSERT INTO `subdivision` VALUES (4, '1', 'товар', 'tovar');
  35. INSERT INTO `subdivision` VALUES (5, '3', 'Работа 1', 'job_1');
  36. INSERT INTO `subdivision` VALUES (6, '1', 'Офирме', 'firma');
  37. INSERT INTO `subdivision` VALUES (7, '4', 'Болт 1', 'bolt 1');

(Отредактировано автором: 19 Января, 2009 - 11:58:07)

 
 Top
Stierus Супермодератор
Отправлено: 19 Января, 2009 - 12:37:09
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $db = mysql_connect ("localhost","root");
  4. mysql_select_db ("test", $db);
  5. //*****************************************
  6.  
  7. $menul = mysql_query ("select * from subdivision", $db);
  8. while($menuL[]= mysql_fetch_array ($menul));
  9.  
  10. class tree{
  11.         public $content = false;
  12.        
  13.         function __construct($body=false){
  14.                 if($body){
  15.                         $this->content = $body;
  16.                 }
  17.         }
  18.        
  19.         function print_childs($pid=0){
  20.                 if(!$this->content){
  21.                         return false;
  22.                 }
  23.                 echo "<ul>\r\n";
  24.                 foreach($this->content as $elem){
  25.                         if(isset($elem['parent']) and $elem['parent'] == $pid){
  26.                                 echo "<li>\r\n";
  27.                                 echo $elem['name_ru']."\r\n";
  28.                                 $this->print_childs($elem['subdivision_id']);
  29.                                 echo "</li>\r\n";
  30.                         }
  31.                 }
  32.                 echo "</ul>\r\n";
  33.         }
  34. }
  35.  
  36. $tree = new tree($menuL);
  37. $tree->print_childs();
  38.  
  39. ?>
  40.  
 
My status
 Top
Evil Cold
Отправлено: 19 Января, 2009 - 13:28:10
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2009  
Откуда: Не далеко от Москвы


Помог: 0 раз(а)




Опять тудаже посылает
public $content = false;
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'
 
 Top
Champion Супермодератор
Отправлено: 19 Января, 2009 - 13:38:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




а уберите слово public...
 
 Top
Evil Cold
Отправлено: 19 Января, 2009 - 13:47:44
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2009  
Откуда: Не далеко от Москвы


Помог: 0 раз(а)




Пробывал, ругается на туже строку но только ошибка не много другая

Parse error: parse error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'
 
 Top
Champion Супермодератор
Отправлено: 19 Января, 2009 - 13:55:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




какой у вас php?
 
 Top
Evil Cold
Отправлено: 19 Января, 2009 - 14:04:05
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2009  
Откуда: Не далеко от Москвы


Помог: 0 раз(а)




Apache/1.3.27 (Win32) PHP/4.3.6
Apache Release 10324100
Apache API Version 19990320

PHP Version 4.3.6

Есть обалденые курсы http://evgeniypopov[dot]ru/ , для таких как я, самое оно, вот и там была сборка локального сервака.
 
 Top
valenok Модератор
Отправлено: 19 Января, 2009 - 14:11:57
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Пора бы тебе обновиться =)


-----
Truly yours, Sasha.
 
My status
 Top
Stierus Супермодератор
Отправлено: 19 Января, 2009 - 14:20:03
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




CODE (text):
скопировать код в буфер обмена
  1.  
  2.  
  3. <?php
  4. $db = mysql_connect ("localhost","root");
  5. mysql_select_db ("test", $db);
  6. //*****************************************
  7.  
  8. $menul = mysql_query ("select * from subdivision", $db);
  9. while($menuL[]= mysql_fetch_array ($menul));
  10.  
  11. class tree{
  12. var $content = false;
  13.  
  14. function tree($body=false){
  15. if($body){
  16. $this->content = $body;
  17. }
  18. }
  19.  
  20. function print_childs($pid=0){
  21. if(!$this->content){
  22. return false;
  23. }
  24. echo "<ul>\r\n";
  25. foreach($this->content as $elem){
  26. if(isset($elem['parent']) and $elem['parent'] == $pid){
  27. echo "<li>\r\n";
  28. echo $elem['name_ru']."\r\n";
  29. $this->print_childs($elem['subdivision_id']);
  30. echo "</li>\r\n";
  31. }
  32. }
  33. echo "</ul>\r\n";
  34. }
  35. }
  36.  
  37. $tree = new tree($menuL);
  38. $tree->print_childs();
  39.  
  40. ?>
  41.  


Так по идее и на 4-м должно работать (давно с ним не сталкивался, могу и ошибаться)
(Добавление)
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $db = mysql_connect ("localhost","root");
  4. mysql_select_db ("test", $db);
  5. //*****************************************
  6. $menuL = array();
  7. $menul = mysql_query ("select * from subdivision", $db);
  8. while($menuL[]= mysql_fetch_array ($menul));
  9.  
  10.  
  11. function print_childs($pid=0){
  12.         global $menuL;
  13.         echo "<ul>\r\n";
  14.         foreach($menuL as $elem){
  15.                 if(isset($elem['parent']) and $elem['parent'] == $pid){
  16.                         echo "<li>\r\n";
  17.                         echo $elem['name_ru']."\r\n";
  18.                         print_childs($elem['subdivision_id']);
  19.                         echo "</li>\r\n";
  20.                 }
  21.         }
  22.         echo "</ul>\r\n";
  23. }
  24.  
  25. print_childs();
  26.  
  27. ?>
  28.  


Вариант без классов, но с глобальной переменной (лучше довести класс до работоспособности, но это тоже вариант)
 
My status
 Top
Evil Cold
Отправлено: 19 Января, 2009 - 16:36:45
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Янв. 2009  
Откуда: Не далеко от Москвы


Помог: 0 раз(а)




класс так и не заработал и попытался выложить на хостинг там таже ошибка.
По поводу варианта с глобальной переменной, на данный момент более интересен, он хоть от части понятен но и там есть не большой косячек он выводит первую ветку до конца и на этом все. Не формерует подменю.

О компании
.. товар
... Болт 1

В коде есть интересная фишка (не знаю как это по другому назвать, функция или не функция)
CODE (text):
скопировать код в буфер обмена
  1. print_childs($elem['subdivision_id']);
попытался по ней найти что-то, но без успешно, если её убрать выведит меню первого уровня ну это как бы и понятно.
 
 Top
Stierus Супермодератор
Отправлено: 19 Января, 2009 - 16:42:47
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




http://forum.php.su/topic.php?fo...61429#1232361429 проверено на локалхосте на дампе, присланной вами - работает ( php v5.2)

ps
По поводу
Цитата:
В коде есть интересная фишка

Эту функцию вы и создали, написав
CODE (text):
скопировать код в буфер обмена
  1. function print_childs($pid=0){

Мы вызываем в функции саму себя, но с другими параметрами (параметрами дочерних элементов), если бы прочитали, что я говорил - поняли бы это.
 
My status
 Top
Страниц (4): « 1 [2] 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB