генерация ссылок из Mysql в браузер

freel

Новичок
генерация ссылок из Mysql в браузер

Доброго,
возник вопрос, каким образом корректней всего осуществить вывод информации из БД в браузер пользователя?
такая задача

даны таблицы

1) темы сайта == thems
2) имена разделов тем == pages_name
3) страницы pages_info
таблицы вяжутся запросом

SELECT * FROM thems, pages_name, pages_info WHERE `thems`.`id` = `pages_name`.`id` AND `pages_name`.`id` = `pages_info`.`id` AND `thems`.`id` = `pages_info`.`id`

как думаю сделать:
По результату выполнения запроса создать соответсвующие массивы и в цикле вывести ссылки на каждую из этих страниц

кто как делает? есть ли ещё какие-то более эфективные решения?
буду благодарен за советы и примеры, спасибо.
 

freel

Новичок
Автор оригинала: *****
что имеется в виду под "эффективностью"?
1) понятность и читабельность кода
2) снижение потенциальной подверженности к ошибкам
3) скорость работы скритп+mysql

так же интересно мнение как в основном принято решать подобную зачаду.
 

Фанат

oncle terrible
Команда форума
если у тебя вопрос по выводу информации из БД в браузер ВООБЩЕ, то при чем здесь конкретные таблицы?

"в основном" такую задачу принято решать с помощью шаблонов.
делается шаблон, а потом примерно, как у тебя - получаем данные в массив и подключаем шаблон.
например:
PHP:
$LIST=array();
$query="SELECT * FROM $table"; 
$res=mysql_query($query);
while($row=mysql_fetch_assoc($res)) $LIST[]=$row;
include 'list.php';
PHP:
<a href="?id=0">Add item</a>
<? foreach ($LIST as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>
для обработки ошибок можно проверить - вернула ли что-нибудь база, и если нет - то подключить другой шаблон, с извинениями.

Для понятности и читабельности кода достаточно, чтобы действия программиста были логичными и осмысленными.
Скорость исполнения кода РНР является удовлетворительной, переживать о ней не надо.
 

freel

Новичок
спасибо, по этой части вник

-~{}~ 20.08.08 15:14:

Вы используете ассоциативный массив, натолкнуло на такую мысль

связать две таблицы запросом
SELECT * FROM pages_name, pages_info
WHERE `pages_name`.`id` = `pages_info`.`id`
AND `pages_name`.`id` = 1

и поместить выполенение результата запроса в ассоциативный массив
затем просто выводить $LIST[0][1], $LIST[0][2], $LIST[n][m]
дабы не создавать два отдельных массива и делать важенные циклы
таким образом поступают? как это с точки зрения кодирования на php корректней сделать? спасибо.
 

Фанат

oncle terrible
Команда форума
это не я использую. Это mysql API использует.
можно в двумерный. собственно, в моем примере, как раз, двумерный массив и используется. а не два отдельных
 

freel

Новичок
да массив один, но при таком запросе, который вяжет две таблицы вместе
выводит содержимое второй таблицы упуская содержимое первой таблицы.
$query= "SELECT * FROM `$theme`,`$page` WHERE `$theme`.`id` = `$page`.`id`";

Возможно ли сделать так:
$arr[theme][page];
$arr[0][1]
$arr[0][2]
$arr[0][3]
$arr[0][4]
..............
дабы получить на выводе список такого рода

1)ТЕМА 1
а)радел 1
б)раздел 2
в)раздел 3

2)ТЕМА 2
а)радел 1
б)раздел 2
в)раздел 3
и соответсвенно линк "theme=1,page=2"
 

Tigra666

Новичок
Автор оригинала: freel
да массив один, но при таком запросе, который вяжет две таблицы вместе
выводит содержимое второй таблицы упуская содержимое первой таблицы.
$query= "SELECT * FROM `$theme`,`$page` WHERE `$theme`.`id` = `$page`.`id`";

Возможно ли сделать так:
$arr[theme][page];
$arr[0][1]
$arr[0][2]
$arr[0][3]
$arr[0][4]
..............
дабы получить на выводе список такого рода

1)ТЕМА 1
а)радел 1
б)раздел 2
в)раздел 3

2)ТЕМА 2
а)радел 1
б)раздел 2
в)раздел 3
и соответсвенно линк "theme=1,page=2"
2 таблицы,3,10 или одна это совершенно не важно.
На выходе таблица одна.
Из которой по примеру ,приведенному *****ом получается двумерный массив.

А дальше,чтобы получить Тема1,Тема2 нужно делать оброботку.
Как это делать - уже как того требует формат отоброжения,и знания позволяют.

Можно следить за изменением того что хранится в поле темы и на ходу создавать новые строки в HTML,новую таблицу. Что угодно.
Можно заранее подготовить более сложный массив,по типу $articles['theme1']['page2'],что более красиво. И уже его пускать на вывод.
Тут именно "Делай, как тебе нравится."

Главное на каждом этапе понимать что у тебя есть. На этом этапе уже нет тех двух таблиц.
 
Сверху