Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Вопрос по выводу данных из бд

#1 Виталик

Виталик
  • Пользователь
  • 18 сообщений
  • Репутация: 0
0

Отправлено 22 Февраль 2012 - 19:21

Вот запрос:

$res=mysql_query("SELECT section.name_section AS t1 ,category.name_category AS t2 FROM section JOIN category ON section.id_section = category.id_category");

while($arr= mysql_fetch_assoc($res)){

}

t1-это названия разделов.

t2-это названия категорий.

К каждому разделу относиться несколько категорий.

Понимаю,что нужно применить (foreach),но никак не могу понять,как сделать,чтобы вышло во так:



Название раздела

Название категории
Название категории
Название категории
Название категории

Название раздела

Название категории
Название категории
Название категории
Название категории

Форумчане, если не трудно ,допишите код и желательно прокоментируйте.
От всего сердца вам благодарен.

 

 

  • 0

#2 Светозар

Светозар
  • Пользователь
  • 62 сообщений
  • Репутация: 3

Отправлено 23 Февраль 2012 - 09:50

что-то с вашим запросом запутался! Одна таблица, или две? Одна с названиями, другая с категориями?
  • 0

#3 Виталик

Виталик
    Topic Starter
  • Пользователь
  • 18 сообщений
  • Репутация: 0

Отправлено 23 Февраль 2012 - 11:00

Две


  • 0

#4 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 23 Февраль 2012 - 14:40

Виталик, Вы уже третий с подобной задачей за последние несколько дней :blink:
Поскольку дампа БД не выложили, то код писал так, насколько понял задачу. Собственно, код:
<?php
mysql_connect("localhost", "root", "");
mysql_query("SET NAMES 'utf8'");
mysql_select_db("test");
$query = "SELECT section.name_section, category.name_category FROM category, section WHERE category.id_section = section.id";
$res = mysql_query($query);
$data = array();
while($row = mysql_fetch_assoc($res)){
	$data[] = $row; // получаем данные в массив
}
//print_r($data);
$group = $data[0]['name_section']; // выбираем первый раздел и помещаем в переменную group
echo '<b>' .$group. '</b><hr>'; // выводим первый раздел
/* проходимся по массиву */
foreach($data as $item){
	/* если текущий раздел не совпадает с имеющимся в переменной group */
	if($group != $item['name_section']){
		echo '<br><b>' .$item['name_section']. '</b><hr>'; // то выводим новый раздел
		$group = $item['name_section']; // и заносим новый раздел в переменную group
	}
	/* если же текущий раздел совпадает с имеющимся в переменной group, то цикл пропускаем */
	echo $item['name_category']. '<br>'; // выводим текущую категорию
}
?>
Результат:

Раздел 1
Категория 1
Категория 2

Раздел 2
Категория 3

Раздел 3
Категория 4
Категория 5
Категория 6

Ну и скрины таблиц (section и category):

Прикрепленные изображения

  • section.jpg
  • category.jpg

  • 1


#5 Виталик

Виталик
    Topic Starter
  • Пользователь
  • 18 сообщений
  • Репутация: 0

Отправлено 23 Февраль 2012 - 16:17

Спасибо Вам огромное!!!


  • 0

#6 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 23 Февраль 2012 - 17:45

Пожалуйста :blink:
  • 0


#7 Виталик

Виталик
    Topic Starter
  • Пользователь
  • 18 сообщений
  • Репутация: 0

Отправлено 25 Февраль 2012 - 19:23

С одной бедой мне помогли разобраться.Спасибо огромное,всё вполне доходчиво.
Но вот задача усложнилась.Как здесь быть?К каждой категории и разделу относиться своя картинка.
Соответственно прилагаю к этому делу скрин массива.Помогите форумчане.
Спасибо вам огромное.

Прикрепленные изображения

  • Без-имени-1.jpg

  • 0

#8 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 25 Февраль 2012 - 20:30

В mini_img, я так понимаю, содержится путь к картинке раздела, а в img - путь к картинке категории. Всего-то нужно указать в запросе 2 новых поля и добавить в код вывод этих данных из массива:
<?php
mysql_connect("localhost", "root", "");
mysql_query("SET NAMES 'utf8'");
mysql_select_db("test");
$dir = 'images/'; // путь к каталогу с картинками
$query = "SELECT section.name_section, section.mini_img, category.name_category, category.img FROM category, section WHERE category.id_section = section.id";
$res = mysql_query($query);
$data = array();
while($row = mysql_fetch_assoc($res)){
    $data[] = $row;
}
//print_r($data);
$group = $data[0]['name_section'];
$imgSection = $data[0]['mini_img'];
echo "<img src='{$dir}{$imgSection}'>";
echo '<b>' .$group. '</b><hr>';
foreach($data as $item){
    if($group != $item['name_section']){
	    echo "<img src='{$dir}{$item['mini_img']}'>";
	    echo '<b>' .$item['name_section']. '</b><hr>';
	    $group = $item['name_section'];
	    $imgSection = $item['mini_img'];
    }
    echo "<img src='{$dir}{$item['img']}'>";
    echo $item['name_category']. '<br>';
}
?>

  • 0


#9 Виталик

Виталик
    Topic Starter
  • Пользователь
  • 18 сообщений
  • Репутация: 0

Отправлено 25 Февраль 2012 - 20:36

Спасибо Вам.Вот сейчас,как глянул сразу понял,как это реализовать.
Тяжело без опыта.Здрово,что ещё люди нормальные остались.
Еще раз спасибо!!
  • 0

#10 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 25 Февраль 2012 - 21:27

Пожалуйста :blink:
  • 1


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru