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
Форумы портала PHP.SU :: Версия для печати :: Преобразование IP-адресов
Форумы портала PHP.SU » » Вопросы новичков » Преобразование IP-адресов

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

1. dmaw - 16 Ноября, 2011 - 15:50:38 - перейти к сообщению
Есть у меня списочек IP в двоичном формате (123456789).
Нашёл информацию про некие функции типа inet_ntoa(), но как это использовать ума не приложу.
Пробовал так:

и так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *, inet_ntoa('ip') FROM stats

не работает хоть ты тресни.

Прошу помощи.
2. EuGen - 16 Ноября, 2011 - 15:53:06 - перейти к сообщению
dmaw пишет:
в двоичном формате (123456789).

Указанный Вами формат-десятичный.
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]nction_inet-ntoa
Цитата:
mysql> SELECT INET_NTOA(167773449);
-> '10.0.5.9'

В Вашем случае, к примеру,
CODE (sql):
скопировать код в буфер обмена
  1. SELECT *, inet_ntoa(`ip`) AS string_ip FROM stats
3. dmaw - 17 Ноября, 2011 - 11:41:02 - перейти к сообщению
Не получается, всё равно возвращает числа без точек.

Получаю массив так:
4. EuGen - 17 Ноября, 2011 - 11:43:16 - перейти к сообщению
Укажите весь текст скрипта. И, самое главное, запрос.
5. dmaw - 17 Ноября, 2011 - 11:53:08 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $r = mysql_query("SELECT *, INET_NTOA('addr') AS string_addr FROM stats ORDER BY date", $db) or die ();
  3.  
  4. while($row = mysql_fetch_array($r))
  5. {
  6.     echo $row['addr'].'<br>';
  7. }
  8.  
6. EuGen - 17 Ноября, 2011 - 11:55:59 - перейти к сообщению
dmaw пишет:
INET_NTOA('addr')

Ну почему Вы пишете в обычных кавычках,? - ведь в примере, приведенном мной выше, стоят обратные. Используйте обратные. Так, как пишете Вы - это всего лишь строка 'addr' - как она есть. Пишите
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *, INET_NTOA(`addr`) AS string_addr FROM stats ORDER BY date
7. dmaw - 17 Ноября, 2011 - 12:01:37 - перейти к сообщению
- не помогло Не понял
8. EuGen - 17 Ноября, 2011 - 12:04:01 - перейти к сообщению
Значит, проблема где-то еще. Займитесь отладкой. К примеру, попробуйте выполнить запрос в консоли и посмотрите, какой результат получите.
9. dmaw - 17 Ноября, 2011 - 12:16:12 - перейти к сообщению
Если выполнить чере phpMyAdmin SQL-запрос, то появляется новая колонка INET_NTOA( `addr` ) с нормальными IP.

Может я вывожу их как-то не так или эта строка такая и должна быть?
10. EuGen - 17 Ноября, 2011 - 12:18:50 - перейти к сообщению
Ах да, точно. Я не посмотрел. Вы даете альяс string_addr а обращаетесь почему-то к addr. Выводите так
PHP:
скопировать код в буфер обмена
  1.     echo $row['string_addr'].'<br>';
11. dmaw - 17 Ноября, 2011 - 12:44:27 - перейти к сообщению
Отлично, заработало, спасибо за помощь!

 

Powered by ExBB FM 1.0 RC1