Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   не корректно выводится путь до вложенных страниц (http://www.flasher.ru/forum/showthread.php?t=89332)

Americanets 13.12.2006 11:52

не корректно выводится путь до вложенных страниц
 
Код:

CREATE TABLE `pages` (`id` int(11) NOT NULL auto_increment, `name_url` varchar(255) NOT NULL default '', `content` text,`parent` int(11) NOT NULL default '0',  PRIMARY KEY  (`id`));
INSERT INTO `pages` VALUES (1, 'home','просто страница', 0);
INSERT INTO `pages` VALUES (2, 'pod','просто подстраница', 1);
INSERT INTO `pages` VALUES (3, 'podstr3','просто подстраница3', 2);
INSERT INTO `pages` VALUES (5, 'satranica', 'просто подстраница 2', 0);
INSERT INTO `pages` VALUES (6, 'podstresho', 'просто подстраница 2osds', 5);
INSERT INTO `pages` VALUES (7, 'podstresho', 'просто подстраница isho i ischo', 6);


PHP код:

function BuildFullPath($curId,$base_path="/") { 
$url = ""; 
while (
true) { 
$query="SELECT `id`,`menu_neme`,`parent`,`name_url` from `pages` where `id`=$curId"; 
$query = mysql_query($query) or die (mysql_error()); 
$pr = mysql_fetch_row($query);
$pg=$pr[3]."/".$pg; 
$url = "<a href=".$pg.">".$pr[1]."</a>/".$url; 
if (
$pr[2]==0) { 
break; 
} 
$curId = $pr[2]; 
} 
return 
$base_path.$url; 
}

$query="SELECT * from `pages` where `id`"; 
$query = mysql_query($query) or die (mysql_error()); 

WHILE (
$dat=mysql_fetch_array($query))  { 
    print 
BuildFullPath($dat['id'],'http://example.com/')."<br>\n"; 
} 

выводит

начальная(/podstr/esho/)/подстраница(/podstr/)/еще подстраница(/)
должен
начальная(/)/подстраница(/podstr/)/еще подстраница(/podstr/esho/)

rtm 13.12.2006 13:44

Наконец-то я добился от Вас ответа на вопрос "Что Вы хотите получить в итоге?"! Только это кажется уже 3-я ветка по этому вопросу.

Приведённый Вами скрипт вообще начего не ведет так как в сценарии создания таблицы нет поля `menu_neme`, кстати кажется Вы написали не совсем то, что хотели, ну да это не особо важно.

Вот моя очередная попытка в решении этого вопрос, в свете новооткрытых требованиях. Я основываюсь на бд, а не на Вашем коде.
Код:

CREATE TABLE `pages` (`id` int(11) NOT NULL auto_increment, `name_url` varchar(255) NOT NULL default '', `content` text,`parent` int(11) NOT NULL default '0',  PRIMARY KEY  (`id`));
INSERT INTO `pages` VALUES (1, 'home','просто страница', 0);
INSERT INTO `pages` VALUES (2, 'pod','просто подстраница', 1);
INSERT INTO `pages` VALUES (3, 'podstr3','просто подстраница3', 2);
INSERT INTO `pages` VALUES (5, 'satranica', 'просто подстраница 2', 0);
INSERT INTO `pages` VALUES (6, 'podstresho', 'просто подстраница 2osds', 5);
INSERT INTO `pages` VALUES (7, 'podstresho', 'просто подстраница isho i ischo', 6);

PHP код:

function BuildFullPath($curId,$base_path="/") {
    
$path = array();
    while (
true) {
        
$sql = "select `id`,`content`,`name_url`,`parent` from `pages` where `id` = $curId";
        
$r = mysql_query($sql) or die(mysql_error());
        
$r = mysql_fetch_row($r);
        
$path[] = array('title'=>$r[1],'url'=>$r[2]);
        if (
$r[3]==0) {
            break;
        }
        
$curId = $r[3];
    }
    
$resstr = "";
    while (
count($path)) {
        
$pg = array_pop($path);
        
$resstr.= "<a href=\"$base_path".$pg['url']."\">".$pg['title']."</a>/";
        
$base_path.=$pg['url'].'/';
    }
    return 
$resstr;
}
$query="SELECT `id`,`content` from pages";
$query = mysql_query($query) or die (mysql_error());

WHILE (
$dat=mysql_fetch_assoc($query))  {
    print 
"<li>".$dat['content']."URL: ".BuildFullPath($dat['id'],'http://example.com/')."<br>\n";
} 


Americanets 13.12.2006 13:58

спасибо


Часовой пояс GMT +4, время: 18:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.