Здрасте! Кароче, такая ситуация: 1) У фирмы много филиалов, где стоят отдельные серваки (35 штук таких). На серваках бегает продукт BackupExec, который делает резервное копироваие всяких там, супер-пупер важных файлов. 2) После каждого бэкапа BackupExec отправляет мыло со статусом, как прошла работа (удачно или нет). 3) С Понедельника по Пятницу все бэкапы (дифференциальные) начанаются с 20-и часов, за исключением некоторых, они начинают свою работу в ночь (тобишь в час или два ночи), которые так и должны быть запротоколированы. В субботу и в восскресение проходят полные резервные копии. Пример: Во вторник я прихожу утром на работу и начинаю проверят все мыла с бакапами. Те, которые начали свою работу до 23:59 протоколируются на понедельник, все остальные на вторник. Мне, как отвечающему за всю эту байду, надо каждый день сверять список мыл с названиями филиалов с отдельным бланком где рассписаны все сервера, все ли сработали или нет. Потом в конце недели отсканивать и влаживать в отдельную папку. Так как это уже подзаебало, смотреть то в листок, то в монитор и калякать галочки или крестики, решил сделать автоматизированую проверку этого дела. С помощью imap_open вытягиваю только с сегоднешного и вчерашнего дня с хидеров все необходимые данные (Maildate, Subject (тут стоит статус работы), fromaddress etc..) и тут короче я застрял..хрен знает как завести это все грамматно в бд и потом выводить это все в браузер на протяжении всей недели, с новой недели все должно заполняться заново. Например: Code: ................Понедельник................Вторник ................5.3.2012...................6.3.2012 сервер1........удачно.....................удачно сервер2........неудачно..................удачно сервер3........удачно.....................удачно и. тд................и тд................и тд Помогите как тут грамматно решить задачу.
Предлагаю след. структуру: Таблица с днями недели(статичная): id дня name дня Таблица с названиями серверов: id сервера name сервера Непосредственно таблица с текущим положением: id записи дата id дня из таблицы с днями неделями id сервера из таблицы с серверами статус операции В качестве парсера, что-то на подобие этого: PHP: <?php $Data = explode("\n", file_get_contents('1.txt')); //даты preg_match_all('#\.+(\d+\.\d+\.\d+)#', $Data['1'], $Dates); $Dates = $Dates['1']; $ServerName = array(); $ServerStatuses = array(); for($i = 3, $c = count($Data); $i < $c; $i++) { //имя сервера preg_match('#^(.*?)\.#', $Data[$i], $ServerName); $ServerName = $ServerName['1']; //статусы preg_match_all('#\.+(удачно|неудачно)#', $Data[$i], $ServerStatuses); $ServerStatuses = $ServerStatuses['1']; } Индексы соответствуют номерам дней недели - 1.
Благодарю за идейку, звучит отлично! А вот как мне в 3-ем пункте третий и четвертый подпункт сделать? создать поле с лэйблом weekday и вписать туда просто id недельного дня из таблицы таблицы "дни недели"? или это как то по другому делается?
Насчет дня недели, я считаю будет достаточно одного ассоциативного массива, где ключ день недели, а id соотв. его номер. А насчет списка, то скорее всего придется делать линкованный запрос на получения id, по названию сервера, при добавлении в осн. таблицу.
идею понял, благодарю! теперь надо сделать правельный запрос в бд, чтоб мне инфа показалась. В общем сделал так как мы тут обсудили. есть 4 таблицы: Code: lands, states, servers и data lands, states, servers = статичные таблицы data = сюда записываются все данные 1) lands .)id .)land name 2) states .)id .)land_id .)state name 3) servers .)id .)state_id .)server вот тут у меня вопрос: хочу вывести данные с таблицы servers где state является допустим "москва". Как мне тут такой селект с сабселектом сделать?
Code: SELECT lands.land_name FROM states INNER JOIN Lands ON states.land_id = lands.id WHERE states.id =2 LIMIT 0 , 1 Что-то такое выведет имя страны, по id из state'a А вот это по Москве: Code: SELECT servers.server FROM servers INNER JOIN states ON servers.state_id = states.id INNER JOIN lands ON states.land_id = lands.id WHERE lands.land_name = 'Москва' LIMIT 0 , 1 Вот неплохое описание использования JOIN.