Извеждане на категории с цикъл

Radko

Registered
Имам нужда от малко помощ, пробвах какви ли не варианти, но се оплетох доста. Та проблема е - в базата данни имам една таблица с разни записи и в съответната таблица има една колона флаг, която има само 4 стойности - категория1 категория2 категория3 или категория 4. Така си се разделят записите, вместо да правя 4 таблици.

Та въпроса е след като селектирам всичката информация от тая таблица, как да я изкарам с цикъл по следния начин:

категория1
тук всички резултати от категория1
категория2
тук всички резултати от категория2
категория3
тук всички резултати от категория3
категория4
тук всички резултати от категория4

който помогне +1 :)
 
по принцип аз като имам нещо подобно си правя отделна таблица в която записвам само категориите по веднъж. извеждам ги с цикъл и вътре правя ново извеждане с цикъл от другата таблица с продукти или квото е там друго.
 
Нещо такова ?
Код:
$cat = mysql_query("SELECT * FROM `kategorii`"); 
while($row = mysql_fetch_array($cat)){ 
тук извеждаш името на категорията
$our = mysql_query("SELECT * FROM `rezultati` WHERE kategorii=$row[flags]"); 
while($raw=mysql_fetch_array($our)){ 
и тук извеждаш резултатите от тази категория
}
}

Само трябва да си замениш имената на таблиците :)
 
Така трябва да правя две заявки, а не искам така. Както вече казах с една заявка си взимам всичката информация от БД-то, която не е много. Има само 4 категории които за всеки запис се обозначават в колоната flag.

Просто искам вече взетата информация да я извадя с цикъл, подредена по този начин, не да правя още заявки. Преди време имаше подобна тема и бяха дали просто решение с два цикъла май беше, но нещо не я намерих и затова пуснах тази.

Благодаря все пак на писалите :)
 
Ами използвай логиката от кода, който ти дадох по горе.... Пак е с в цикъла просто ще използваш твоята заявка...
 
Успях да се оправя най - сетне, слагам кода ако найкой някога му потрябва, не че някой ще седне да си структурира БДто като мене :D

PHP:
$sql = 'SELECT * FROM test ORDER BY flag';
$d = mysql_query($sql);
$data = array();
while($get = mysql_fetch_array($d)) {
$data[] = $get;
}
echo '<br />';
echo '<br />';
echo '<br />';
$i = 0;
while(next($data) !== false) {
$flag = $data[$i]['flag'];
echo '<strong>' . $flag . '</strong><br />';
while($flag == $data[$i]['flag'] && next($data) !== false) {
echo $data[$i]['ime'] . '<br />';
$i++;
}
}

:o
 
Опитай с GROUP_CONCAT :)

Edit: Пример!
[sql]
DROP TABLE IF EXISTS wtest;

CREATE TABLE wtest(id int auto_increment primary key,
pole1 varchar(255),
pole2 varchar(255),
pole3 varchar(255),
categories enum('category1','category2','category3','category4'));
INSERT INTO wtest (pole1,pole2,pole3,categories) VALUES(
'bla1','bla1-a','bla1-b','category1'),
('bla2','bla2-a','bla2-b','category1'),
('bla3','bla3-a','bla3-b','category3');

SELECT categories,
GROUP_CONCAT('<br />',id,':',pole1,':',pole2,':',pole3,'<br />') AS BLA FROM wtest
GROUP BY categories;
[/sql]
mysql> SELECT categories,GROUP_CONCAT('<br />',id,':',pole1,':',pole2,':',pole3,
'<br />') AS BLA FROM wtest GROUP BY categories;
*************************** 1. row ***************************
categories: category1
BLA: <br />1:bla1:bla1-a:bla1-b<br />,<br />2:bla2:bla2-a:bla2-b<br />
*************************** 2. row ***************************
categories: category3
BLA: <br />3:bla3:bla3-a:bla3-b<br />

2 rows in set (0.00 sec)
 

Back
Горе