[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как правильно организовать цикл в цикле?
MrBrown
Здравствуйте! Прошу помощи. Запутался в грамматике php.
Делаю свой первый учебный сайт. В левом навигационном меню - РАЗДЕЛЫ и категории должны быть так:

ФРУКТОВЫЕ
яблоня
груша
слива

ОВОЩИ
картофель
морковь
свёкла

ЯГОДЫ
клубника
малина
ежевика

пытаюсь это сделать с применением php и sql.

Создал две таблицы: первая таблица РАЗДЕЛЫ, называется "part", содержит два поля: id и title ("ФРУКТЫ", "ОВОЩИ", "ЯГОДЫ"...).
Вторая таблица "категории", называется "categories", содержит 3 поля: id, part_id, title. В поле part_id записывается номер раздела соответствующей категории. Это поле и не могу (не умею) правильно использовать! Поле title - это названия категорий ("яблоня", "груша", "слива" - относятся к part_id=1, то есть к фруктам; "картофель", "свекла", "морковь" - part_id=2, то есть "овощи, и т.д.)
Вот код:

<? $result = mysql_query ('SELECT * FROM parts',$db);?>
<?php
if (!$result){echo "<p>Запрос на выборку данных из базы не прошел. Сообщите об этом администратору<br><strong>Код ошибки:</strong></p>"; exit (mysql_error ());}
if (mysql_num_rows ($result) > 0) { while($myrow = mysql_fetch_array($result)):?>
<?php
include ("blocks/menu-block.php");?>
<p>
<?php
echo $myrow['title'];?></p>

<p>
<?php
$result2 = mysql_query('SELECT * FROM categories',$db);
while($myrow = mysql_fetch_array($result2)):
?>
<?php
echo $myrow['title'];?>
<?php
endwhile; ?>
</p>

<?php
include ("blocks/menu-block-end.php");?>
<?php
endwhile;?>
<?
}
else
{
echo "<p>Информация по запросу не может быть извлечена: в таблице нет записей.</p>";
exit();
}?>


Он дает такой вид меню:


ФРУКТОВЫЕ
яблоня груша слива картофель морковь свекла клубника малина ежевика

ОВОЩИ
яблоня груша слива картофель морковь свекла клубника малина ежевика

ЯГОДЫ
яблоня груша слива картофель морковь свекла клубника малина ежевика

В кодинге
 <?php include ("blocks/menu-block.php");?> 
- это просто форматирование внешнего вида прямоугольников разделов тегами <table>, <tr>, <td> с прописанными стилями.

Прошу знатоков: исправьте мой кодинг, чтобы получилась правильная картина.
Всем принявшим участие в решении проблемы - большое спасибо.

p.s. Подскажите, как можно загрузить скриншот? Что-то не найду кнопки в расширенном режиме.








Спустя 1 час, 49 минут, 58 секунд (27.07.2010 - 12:43) MrBrown написал(а):
Помощь не понадобилась - всё сделал сам!
Может кому-то пригодится:

<? $result = mysql_query ('SELECT * FROM parts',$db); ?>
<?php
if (!$result){echo "<p>Запрос на выборку данных из базы не прошел. Сообщите об этом администратору<br><strong>Код ошибки:</strong></p>"; exit (mysql_error ());}
if (mysql_num_rows ($result) > 0) { while($myrow = mysql_fetch_array($result)):?>
<?php
include ("blocks/menu-block.php");?>
<?php
$n=$myrow['id'];?>
<p>
<?php
echo $myrow['title'];?></p>
<p>
<?php
$result2 = mysql_query("SELECT * FROM categoriess WHERE part_id='$n'",$db); ?>
<?php
while($myrow2 = mysql_fetch_array($result2)): ?>
</p>

<?php
echo $myrow2['title'];?>
<?php
endwhile; ?>
</p>

<?php
include ("blocks/menu-block-end.php");?>
<?php
endwhile;?>
<?
}
else
{
echo "<p>Информация по запросу не может быть извлечена: в таблице нет записей.</p>";
exit();
}?>


Всем удачи!

Спустя 20 минут, 32 секунды (27.07.2010 - 13:03) SlavaFr написал(а):
Цитата (MrBrown @ 27.07.2010 - 09:43)
Может кому-то пригодится:

врядли.
1) Инклудирен в цикле это очень медленно, так что надо содержимое от инклуде загнать в переменную

2)тут надо все одним единственным селектом с INNER JOIN делать и проверяя в цикле (не изменилась ли parts.id ?) решать о надобности вставки title и menu-block

Спустя 2 дня, 19 часов, 37 минут, 50 секунд (30.07.2010 - 08:41) MrBrown написал(а):
SlavaFr
"Попрошу в моём топике не выражаться!" biggrin.gif
Типа как много ещё не знаю. Пожалуйста, подскажите ссылочку, где по-русски объясняется это условие - INNER JOIN. Ну и вообще что-либо по моей теме. Например, как содержимое инклуда загнать в переменную. Не в общем и целом, это-то мне понятно, а с конкретными примерами скриптов, так как я слаб в этих запятых, кавычках, слешах...
Спасибо.

Спустя 6 минут, 25 секунд (30.07.2010 - 08:47) Lenarfate написал(а):
а че обязательно почти каждую строчку заключать в <?php ?> ???
и еще, данный синтаксис у циклов уже давно устарел, где вы взяли такие уроки, или что это там...?

Спустя 2 минуты, 46 секунд (30.07.2010 - 08:50) Lenarfate написал(а):
Цитата
Пожалуйста, подскажите ссылочку, где по-русски объясняется это условие - INNER JOIN

Спустя 16 дней, 5 часов, 4 минуты, 43 секунды (16.08.2010 - 13:55) Guest написал(а):
Lenarfate
[/quote]где вы взяли такие уроки, или что это там...?[quote]
Из уроков Е.Попова. Кто-то его хвлит, кто-то ругает, но получилось так по судьбе, что его уроки - первое, что мне попалось из понятного материала.

Спустя 1 минута, 18 секунд (16.08.2010 - 13:56) MrBrown написал(а):
Lenarfate Извините, забыл представиться в предыдущем ответе.

Спустя 1 минута, 26 секунд (16.08.2010 - 13:58) DedMorozzz написал(а):
Да, классный тип. И мы его фанаты. Соответствующие вопросы - лучше всего задавать на его форуме. Он веть учитель и истинные учителя всегда смогут грамотно и сразу ответить на вопросы, которые возникают в ходе обучения...

Спустя 23 часа, 50 минут, 18 секунд (17.08.2010 - 13:48) MrBrown написал(а):
DedMorozzz, увы, его уроки мне достались "халявно-случайно", поэтому я не зарегистрирован у него как его клиент-покупатель. И, следовательно, не могу задавать вопросы.
p.s. А ваш форум получше во многих отношениях. Главный недостаток форума Попова тот, что там обсуждаются в основном только проблемы по его урокам. А у вас - любые вопросы.

Спустя 5 минут, 26 секунд (17.08.2010 - 13:53) DedMorozzz написал(а):
Мой пост был пропитан сарказмом от самой первой буквы.
Цитата
Из уроков Е.Попова. Кто-то его хвлит, кто-то ругает
Зная отношение к нему всех, кто профессионально занимается программированием, Вы всё равно по нему начали учиться. Т.е. вовсе не смутило то, что его код со всех сторон кривой, не правильный и не безопасный. И после него надо полностью переучиваться.
Зная всё это(а это следует из Вашей цитаты), всё равно прошли его курсы и после, с вопросами заходите на форум, где Вам всё равно скажут - забудьте то что учили, и начините вообще с нуля. Иль это такой "аля тонкий" троллинг?

Спустя 1 час, 7 минут, 7 секунд (17.08.2010 - 15:00) MrBrown написал(а):
DedMorozzz

Цитата
Зная отношение к нему всех...


Именно "не зная". Эти уроки - первое, что попалось мне халявно-случайно. Сами знаете, наверное, платить у нас никто не любит. Однако не хочу оправдываться. Да, его уроки казались мне верхом мастерства.
До той поры, пока я не начал лазить по разным PHP-SQL форумам, как у меня появился интернет.
И тем не менее, я его не ругаю, как многие, ведь у каждого и во всём есть "первый учитель", "первая учительница", пусть с недостатками преподавания. Е.Попов открыл мне самые начала строительства сайтов, пришло время идти дальше, к лучшим мастерам, и я с благодарностью прощаюсь с его методой.
Мда, кажется меня занесло в сторону от темы топика. Ну, да уж как вышло. Извиняйте.

