Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как добавить элемент в массив?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Нужно добавить свойство TITLE
alexpebody
Отправлено: 14 Мая, 2013 - 10:28:23
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Добрый день уважаемые комрады, помогите плз., нужно выполнить следующее, есть хороший скрипт:

Содержание файла: logping.txt
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. 22.01.2013|8:58:31|170.44.76.168|Cвязь с сервером  прервана.
  3. 23.01.2013|0:47:14|170.41.65.167|Cвязь с сервером  прервана.
  4. 24.01.2013|8:49:22|175.30.96.210|Cвязь с сервером  прервана.
  5. 24.01.2013|8:50:24|172.41.91.210|Cвязь с сервером  прервана.
  6. 25.01.2013|8:51:25|171.42.92.200|Cвязь с сервером  прервана.
  7. 26.01.2013|8:52:27|170.40.90.200|Cвязь с сервером  прервана.
  8. и т.д.
  9.  


Исполняемый скрипт PHP:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?
  3. $log = file('p_log/logping.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
  4. $days = 10;   // За сколько дней показывать лог
  5. $startDate = mktime(0, 0, 0, date('m'), date('d'), date('Y')) - $days * 86400;
  6. $res = array();
  7. foreach($log as $row) {
  8.    $fields = explode('|', $row);
  9.    $dateArray = explode('.', $fields[0]);
  10.    $date = strtotime(implode('-', array_reverse($dateArray)));
  11.    $dateTime = strtotime(implode('-', array_reverse($dateArray)) . ' ' . $fields[1]);
  12.    if($dateTime < $startDate)
  13.        continue;
  14.    if(!isset($res[$date]))
  15.        $res[$date] = array();
  16.    if(!isset($res[$date][$fields[2]]))
  17.        $res[$date][$fields[2]] = array();
  18.    $res[$date][$fields[2]][$dateTime] = $fields[3];
  19. }
  20. $html = '<table width="100%" border="1" cellspacing="0" cellpadding="0"><tr align="center"><td>';
  21. for($i = 0; $i < $days; ++$i) {
  22.    $date = mktime(0, 0, 0, date('m'), date('d'), date('Y')) - $i * 86400;
  23.    $html .= '<b>Дата ' . date('d.m.Y', $date) . '</b><br />';
  24.    if(isset($res[$date])) {
  25.        foreach($res[$date] as $ip => $events) {
  26.            krsort($events, SORT_NUMERIC);
  27.            $lastEvent = each($events);
  28.            $html .= '<b>Ошибки связи по IP: ' . $ip . ' = ' . count($events) . '</b>, последняя была зафиксирована в: <b>';
  29.            //$html .= date('d.m.Y в H:i', $lastEvent[0]) . '</b> [' . htmlspecialchars($lastEvent[1]) . ']<br />';
  30.            $html .= date('H:i:s', $lastEvent[0]) . '</b> [' . htmlspecialchars($lastEvent[1]) . ']<br />';
  31.        }
  32.        $html .= '<br />';
  33.    } else {
  34.        $html .= 'Ошибок связи до серверов на эту дату не обнаружено!<br /><br />';
  35.    }
  36. }
  37. echo($html)."</td></tr></table>";
  38. ?>
  39.  


Скрипт берет файл: logping.txt и из него создавая массив данных разбивает их и пр. -> по коду, вывод следующий: Дата 14.05.2013 Ошибки связи по IP: 170.40.60.160 = 1, последняя была зафиксирована в: 13:33:08 [Cвязь с сервером прервана.]

ВОПРОС ВОТ В ЧЕМ, КАК ДОБАВИТЬ СВОЙСТВА К ВЫВОДИМЫМ IP??? Т.е. мне нужно чтобы выводился не только IP но и повесить на него (на каждый) определение, чтобы по наведению на каждый IP показывал, свой title

Пожалуйста ПОДСКАЖИТЕ, как добавить эти свойства к каждому IP в массив (например на 170.44.76.168 title="Дом", 170.41.65.167 title="Работа" и пр.)??? БУДУ ОЧЕНЬ БЛАГОДАРЕН и НЕ ТОЛЬКО Я!!! Улыбка
 
 Top
Crate
Отправлено: 14 Мая, 2013 - 11:29:51
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




есть строка: $html .= '<b>Ошибки связи по IP: ' . $ip . ' = ' . count($events) . '</b>, последняя была зафиксирована в: <b>';

Вся магия в ней.
 
 Top
alexpebody
Отправлено: 14 Мая, 2013 - 11:32:08
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Crate пишет:
Вся магия в ней.


Это понятно, я могу прикрутить в нее саму тегу TITLE но как прикрутить к каждому IP свой титл??? Колдовал дня 2, кроме как переписывать код или внедрять подмену в таблицу ничего не придумал... Но это все как то по нубски (( нужно именно присвоение каждой ячейке совпавшей с IP в массиве присвоить нужный титл, ВОТ КАК ЭТО СДЕЛАТЬ??? Печаль... Недовольство, огорчение
 
 Top
DlTA
Отправлено: 14 Мая, 2013 - 12:40:49
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




сложность в создании верстки или в определении описания?
 
 Top
alexpebody
Отправлено: 14 Мая, 2013 - 12:43:12
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




DlTA пишет:
сложность в создании верстки или в определении описания?


С версткой нет проблем, нужно кодом прикрутить чтобы просто вывод был тот что задании, т.е. при наведении на IP в таблице, высвечивались присвоенные TITLE, очень надо. Не понял Я никак не могу вкурить в каком месте в массив сделать сопоставление TITLE к IP, чтобы в масиве для каждого IP (полученного из файла logping.txt) был присвоен ручками текстовый титл.

(Отредактировано автором: 14 Мая, 2013 - 12:44:47)

 
 Top
DlTA
Отправлено: 14 Мая, 2013 - 12:44:16
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




а откуда должен браться текст для title?
 
 Top
alexpebody
Отправлено: 14 Мая, 2013 - 12:46:24
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




DlTA пишет:
а откуда должен браться текст для title?


Текст может быть статический (в сомом исполняющем файле php), например для IP 192.168.0.1 присвоить титл = Дом, для IP 192.168.0.2 присвоить титл = Работа, и т.д. и тогда при наведении в таблице они бюы отображались именно для своих ИПов.

(Отредактировано автором: 14 Мая, 2013 - 12:46:59)

 
 Top
DlTA
Отправлено: 14 Мая, 2013 - 12:49:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ну вот в 28й строке у вас происходит "вывод"
туда добавляете/заменяете
<a title='$text'>$ip</a>
с предпроверкой и установкой $text
(Добавление)
или по на ведению на что там надо чтоб выскакивала подсказка
 
 Top
alexpebody
Отправлено: 14 Мая, 2013 - 12:51:54
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




DlTA пишет:
туда добавляете/заменяете


Даже ЭТО я уже вкурил, НО КАК ИМЕННО подставить в массив скажем для IP 192.168.0.1 титл = Дом? А для 192.168.0.2 титл Работа? Недовольство, огорчение Как без поиска и замены это сделать? Мне нужно сделать таблицу соответствия и из нее чтоб скрипт делал сопоставления, как это сделать можете пример сделать на основе указанного скрипта? Заранее спасибо! Закатив глазки

ПыСы. Если сделать просто титл в переменную $text то эта титла будет для каждого IP в выводе, а мне нужно именно для каждого IP свою титлу...

(Отредактировано автором: 14 Мая, 2013 - 13:00:18)

 
 Top
imya
Отправлено: 14 Мая, 2013 - 12:59:18
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




alexpebody пишет:
DlTA пишет:
туда добавляете/заменяете


Даже ЭТО я уже вкурил, НО КАК ИМЕННО подставить в массив скажем для IP 192.168.0.1 титл = Дом? А для 192.168.0.2 титл Работа? Недовольство, огорчение Как без поиска и замены это сделать? Мне нужно сделать таблицу соответствия и из нее чтоб скрипт делал сопоставления, как это сделать можете пример сделать на основе указанного скрипта? Заранее спасибо! Закатив глазки

Вы ведь сами сказали, что текст может быть статическим, так пишите ручками его.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
LIME
Отправлено: 14 Мая, 2013 - 12:59:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. $titles=['192.168.0.1'=> 'Дом', '192.168.0.2'=> 'Работа'];

CODE (htmlphp):
скопировать код в буфер обмена
  1. <a title='$titles[$ip]'>$ip</a>
 
 Top
alexpebody
Отправлено: 14 Мая, 2013 - 13:01:15
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




LIME Вот это уже отличный пример, буду пробовать, СПАСИБО ОГРОМНОЕ!!!! Ха-ха

Вот только пишет мне: Parse error: syntax error, unexpected '[' in /home/index.php on line 78

78:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $titles=['170.40.60.160'=>'Дом'];
  3.  

(Отредактировано автором: 14 Мая, 2013 - 13:05:16)

 
 Top
Мелкий Супермодератор
Отправлено: 14 Мая, 2013 - 13:12:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PHP:
скопировать код в буфер обмена
  1. $titles=array('192.168.0.1'=> 'Дом', '192.168.0.2'=> 'Работа');

Сокращённый синтаксис массива, который использовал LIME, доступен только с PHP5.4


-----
PostgreSQL DBA
 
 Top
alexpebody
Отправлено: 14 Мая, 2013 - 16:43:56
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Мелкий пишет:
Сокращённый синтаксис массива


Это я понял, но когда писал также array(); что то тоже невкурил хост ) че там стоит версия уже непомню! СПАСИБО ВСЕМ БОЛЬШОЕ!!!!!!!
 
 Top
alexpebody
Отправлено: 15 Мая, 2013 - 04:19:39
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Можно еще вопросик последний ) в скрипте сортируется время ПОСЛЕДНЕЙ ошибки и выводится сейчас так: ла ла ла... ошибки связи по IP: 192.168.0.1 = 1, последняя была зафиксирована в: 13:33:08 [Cвязь с сервером прервана.], а как добавить чтобы было так:

ла ла ла... ошибки связи по IP: 192.168.0.1 = 1, ПЕРВАЯ БЫЛА ЗАФИКСИРОВАНА В 12:00:00, последняя была зафиксирована в: 13:33:08 [Cвязь с сервером прервана.]

Насколько я понимаю, в скрипте идет обработка: $lastEvent = each($events);, а вот как получить ПЕРВОЕ СОБЫТИЕ Улыбка чето я не совсем догоняю.

Поясню, вывод таков:
14.05.2013|16:47:36|192.168.0.1|Cвязь с сервером прервана. - первое время в таблице по данному IP
14.05.2013|19:01:56|192.168.0.1|Cвязь с сервером прервана. - последнее время в таблице по данному IP

У меня в коде выводится последнее время ($lastEvent[0]), а как вывести еще и ПЕРВОЕ ВРЕМЯ 16:47:36???

Добрые люди, подскажите плз., очень нужно чтобы скрипт выполнял все что требуется, ЗАРАНЕЕ БУДУ БЛАГОДАРЕН!!! ::wink24.gi

(Отредактировано автором: 15 Мая, 2013 - 05:19:42)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB