Добрый вечер, уважаемые форумчане!
Хочу спросить у Вас совета. Не получается решить одну проблему, на первый взгляд не очень сложную.
Входные данные:
На сервере лежат файлы с названием типа dd.mm.yyyy.zip.
На странице пользователя есть календарь с раскладкой на год.
Хочу сделать так, чтобы при наличии на конкретную дату архива на сервере - в календаре такая дата подсвечивалась ссылкой на данный файл.
На текущий момент застопорился на попытке сравнения даты в календаре с датой в имени архива.
Если в коде,
так получаю содержимое сервера и передаю в json.
$conn_id = ftp_connect($ftp_server);
// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// получить содержимое текущей директории
$contents = ftp_nlist($conn_id, ".");
$json = json_encode($contents);
Вот так я получаю наименования файлов в javascript и привожу их к стандартному значению.
var files = <?php echo $json;?>;
//document.write(files);
for(var fileDate in files){
s = new Date(files[fileDate].slice(6,10), files[fileDate].slice(3,5), files[fileDate].slice(0,2));
document.write(s + '<br>');
}
А вот скрипт собственно календаря.
var month_name = [ //массив названий месяцев
'Январь',
'Февраль',
'Март',
'Апрель',
'Май',
'Июнь',
'Июль',
'Август',
'Сентябрь',
'Октябрь',
'Ноябрь',
'Декабрь'
];
function calendar(year) {
document.write('<table class="calend"><caption>'); //Начинаем формировать таблицу
document.write(+ year + ' год');
document.write('</caption>');
document.write('<tr>');
for (var z = 0; z<6; z++) {
var days = (Date.UTC(year, z + 1) - Date.UTC(year, z)) / (24 * 60 * 60 * 1000);
var start_day = new Date(year, z);
var index = (start_day.getDay() + 6) % 7;
var rows = Math.ceil((index + days) / 7);
document.write('<td>');
document.write('<div><table><caption>'+ month_name[z] + ' ' + year + '</caption>');
for (var i = 0, k = 1 - index; i < rows; i++) {
document.write ('<tr>');
for (var j = 0; j < 7; j++, k++) {
if (k > 0 && k <= days) {
var date = new Date(year , z , k );
//document.write (date + '<BR>' );
if (j > 4) { //это - выходные!
document.write ('<td class="holiday">' + k + '</td>');
} else { //это - обычные дни:(
document.write ('<td>' + k + '</td>');
}
} else { //дни - пустышки
document.write ('<td class="empty"></td>');
}
}
document.write ('</tr>');
}
document.write('</table></div></td>');
}
document.write('</tr>');
document.write('<tr>');
for (var z = 6; z<12; z++) {
var days = (Date.UTC(year, z + 1) - Date.UTC(year, z)) / (24 * 60 * 60 * 1000);
var start_day = new Date(year, z);
var index = (start_day.getDay() + 6) % 7;
var rows = Math.ceil((index + days) / 7);
document.write('<td>');
document.write('<div><table><caption>'+ month_name[z] + ' ' + year + '</caption>');
for (var i = 0, k = 1 - index; i < rows; i++) {
document.write ('<tr>');
for (var j = 0; j < 7; j++, k++) {
if (k > 0 && k <= days) {
if (j > 4) { //это - выходные!
document.write ('<td class="holiday">' + k + '</td>');
} else { //это - обычные дни:(
document.write ('<td>' + k + '</td>');
}
} else { //дни - пустышки
document.write ('<td class="empty"></td>');
}
}
document.write ('</tr>');
}
document.write('</table></div></td>');
}
document.write('</tr>');
document.write('</table>');
}
calendar(2014);
В итоге календарь отрисовывается нормально, как надо.
Даты из названий файлов раскладываются правильно - выводит все верно.
Дата календаря склеивается также правильно - тестовый вывод проходит верно.
А вот добавить условие сравнения что-то не получается. Почему-то у меня он видит только первый элемент массива с датами файлов.