Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Генерация ссылок на связаные таблицы mysql
 
 автор: freel   (20.08.2008 в 17:53)   письмо автору
 
 

Доброго!
возник вопрос по генерации страницы в которой принимают участие
две таблицы
1) Темы
2) Страницы

даный вывод осуществляю так

$theme = "algoritms_t";
$page = "algoritms_p";

$t_query= "SELECT * FROM $theme"; //выбрать все темы
$t_res = create_page($t_query); //выполнить запрос
while($t_row=mysql_fetch_assoc($t_res)) //идём по массиву
{

$them_id = $t_row['id']; //определим номер темы
$them_name = $t_row['name']; //определим имя темы
echo "<br><h3>$them_name</h3>";

$p_query= "SELECT * FROM `$page` WHERE `$page`.`id`= $them_id"; //запрос статей
$p_res = create_page($p_query); //выполнить запрос

while($p_row=mysql_fetch_assoc($p_res)) //вывод статей темы
{
$page_id = $p_row['id'];
$page_name = $p_row['name'];
echo "<br> <a href=\"?theme=$them_id,page=$page_name\">$page_name</a>";
}

}

в результате получаю два вложеных цикла, возможно ли оптимизировать даную ф-цию, сделать её более читабельной и практичной?

  Ответить  
 
 автор: mihdan   (21.08.2008 в 11:40)   письмо автору
 
   для: freel   (20.08.2008 в 17:53)
 

Лучше сделать вложеный запрос уж, чем куча вложеных циклов-вам в раздел MySQL

  Ответить  
 
 автор: freel   (21.08.2008 в 14:27)   письмо автору
 
   для: mihdan   (21.08.2008 в 11:40)
 

а примерчик можно как вы это решаете?

  Ответить  
 
 автор: freel   (21.08.2008 в 16:15)   письмо автору
 
   для: mihdan   (21.08.2008 в 11:40)
 

так не получится, ибо таблиц уже 3, структура их такова

Разделы:
id //auto_increment
name

Темы:
id //auto_increment
id_part //к какому номеру таблицы "Разделы:" имеет принадлежность -
name

Страницы:
id //auto_icriment
-
id_them - к какому номеру таблицы "Темы:" темы пренадлежит -
name
data

передаю с браузера
1) номер раздела
2) номер темы
3) номер страницы


класс "страница"
содержит методы:

/*Метод принимает id и возвращает полную инфу по id данной части
*/
function print_part($id_part)
{
$query= "SELECT * FROM `part` WHERE `part`.`id`= $id_part"; //запрос части
$res = $this->exect_query($query);

return $res;
}

/*Метод принимает id темы и возвращает массив тем с указаным id/
*/
function print_them($id_them)
{
$query= "SELECT * FROM `them` WHERE `them`.`id_part`= $id_them"; //запрос темы
$res = $this->exect_query($query);

return $res;
}


/*Метод принимает id страницы и возвращает массив страниц с указаным id
*/
function print_page($id_page)
{
$query= "SELECT * FROM `page` WHERE `page`.`id_them`= $id_page"; //запрос страниц
$res = $this->exect_query($query);
return $res;
}

в самом же index.php от вложеного цикла уйти не получилось, проходя по массиву тем, приходится каждый раз вызывать function print_page($id_page) передавая в качестве $id_page номер текущей темы

index.php:

$page_obj = new class_page(); //создать объект страничка
$res = $page_obj->print_part($id_part); //вывoд раздела
foreach ($res as $row)
{
echo "<h3> $row[name] </h3>";
}

$res = $page_obj->print_them($id_them); //вывод темы
foreach ($res as $row) //идём циклом по темам
{
echo "<br>them = $row[id]-$row[name]";

$res = $page_obj->print_page($row[id]); //вывод страниц по теме
foreach ($res as $row)//идём циклом по страницам
{
echo "<br>-----$row[name]";
}


}


что бы посоветовали со своего опыта? заранее спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования