Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Поиск по базе с parent_url (вложенными страницами), не могу вывести корректный УРЛ (http://www.flasher.ru/forum/showthread.php?t=88523)

Americanets 24.11.2006 22:55

Поиск по базе с parent_url (вложенными страницами), не могу вывести корректный УРЛ
 
не знаю как при поиске вывести корректный URL

ищу так

PHP код:

$query="SELECT * from pages where content LIKE '%$poisk%'";
$query = mysql_query($query) or die (mysql_error());



WHILE (
$dat=mysql_fetch_array($query))
     {
    print 
"<li>".$dat[content]."URL".$dat[name_url];} 

база

Код:

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);


Skubent 27.11.2006 12:27

А чего добиться-то хочешь ?

rtm 27.11.2006 13:39

А добиться автор по всей видимости хочет построения URL, то есть при поиске строки "isho i ischo" он хочет от скрипта получить URL "http://example.com/satranica/podstresho/podstresho/".

Если мои телепатические способности не подвели меня, то необходимо что-то типа этого:
PHP код:

function BuildFullPath($curId,$url="/") {
    while (
true) {
        
$query="SELECT `id`,`name_url`,`parent` from pages where `id`=$curId"; 
        
$query = mysql_query($query) or die (mysql_error());
        
$pr = mysql_fetch_row($query);
        
$url = $pr['name_url']."/".$url;
        if (
$res[2]==0) {
            break;
        }
    }
    return 
$url;
}
query="SELECT * from pages where content LIKE '%$poisk%'"; 
$query = mysql_query($query) or die (mysql_error());
WHILE (
$dat=mysql_fetch_array($query))  { 
    print 
"<li>".$dat['content']."URL: ".BuildFullPath($dat['id'],'http://example.com')."<br>\n";
} 

P.S. работоспособность приведенного кода я не гарантирую так как проверять мне его не начем, но думаю суть ясна.

Americanets 27.11.2006 19:58

Цитата:

Сообщение от rtm
А добиться автор по всей видимости хочет построения URL, то есть при поиске строки "isho i ischo" он хочет от скрипта получить URL "http://example.com/satranica/podstresho/podstresho/".

Если мои телепатические способности не подвели меня, то необходимо что-то типа этого:
PHP код:

function BuildFullPath($curId,$url="/") {
    while (
true) {
        
$query="SELECT `id`,`name_url`,`parent` from pages where `id`=$curId"; 
        
$query = mysql_query($query) or die (mysql_error());
        
$pr = mysql_fetch_row($query);
        
$url = $pr['name_url']."/".$url;
        if (
$res[2]==0) {
            break;
        }
    }
    return 
$url;
}
query="SELECT * from pages where content LIKE '%$poisk%'"; 
$query = mysql_query($query) or die (mysql_error());
WHILE (
$dat=mysql_fetch_array($query))  { 
    print 
"<li>".$dat['content']."URL: ".BuildFullPath($dat['id'],'http://example.com')."<br>\n";
} 

P.S. работоспособность приведенного кода я не гарантирую так как проверять мне его не начем, но думаю суть ясна.

да все верно буду пробовать

Americanets 28.11.2006 00:26

что-то не работает :(

Americanets 28.11.2006 00:36

совсем, выдает /http://example.com

etc 28.11.2006 00:58

Замени $url = $pr['name_url']."/".$url; на $url = $url.'/'.$pr['name_url'];

rtm 28.11.2006 16:37

Цитата:

Сообщение от __etc
Замени $url = $pr['name_url']."/".$url; на $url = $url.'/'.$pr['name_url'];

В корне не верное предложение, так как в этом случае получится обратный порядок вложенности страниц.
Нужно переписать функцию так:
PHP код:

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


etc 28.11.2006 16:40

Ещё бы неверное, я не разбирался особо в коде :)

rtm 28.11.2006 16:44

Параметр $base_path являет собой начальные путь, относительно которого будет строится окончательный путь. Пара примеров:
PHP код:

echo BuildFullPath('isho i ischo','http://example.com/'); 

даст, по приведенной Вами бд, путь: "http://example.com/satranica/podstresho/podstresho/"
PHP код:

echo BuildFullPath('isho i ischo','http://example.com/subfld/'); 

даст: "http://example.com/subfls/satranica/podstresho/podstresho/"
PHP код:

echo BuildFullPath('isho i ischo'); 

даст: "/satranica/podstresho/podstresho/"


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

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