allanmiln
10.02.2013 - 19:17
Здравствуйте!
Есть MySQL-таблица с примерно такой структурой:
id, folder, img, url
Нужно вывести эту информацию в таком виде:
folder 1
- img 1, url 1;
- img 2, url 2;
- img 3, url 3;
folder 2
- img 4, url 4;
- img 5, url 5;
- img 6, url 6;
Т.е. вывести всю информацию в отсортированном по папкам (folder) виде.
У меня получилось вывести только всю информацию по id.
Как это сделать?
SlavaFr
11.02.2013 - 18:50
Цитата (Guest @ 11.02.2013 - 13:50) |
Нет, не то. |
Все то!
Просто нужно при выводе контролировать изменилась ли группа по сравнению с предыдущим результатом.
$folder = '';
......
while ( $line = myql_fetch_assoc($xxx)) {
if ($line['folder'] != $folder) {
$folder = $line['folder'] ;
echo '<h3>' . $folder . '</h3>';
}
echo $line['img'] . ' ' . $line['url'] . "<br />\n";
}
_____________
↓↓↓↓↓↓↓↓↓↓ответ может быть здесьили в mysql_error();
Valick
11.02.2013 - 19:48
а сколько всего изображений и урлов в одной папке?
как вариант, можно группировать по folder и сделать group_concat
не знаю прокатит ли такая мулька
SELECT folder, GROUP_CONCAT(CONCAT_WS(':',img, url)) iu FROM `tbl`
далее при выводе уже експлодить и отображать
_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
11.02.2013 - 20:00
ну если смотреть в стороны быстродействия - то нет смысла так напрягаться с запросами. php это сделает наверн с меньшими затратами.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Странно...
Сортирую по folder и по id, но в любом случае самая последняя запись не выводится, нужно только добавить ещё запись и тогда начинает отображаться, но последняя нет.
$folder = '';
while ( $line = mysql_fetch_assoc($result)) {
if ($line['folder'] != $folder) {
$folder = $line['folder'] ;
echo '<h3>' . $folder . '</h3>';
}
echo $line['page_id'] . ' ' . $line['page_name'] . "<br />\n";
}
Блин, даже не понятно, а если просто поставить ORDER BY folder DESC, то не выводится первая запись по id из первой папки.
Разобрался.
Это из-за условия
if ((mysql_num_rows($result)) > 0){
...
}
Но почему?
А, всё
Дело было совсем другом (мой личный косяк).