|
31 Кб |
|
| Допустим я вывел данные из базы и там идут бренды авто:
AC
Audi
Bentley
BMW
Brilliance
Scion
Seat
Shuanghuan
Вот как мне вывести эти данные так: | |
|
|
|
|
|
|
|
для: tetron
(17.03.2012 в 20:35)
| | тут двумя циклами надо. и двумя массивами - первый массив с алфавитом, второй с результатом запроса.
внешний цикл - перебор букв алфавита
вложенный цикл - сравнение на соответствие выбранной буквы первому символу очередной строки результата запроса. | |
|
|
|
|
|
|
|
для: tetron
(17.03.2012 в 20:35)
| | Лучше сначала все загрузить из таблицы в массив, а потом уже с массивом не спеша разбираться, как его лучше вывести. | |
|
|
|
|
|
|
|
для: cheops
(17.03.2012 в 20:48)
| | спасибо, попробую | |
|
|
|
|
|
|
|
для: cheops
(17.03.2012 в 20:48)
| | Не надо ничего загружать - запрос отсортированный, а далее сразу одним циклом вывод. | |
|
|
|
|
|
|
|
для: 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]
}
|
| |
|
|
|
|
|
|
|
для: tetron
(17.03.2012 в 21:07)
| | Что значит приготовить сперва массив? Это значит вы должны создать такую структуру масссива, которая бы отвечала этому структурированному выводу. Так? А если так, то значит вы в проходе единственного цикла можете обойтись и без посредника. | |
|
|
|
|
|
|
|
для: 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>";
|
принцип такой, и не надо никаких лишних массивов и циклов | |
|
|
|
|
|
|
|
для: Valick
(17.03.2012 в 21:46)
| | Да, Valick, нехорошо... | |
|
|
|
|
|
|
|
для: task
(17.03.2012 в 23:07)
| | я понял это намек, я все ловлю на лету, но непонятно шо конкретно.... ? | |
|
|
|
|
|
|
|
для: Valick
(17.03.2012 в 23:16)
| | Да все вы понимаете. Просто меня удивило - стартовая ерунда, зато последствия. | |
|
|
|
|
|
|
|
для: task
(17.03.2012 в 23:23)
| | если я говорю что не понимаю ваших намеков, то значит так оно и есть
скажите что конкретно не нравиться вам в коде
LEFT(`brand_auto_title,1`) если это, то это просто опечатка
LEFT(`brand_auto_title`,1) | |
|
|
|
|
|
|
|
для: 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 "столбики". | |
|
|
|
|
|
|
|
для: task
(17.03.2012 в 21:48)
| | Спасибо за примеры | |
|
|
|