Является ли 'author' идентификатором? или строка? В любом случае, индекс поможет вам.
Запрос не медленный, это цикл for, вызывающий проблему. Это не завершено; отсутствует условие цикла $ i и приращение. Или это опечатка?
Почему бы вам просто не заказать запрос по дате?
SELECT * FROM events WHERE author=? ORDER BY unixdate ASC
и иметь переменную для хранения текущей текущей даты, чтобы иметь любую логику, необходимую для группировки событий по дате в вашей таблице ex. присвоение всем строкам событий с одинаковой датой одного цвета.
Предполагая, что дата является меткой времени Unix, которая не учитывает время события, вы можете сделать это:
$currentDate = 0;
while(mysql_fetch_array($result)){
if($currentDate == $row['unixdate']){
//code to present an event that is on the same day as the previous event
}else{
//code to present an even on a date that is past the previous event
//you are sorting events by date in the query
}
//update currentDate for next iteration
$currentDate = $row['unixdate'];
}
если unixdate
включает время события, то вам нужно добавить логику, чтобы просто извлечь временную карту даты unix, исключая часы и минуты.
Надеюсь, это поможет