Доброго времени суток. Решил сделать RSS на сайте, но что бы там были не только новости, но и новые статьи и ворклоги (http://modding.uz). Имею таблицы: ----- Новости - news ----- id - айди zag - заголовок txt - текст новости activ - если 1, то новость активна kogda - дата последнего изменения ----- Статьи - stat ----- id - айди zag - заголовок txt - текст статьи activ - если 1, то статья активна kogda - дата последнего изменения ------ Ворклоги - worklogs ----- id - айди namework - заголовок txt - текст ворклога activ - если 1, то ворклог активен kogda - дата последнего изменения Задумка: получатели RSS видят когда добавилась/изменилась статья/новость/ворклог. Пути решения: загнать в массив из каждой таблицы заголовок, ссылку, первые_несколько_строк_текста и дату, соединить массивы и отсортировать по дате от новым к старым, затем в цикле вывести на страничку rss.php. Проблемы: Как отсортировать массив из массивов по полю "дата"? нашёл функцию array_multisort. Как это сделать и тем более, как сделать в цикле - не понял. Мелкая проблема: в переменной первые_несколько_строк_текста предполагается хранить первые (к примеру) 200 символов из поля txt, но не так, что б обрывалось на 201 символе, а что б доходило до ближайшего пробела и потом обрывалось. Предположительно можно сделать так: Код (Text): $txt=substr($txt,0,strrpos($txt, " ",200)); это нормально, или можно сделать лучше/быстрее/удобнее/правильнее?
Я не совсем понимаю, что мешает сделать как-то так: [sql] SELECT `zag`, `txt` FROM `news` UNION SELECT `zag`, `txt` FROM `stat` UNION SELECT `zag`, `txt` FROM `worklogs` ORDER BY `kogda` DESC [/sql] ИМХО лучше искать первые . / ... / ! / ? И потом уже, если их не будет(что маловероятно) отрезать по пробелу.... Хотя лучше всего, сделать bb код, что бы автор статьи сам мог указать какой кусок выводить в RSS-ке
Сортировка многомерного массива по ключу date PHP: <?php usort($array, "cmp"); function cmp($a, $b) { return strcmp($a['date'], $b['date']); }