Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

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

 

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

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

тема: сортировка по категориям
 
 автор: Алексей Рябченко   (05.05.2008 в 16:53)   письмо автору
 
 

Нужно вывести из базы таким образом
в таблице записано так

dvd-r | verbatim
dvd-r | titan
cd-r | verbatim
cd-r | titan

---dvd-r
verbatim
titan

---cd-r
verbatim
titan

   
 
 автор: cheops   (06.05.2008 в 11:43)   письмо автору
 
   для: Алексей Рябченко   (05.05.2008 в 16:53)
 

К средствам PHP можно прибегать? Если, да, то почему бы не выполнить два SQL-запроса?
SELECT * FROM tbl WHERE fld = 'dvd-r'

SELECT * FROM tbl WHERE fld = 'cd-r'

   
 
 автор: Алексей Рябченко   (06.05.2008 в 12:00)   письмо автору
 
   для: cheops   (06.05.2008 в 11:43)
 

А ели таких категорий 30-50, то как бы вы поступили.
я так понимаю нужно в перемменую занести многомерным масивом и пропустить через foreach.
но как? два дня долбу :(.

   
 
 автор: cheops   (06.05.2008 в 12:09)   письмо автору
 
   для: Алексей Рябченко   (06.05.2008 в 12:00)
 

Тогда действительно лучше отсортировать таблицу по двум столбцам и проанализировать переход от одного значения к другому в цикле
SELECT * FROM tbl ORDER BY fld1, fld2

   
 
 автор: Алексей Рябченко   (06.05.2008 в 12:20)   письмо автору
 
   для: cheops   (06.05.2008 в 12:09)
 

отсортировали,
через foreach неа не идет, ему нужен многомерный массив (пр. из вашей книги, "PHP5 на примерах"), а у нас получается асоциативный,
а через for, while, понятия не имею как

   
 
 автор: Axxil   (06.05.2008 в 12:26)   письмо автору
 
   для: Алексей Рябченко   (06.05.2008 в 12:20)
 

<?
  $query 
mysql_query('SELECT * FROM tbl ORDER BY fld1, fld2 ');
  while(
$r mysql_fetch_assoc($query)){
    
// Тут пишете логику сравнения. В ассоциативном массиве $r будет находится текущая строка выборки.
  
}
?>

   
 
 автор: Алексей Рябченко   (06.05.2008 в 12:44)   письмо автору
 
   для: Axxil   (06.05.2008 в 12:26)
 

неа неполучается, есть ли у вас возм. на примере показать?


<?
while($r mysql_fetch_assoc($result)){
        
// Тут пишете логику сравнения
            
        
foreach($r as $h => $l){

                 echo 
"$h";

                  foreach(
$l as  $ll){

                    echo 
"$ll";
                  }

            }
        }
?>

   
 
 автор: Axxil   (06.05.2008 в 12:54)   письмо автору
 
   для: Алексей Рябченко   (06.05.2008 в 12:44)
 

category | name
dvd-r | verbatim
dvd-r | titan
cd-r | verbatim
cd-r | titan

<?$query mysql_query('SELECT category,name FROM table ORDER BY category, name');
$last '';
while(
$r mysql_fetch_assoc($query)){
  if(
$last != $r['category'] ) echo '<strong>'.$r['category'].'</strong><br>';
  echo 
'&nbsp;&nbsp; - '.$r['name'].'<br>';
  
$last $r['category'];
}
?>


Примерно так

   
Rambler's Top100
вверх

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