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

Форум PHP

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

 

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

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

тема: Как отсортировать данные по алфавиту в столбик определенным образом
 
 автор: tetron   (17.03.2012 в 20:35)   письмо автору
31 Кб
 
 

Допустим я вывел данные из базы и там идут бренды авто:

AC
Audi
Bentley
BMW
Brilliance
Scion
Seat
Shuanghuan

Вот как мне вывести эти данные так:

  Ответить  
 
 автор: elenaki   (17.03.2012 в 20:46)   письмо автору
 
   для: tetron   (17.03.2012 в 20:35)
 

тут двумя циклами надо. и двумя массивами - первый массив с алфавитом, второй с результатом запроса.
внешний цикл - перебор букв алфавита
вложенный цикл - сравнение на соответствие выбранной буквы первому символу очередной строки результата запроса.

  Ответить  
 
 автор: cheops   (17.03.2012 в 20:48)   письмо автору
 
   для: tetron   (17.03.2012 в 20:35)
 

Лучше сначала все загрузить из таблицы в массив, а потом уже с массивом не спеша разбираться, как его лучше вывести.

  Ответить  
 
 автор: tetron   (17.03.2012 в 20:50)   письмо автору
 
   для: cheops   (17.03.2012 в 20:48)
 

спасибо, попробую

  Ответить  
 
 автор: task   (17.03.2012 в 21:01)   письмо автору
 
   для: cheops   (17.03.2012 в 20:48)
 

Не надо ничего загружать - запрос отсортированный, а далее сразу одним циклом вывод.

  Ответить  
 
 автор: tetron   (17.03.2012 в 21:07)   письмо автору
 
   для: task   (17.03.2012 в 21:01)
 

Ну вот я вывел, из базы, а как дальше непонятно что делать


$sql = mysql_query ("SELECT * FROM `brand_auto` ORDER BY `brand_auto_title`");
while ($sql_row = mysql_fetch_array($sql))
    {
        $sql_row[brand_auto_title]
    }

  Ответить  
 
 автор: task   (17.03.2012 в 21:11)   письмо автору
 
   для: tetron   (17.03.2012 в 21:07)
 

Что значит приготовить сперва массив? Это значит вы должны создать такую структуру масссива, которая бы отвечала этому структурированному выводу. Так? А если так, то значит вы в проходе единственного цикла можете обойтись и без посредника.

  Ответить  
 
 автор: Valick   (17.03.2012 в 21:46)   письмо автору
 
   для: tetron   (17.03.2012 в 21:07)
 

$sql = mysql_query ("SELECT * FROM `brand_auto` ORDER BY `brand_auto_title`");
while ($sql_row = mysql_fetch_array($sql)) {
     echo $sql_row[brand_auto_title]."<br />";
 } 

что не так? как-то не так сортирует что-ли?ё
__
ааа, посмотрел наконец вложение

$sql = mysql_query ("SELECT LEFT(`brand_auto_title,1`) abc , * FROM `brand_auto` ORDER BY `brand_auto_title`");
$bank="";
echo "<div class='zag'>";
while ($sql_row = mysql_fetch_array($sql)) {
if($sql_row[abc]<>$bank){$bank=$sql_row[abc]; echo "</div><div class='abc'>.$sql_row[abc]."<br /><hr />";
     echo $sql_row[brand_auto_title]."<br />";
 }
echo "</div>";
 

принцип такой, и не надо никаких лишних массивов и циклов

  Ответить  
 
 автор: task   (17.03.2012 в 23:07)   письмо автору
 
   для: Valick   (17.03.2012 в 21:46)
 

Да, Valick, нехорошо...

  Ответить  
 
 автор: Valick   (17.03.2012 в 23:16)   письмо автору
 
   для: task   (17.03.2012 в 23:07)
 

я понял это намек, я все ловлю на лету, но непонятно шо конкретно.... ?

  Ответить  
 
 автор: task   (17.03.2012 в 23:23)   письмо автору
 
   для: Valick   (17.03.2012 в 23:16)
 

Да все вы понимаете. Просто меня удивило - стартовая ерунда, зато последствия.

  Ответить  
 
 автор: Valick   (17.03.2012 в 23:27)   письмо автору
 
   для: task   (17.03.2012 в 23:23)
 

если я говорю что не понимаю ваших намеков, то значит так оно и есть
скажите что конкретно не нравиться вам в коде
LEFT(`brand_auto_title,1`) если это, то это просто опечатка
LEFT(`brand_auto_title`,1)

  Ответить  
 
 автор: task   (17.03.2012 в 21:48)   письмо автору
 
   для: tetron   (17.03.2012 в 21:07)
 

Ну хорошо. Первое - вывод ваших блоков, это 99% CSS, и всего лишь 1% работы цикла. Я не буду описывать while ($sql_row = mysql_fetch_array($sql))...., нагляднее просто массивом имитирующим ваш полученный ресурс.
<?
$sql 
= array('a1','a2','a3','a4','a5','a6',
             
'b1','b2','b3','b4',
             
'c1','c2','c3','c4','c5');
$dom '<div>';
$head '';
for(
$i=0$i<count($sql); $i++) {
   if(
$head!=$sql[$i][0]) {
     if(
$head$dom .= '</ul></div><div>'
     
$head $sql[$i][0];
     
$dom .= '<span>'.$head.'</spav><ul>'
   }
   
$dom .= '<li>'.$sql[$i].'</li>';   
}             
$dom .= '</ul></div>';
echo 
$dom;

Останется описать в CSS "столбики".

  Ответить  
 
 автор: tetron   (18.03.2012 в 15:20)   письмо автору
 
   для: task   (17.03.2012 в 21:48)
 

Спасибо за примеры

  Ответить  
Rambler's Top100
вверх

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