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 :: Версия для печати :: php - MYSQL - IP адреса
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » php - MYSQL - IP адреса

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

1. tramX - 20 Мая, 2010 - 01:02:04 - перейти к сообщению
Здравствуйте. Есть база mysql, в ней записи логин пароль и ip адрес.
user1 pass1 192.168.1.2
user2 pass2 192.168.1.3

как вытянуть из базы запись с ip 192.168.1.3 ?
2. AdMeen - 20 Мая, 2010 - 07:30:51 - перейти к сообщению
tramX пишет:
Здравствуйте. Есть база mysql, в ней записи логин пароль и ip адрес.
user1 pass1 192.168.1.2
user2 pass2 192.168.1.3

как вытянуть из базы запись с ip 192.168.1.3 ?


SELECT * FROM db_name WHERE ip='192.168.1.3'
3. valenok - 20 Мая, 2010 - 13:18:12 - перейти к сообщению
LIMIT 1
4. tramX - 20 Мая, 2010 - 16:05:26 - перейти к сообщению
какой тип должен быть ip? У меня varchar.

$result3 = mysql_query("SELECT * FROM users WHERE ip='192.168.1.3'");
$myrow3 = mysql_fetch_array($result3);
echo "$myrow3[id]";

Если ввожу 192.168.1.2 все равно вытягивается вторая запись из таблице.
5. Champion - 22 Мая, 2010 - 14:46:08 - перейти к сообщению
tramX пишет:
$result3 = mysql_query("SELECT * FROM users WHERE ip='192.168.1.3'");
$myrow3 = mysql_fetch_array($result3);
echo "$myrow3[id]";
Если ввожу 192.168.1.2 все равно вытягивается вторая запись из таблице.
Такого быть не может. Может быть, страница закешировалась после первого раза.
tramX пишет:
какой тип должен быть ip?
Если планируются выборки по диапозонам, сортировки, то надо преобразовать в int. А чтобы отображать удобно читаемую строку, надо будет либо иметь столбец со строковым представлением, либо преобразовывать при выводе.
6. tramX - 23 Мая, 2010 - 01:15:32 - перейти к сообщению
Да страница закешировалась, сейчас все работает. Подскажите такую вещь.
созданы поля
user1 pass1 192.168.1.2
user2 pass2 192.168.1.3
теперь нужно создать поле admins в котором будут перечислены администраторы которым разрешен просмотр той или иной записи. Пример:
login pass ip admins
user1 pass1 192.168.1.2 admin, vasya, petya
user2 pass2 192.168.1.3 admin, ivan
Как в одно поле заносить несколько значений и потом извлекать их?
7. Champion - 23 Мая, 2010 - 08:34:18 - перейти к сообщению
Лучше сделать еще одну табличку admins, у которой внешним ключом будет PK этой первой таблицы, а вторым полем - админ. Либо если админы берутся из списка пользователей, то вторым полем - внешний ключ на таблицу пользователей.
8. JustUserR - 23 Мая, 2010 - 13:47:51 - перейти к сообщению
tramX пишет:
Какой тип должен быть ip? У меня varchar.
Вероятно дело обстоит в следующем - ваше varchar поле содержит недостаточно символов для хранения IP-адреса а их в общем может быть 15 штук - поэтому IP-адреса начиная с некоторой длины обрезаются и при поиске происходит сравнение без учета последних нескольких символов Попробуйте использовать поле типа TEXT
Похожая проблема была не так давно в соседней тем - только там образалась дробная часть числа по причине несовпадения типа
9. tramX - 23 Мая, 2010 - 14:24:51 - перейти к сообщению
varchar выставил 255 символов, при вызове всех ip из базы они корректно отображаются.
Подскажите можно сделать чтобы php скрипт периодически проверял дату в системе и в случае наступления нового месяца добавлял в базу значения? Если да какие функции применять?
10. JustUserR - 23 Мая, 2010 - 17:35:58 - перейти к сообщению
tramX пишет:
Varchar выставил 255 символов, при вызове всех ip из базы они корректно отображаются.
Подскажите можно сделать чтобы php скрипт периодически проверял дату в системе и в случае наступления нового месяца добавлял в базу значения? Если да какие функции применять?
Можете установить запуск PHP-скрипта в консольном планировщике CRON(*nix)/AT(windows) на ночб первого числа каждого месяца - в таком случае по наступлению соответствующем времени PHP-скрипт будет вызван и выполнение - если вас устраивает консольное CLI-выполнение то можете использовать команду /usr/bin/php -f /path/to/script.php или же просто /path/to/script.php если установлена shebang-конструкция - а если вам нужен web-вызов как CGI то можете использовать запуск с пощью консольного браузера типа /usr/bin/links http://site[dot]ru/path/to/script.php
Если ваш web-сайт достаточно часто посещается и/или обновление БД имеет смысл только при запросах от конкретных пользователей - то можете сделать список задания в текстовом файле рядом с PHP-скрипом и при любом его запросе проверять список заданий и выполнять их в фоновом режиме

 

Powered by ExBB FM 1.0 RC1