Спустя 7 минут, 11 секунд (17.08.2010 - 15:08) DedMorozzz написал(а):
http://www.irbis-team.com/15 вкушай. Это общий курс. По сабжу - http://www.w3schools.com/sql/default.asp

Спустя 3 часа, 51 минута, 39 секунд (17.08.2010 - 18:59) Rutmens написал(а):
Да помню когда я скачал уроки этого МАСТЕРА и тоже тренировался , но у меня были книги уже и я понемного по ним строгал так как видео надоедает смотреть и запускать .. легче книгу взять и найти то что тебе нужно .
P.S У него в уроках я не заметил про OOП что это такое и с чем его едят .
Но больше мне всего запомнилось одно дословно не помню но - "Лучше учиться по видео урокам чем по книгам !!!!" Думаю понятно к чему МАСТЕР ПИ или МИ клонит !!! ташите мне бабос !!!

Спустя 14 часов, 40 минут, 42 секунды (18.08.2010 - 09:40) MrBrown написал(а):
DedMorozzz
Цитата
вкушай

За ссылки большое спасибо. Очень нужная инфа.

Спустя 19 минут, 41 секунда (18.08.2010 - 10:00) Basili4 написал(а):
Может уже пора раздел создать АнтиПоопов И туда всех учеников Попова. Модера им выделить Я могу подрядится и популярно разжевывать им что куда и почему Попов это плохо.
А то пол форума уже тредами о Попове. Во всем разделах. Куда не залезь Там Он. Интересно анекдотов про Попова еще Нет. Вот когда будут Анекдоты это верх популярности.

Спустя 42 секунды (18.08.2010 - 10:00) DedMorozzz написал(а):
Не идиализируй.

Спустя 26 минут, 21 секунда (18.08.2010 - 10:27) Basili4 написал(а):
Цитата (DedMorozzz @ 18.08.2010 - 11:00)
Не идиализируй.


Кого ? Попова....

Я не идеализирую. Но анек про него надо придумать.

Спустя 6 дней, 3 часа, 50 минут, 53 секунды (24.08.2010 - 14:18) Guest написал(а):
Цитата
Но анек про него надо придумать

Вот первый анекдот, точнее, каламбур (дед мороз, прости, что не в тему топика. Или открой новый раздел):

"Кто такой Попов? Конечно знаю! Это ж известный клоун! Правда староват уже."

А про раздел "анти-Попов" - это ценное предложение. Несмотря на то, что он (Попов) - мой , как говорится, первый учитель, увы, многое приходится переучивать, ставить с головы на ноги. Потому и плюхаюсь до сих пор с простейшими кодами. Только назвать надо не в обиду Е.Попову ("Анти-Попов"), а как-то конкретнее, ну, например "Правильный синтаксис - для новичков."

Спустя 1 день, 21 минута, 14 секунд (25.08.2010 - 14:39) MrBrown написал(а):
Получилось! Код значительно короче:

<? $result = mysql_query ("SELECT parts.id, parts.part, cats.id_part, cats.cat FROM parts, cats WHERE cats.id_part = parts.id GROUP BY parts.id", $db);
?>

<?php

while ($myrow = mysql_fetch_array ($result)):?>
<strong> <?php echo $myrow['part'] . "<br>"; ?> </strong>

<?php $n = $myrow['id'];
$result2 = mysql_query ("SELECT * FROM cats WHERE id_part = $n ", $db);

while ($myrow2 = mysql_fetch_array ($result2)):?>

<a href = 'view_cats.php?cat=%s'><?php echo $myrow2['cat'];?></a><br>

<?php endwhile;
endwhile;
?>


А подскажите, как сделать, чтобы открывались не все превьюшки статей, а только нужные? Надо как-то изменить строку со ссылкой href и якорем %s, а как - я не знаю.
Быстрый ответ:

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