[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл в цикле в PHP
Sanches
Здравствуйте! У меня вопрос касающийся вывода цикла в уже существующем цикле!

Например:

<?
$sql = "SELECT id,title, FROM table1";
$query = mysql_query ($sql);
$array = mysql_fetch_array ($query);



$id = $array["id"];
$title = $array["title"];

$sql2 = "SELECT id,title,part FROM table2 WHERE part = $id";
$query2 = mysql_query ($sql2);
$array2 = mysql_fetch_array ($query2);

do
{

echo "Раздел $title с номером $id", имеющий в себе категории:";

/* И как раз в этом месте мне нужно вывести список категорий. Естественно список выводится как цикл, однако цикл DO WHILE не хочет работать здесь. */



}
while (
$array = mysql_fetch_array ($query));

?>


Если кто в курсе как реализовать подобно пишите! Заранее благодарен! smile.gif smile.gif smile.gif



Спустя 28 минут, 2 секунды (24.05.2010 - 18:39) Raito-kun написал(а):
я не понимаю. покажите скрин таблицы, чтоли и как вы представляете себе результат. и do-while тут зачем? попов чтоли?

Спустя 11 минут, 30 секунд (24.05.2010 - 18:50) Gabriel написал(а):
забудьте про поповский do-whilе
http://phpforum.ru/index.php?showtopic=21916

Спустя 15 минут, 3 секунды (24.05.2010 - 19:06) Sanches написал(а):
user posted image

"ВИДЕО, УРОКИ И СТАТЬ, НОТЫ" это разделы выводящиеся на странице в цикле

<?
$sql = "SELECT id,title, FROM table1";
$query = mysql_query ($sql);
$array = mysql_fetch_array ($query); ?>
это запрос, достающий из таблицы table1 (в ней 2 поля id и title) названия и id разделов.

Внутри разделов должны выводиться названия категорий, соответствующие этому разделу (естественно в виде ссылок).

<? $sql2 = "SELECT id,title,part FROM table2 WHERE part = $id";
$query2 = mysql_query ($sql2);
$array2 = mysql_fetch_array ($query2); ?>

В таблице table2 содержатся: Названия категорий, id категории, part ( идентификатор соответствующий id в таблице table1). Следовательно по данному запросу извлекаются данные соответствующие нужному нам разделу!

Короче задача в том, что бы вывести в каждом столбце (смотрите рисунок), соответствующие ему ссылки!

Спустя 35 минут, 42 секунды (24.05.2010 - 19:41) Sanches написал(а):
Цитата (Gabriel @ 24.05.2010 - 15:50)
забудьте про поповский do-whilе
http://phpforum.ru/index.php?showtopic=21916

Причем тут это? Меня просто интересует конкретный вопрос, а про запрос и вывод из базы я уже знаю, спасибо!

Спустя 3 минуты, 40 секунд (24.05.2010 - 19:45) Unlikely написал(а):
Ну вайлами выводи. И то и то

Спустя 7 минут, 26 секунд (24.05.2010 - 19:52) Gabriel написал(а):
потому-что при использовании структуры while(); можно сделать так и будет значительно прозрачнее

while ( $main = mysql_fetch_assoc( $MainSelect ) ) {

$SubQuery = "SELECT * FROM `TABLE` WHERE поле_связки_таблиц = $main['значение']";
$SubSelect = mysql_query( $SubQuery ) or die( mysql_error(); );

while ( $sub = mysql_fetch_assoc( $SubSelect ) {

/*рисуем что угодно*/

}

}

ну или можно попробовать прооптимизировать ( хотя не факт, что будет шустрее это нужно пробовать методом научного тыка ( а точнее замерки скорости выполнения запросов ) )
$Query = "SELECT * FROM `TABLE1` LEFT JOIN `TABLE2` ON TABLE1.ID = TABLE2.ID";
$Select = mysql_query ( $Query );
while ( $Categories = mysql_fetch_assoc( $Select ) )
{
print_r( $Categories );
}

Спустя 26 минут, 27 секунд (24.05.2010 - 20:19) Sanches написал(а):
Так это все понятно! Как вы поняли каждый из разделов это таблица. Но загвоздка вся в том что категории нужно выводить внутри таблицы (значит внутри echo) Так как мне в таблицу вставить второй цикл!

Спустя 14 минут (24.05.2010 - 20:33) Gabriel написал(а):
покажи пример кода как выводить пытаешся, может чего от руки набросаю

Спустя 8 минут, 51 секунда (24.05.2010 - 20:42) Sanches написал(а):
$result_part = mysql_query ("SELECT * FROM `part`") or die( mysql_error());
$myrow_part = mysql_fetch_assoc ($result_part);
while ($myrow_part = mysql_fetch_assoc ($result_part))
{
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top" id="'
.$myrow_part["style"].'"><p class="sidebarlable">'.$myrow_part["title"].'</p> </td>
</tr>
<tr>
<td id="bgsidebar">
<ul>






</ul>

</td>
</tr>
<tr>
<td id="bottomsidebar"> </td>
</tr>
</table>'
;




}




?>

</td>
вот короче сам исходный файл. при использовании while(); пропал столбец ВИДЕО а вот цикл внутри я даже не писал еще!

Спустя 1 минута, 54 секунды (24.05.2010 - 20:44) Gabriel написал(а):
Цитата
при использовании while(); пропал столбец ВИДЕО

убери это
$myrow_part = mysql_fetch_assoc ($result_part);


<?php
$result_part = mysql_query ("SELECT * FROM `part`") or die( mysql_error());
while ( $myrow_part = mysql_fetch_assoc( $result_part ) ) {
$SubQuery = "SELECT * FROM `mytable` WHERE id = '".intval( $myrow_part )."'";
$SubSelect = mysql_query( $SubQuery ) or die( mysql_error() );
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top" id="'
.$myrow_part["style"].'"><p class="sidebarlable">'.$myrow_part["title"].'</p> </td>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>'
;

while ( $SubCats = mysql_fetch_assoc( $SubSelect ) ) {

echo '<td>'. $SubCats['some_value'] .'</td>';

}

echo '</tr>
</table>
</tr>
<tr>
<td id="bgsidebar">
<ul></ul>
</td>
</tr>
<tr>
<td id="bottomsidebar"> </td>
</tr>
</table>'
;
}
?>
не знаю угадал или нет с местом вывода но думаю где-так. принцип должен быть понятен.

Спустя 5 минут, 15 секунд (24.05.2010 - 20:49) Sanches написал(а):
Спасибо ВИДЕО появилось! А как все таки цикл внутри echo вывести?

Спустя 15 минут, 32 секунды (24.05.2010 - 21:04) Gabriel написал(а):
внутри echo наверное только через Eval но зачем внутри если echo можно подвунуть?

Спустя 11 минут, 3 секунды (24.05.2010 - 21:15) Sanches написал(а):
Спасибо тебе огромное! Вроде все понял! Короче Попова на мыло!!! А может хорошие книги по PHP посоветуешь?

Спустя 31 минута, 49 секунд (24.05.2010 - 21:47) Gabriel написал(а):
юзни поиск тем про книги как мусора. да и закрепленных тем много. также можеш почитать http://www.irbis-team.com/15
а то, что попова на мыло это да!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.