$insert = mysql_query("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')");
А подскажите теперь как сделать чтобы если такой запрос был в базе, он бы его просто не добавлял. А если нету, то добавлял. Как проверку сделать для выше указанного кода? Заранее спасибо.
Спустя 7 минут, 30 секунд (6.03.2012 - 17:42) Visman написал(а):
Спустя 19 минут, 41 секунда (6.03.2012 - 18:01) 715kg написал(а):
Что то не получается.(((
Может if условия создать какие?
Может if условия создать какие?
Спустя 3 минуты, 4 секунды (6.03.2012 - 18:04) Guest написал(а):
Делай SELECT с такими параметрами, а потом mysql_num_rows и запрос
Спустя 50 минут, 59 секунд (6.03.2012 - 18:55) 715kg написал(а):
Все так же я в провале. Перечитал все. как только не пробывал не получается((
А как еще можно сделать запрет на дублирование через php ?
Надо чтобы если такая запись уже есть, он выбивал сообщение ти по такая запись существует.
И не удалял бы ее и не перезаписывал заново. Просто выбил сообщение и оставил запись в базе как есть.
А как еще можно сделать запрет на дублирование через php ?
Надо чтобы если такая запись уже есть, он выбивал сообщение ти по такая запись существует.
И не удалял бы ее и не перезаписывал заново. Просто выбил сообщение и оставил запись в базе как есть.
Спустя 11 минут, 10 секунд (6.03.2012 - 19:07) Visman написал(а):
715kg, ну что тут не ясного?
Делай селект с условием
Если запрос вернет строку, значит она уже есть в таблице.
Делай селект с условием
"WHERE server_ip = '$ip:$port'"
Если запрос вернет строку, значит она уже есть в таблице.
Спустя 1 час, 15 минут, 18 секунд (6.03.2012 - 20:22) 715kg написал(а):
Извините, как бы вам объяснить. Я не очень разбираюсь в php
Я скорее делаю методом тыка. Вот у меня код
Если не сложно Отредактируйте код. Куда подставить. Я так понял нужно создать еще один
????
Я скорее делаю методом тыка. Вот у меня код
$ip=$_GET['ip'];
$port=$_GET['port'];
$insert = mysql_query("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись в базу
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод из базы.
Если не сложно Отредактируйте код. Куда подставить. Я так понял нужно создать еще один
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод из базы.
????
Спустя 17 минут, 10 секунд (6.03.2012 - 20:39) Visman написал(а):
Цитата (715kg @ 7.03.2012 - 01:22) |
dbquery |
Что это за функция? Самописная? Если да, то запросы mysql_query использовать не следует, следует использовать запросы dbquery.
Сначала идет запрос
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод из базы.
Потом проверка результата. Но какую функцию тут использовать не ясно, так как самописные методы используемые у тебя мне не известны.
Потом идет запись в таблицу, если проверка показала, что в таблице нет таких данных
$insert = dbquery("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись в базу
Спустя 19 минут, 35 секунд (6.03.2012 - 20:59) 715kg написал(а):
Да. Функция самописная. Взял из другого движка игровых мониторингов.
Но не чего не работает. Вот как поставил код
Обращаюсь к файлу по адресу index.php?ip=1.1.1.1&port=2222
Он вносит Ип и порт в базу и сразу выкидывает информацию на картинке.
Но стоит обновить еще раз эту картинку, в базе появляется еще один такой же запрос. Если выдавать такие баннеры и все будут ставить себе на сайт, каждый будет заходить, ему будет загружаться картинка по данному запросу, то в базе будет полный мусор.
Я все перепробовал. Он все равно дубликаты в базу сует(
Но не чего не работает. Вот как поставил код
$ip=$_GET['ip'];
$port=$_GET['port'];
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод
$insert = dbquery("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись
Обращаюсь к файлу по адресу index.php?ip=1.1.1.1&port=2222
Он вносит Ип и порт в базу и сразу выкидывает информацию на картинке.
Но стоит обновить еще раз эту картинку, в базе появляется еще один такой же запрос. Если выдавать такие баннеры и все будут ставить себе на сайт, каждый будет заходить, ему будет загружаться картинка по данному запросу, то в базе будет полный мусор.
Я все перепробовал. Он все равно дубликаты в базу сует(
Спустя 10 минут, 32 секунды (6.03.2012 - 21:09) Visman написал(а):
Зачем я жирным шрифтом выделил текст? В нем вся соль!
Какая функция у тебя обрабатывает ответы от dbquery?
Какая функция у тебя обрабатывает ответы от dbquery?
Спустя 14 минут, 53 секунды (6.03.2012 - 21:24) 715kg написал(а):
Она же вроде и обрабатывает.
Запутал я вас совсем. Я сам толком объяснить не могу(((
Работает на 2х функциях
dbquery
И так же на
mysql_query
Но он не че не проверяет. Обновил в браузере, он запишет выведет. еще раз обновил он опять Запишет выведет. раз 20 обновил, потом в базу заходишь и клаза на лоб лезу 20 записей с одним и тем же запросом.
Запутал я вас совсем. Я сам толком объяснить не могу(((
Работает на 2х функциях
dbquery
И так же на
mysql_query
Но он не че не проверяет. Обновил в браузере, он запишет выведет. еще раз обновил он опять Запишет выведет. раз 20 обновил, потом в базу заходишь и клаза на лоб лезу 20 записей с одним и тем же запросом.
Спустя 2 минуты, 7 секунд (6.03.2012 - 21:26) Visman написал(а):
Функцию dbquery покажи.
Спустя 7 минут, 57 секунд (6.03.2012 - 21:34) 715kg написал(а):
Возможно вот она
// MySQL функции
function dbquery($query) {
$result = @mysql_query($query);
if (!$result) {
echo mysql_error();
return false;
} else {
return $result;
}
}
Спустя 2 минуты, 38 секунд (6.03.2012 - 21:37) Visman написал(а):
Ясно.
Если после этого запроса
функция mysql_num_rows($q) будет > 0
значит в таблице уже есть такая запись.
Если после этого запроса
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод
функция mysql_num_rows($q) будет > 0
значит в таблице уже есть такая запись.
Спустя 30 минут, 28 секунд (6.03.2012 - 22:07) 715kg написал(а):
Поставил вот так...
Все получилось теперь не дублирует. Но появилась маленькая проблемка.
Теперь когда обращаешься к баннеру, нужно 2 раза обновить.
То есть один раз обновляешь, он записывает в базу и выдает пустой баннер. Обновляешь второй раз, он уже выдает с инфой.
Можно ли сделать чтобы было все сразу. Проверил, записал, выдал. За 1 запрос к баннеру?
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод
if (mysql_num_rows($q)>0)
{
echo "";
}
else
{
$insert = dbquery("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись
}
Все получилось теперь не дублирует. Но появилась маленькая проблемка.
Теперь когда обращаешься к баннеру, нужно 2 раза обновить.
То есть один раз обновляешь, он записывает в базу и выдает пустой баннер. Обновляешь второй раз, он уже выдает с инфой.
Можно ли сделать чтобы было все сразу. Проверил, записал, выдал. За 1 запрос к баннеру?
Спустя 9 минут, 46 секунд (6.03.2012 - 22:17) 715kg написал(а):
Решил. Так
Подставил вниз еще вывод. Теперь он сразу Проверяет, записывает, выводит. Должно быть увеличились запросы к базе. Так можно делать?? Или есть другой способ?
$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод
if (mysql_num_rows($q)>0)
{
echo "";
}
else
{
$insert = dbquery("INSERT INTO amx_servers (server_ip) VALUES('$ip:$port')"); //Запись
}
[u]$q = dbquery("SELECT * FROM ".DB_SERVERS." WHERE server_ip = '$ip:$port'"); //Вывод[/u]
Подставил вниз еще вывод. Теперь он сразу Проверяет, записывает, выводит. Должно быть увеличились запросы к базе. Так можно делать?? Или есть другой способ?
Спустя 7 часов, 24 минуты, 11 секунд (7.03.2012 - 05:41) Visman написал(а):
Цитата (715kg @ 7.03.2012 - 03:17) |
Так можно делать?? |
Можно.
Цитата (715kg @ 7.03.2012 - 03:17) |
Или есть другой способ? |
Есть, так как у тебя есть все данные до третьего запроса и он лишний.