Пытаюсь сделать счетчик посещения новости
вообщем сделал в базе параметр "Count"
После чего пытаюсь занести туда значение
вот код
$query = mysql_query("SELECT * FROM `news ` WHERE `id` = '". $news_id ."'");
$result = mysql_fetch_array($query);
$count = $result['count'] + '1';
mysql_query("UPDATE `news` SET `count` = '". $count ."' WHERE `id`= '". $news_id ."'");
Все прекрасно работает в OPERA, IE и FF но в Google Horom и Safari почемуто в базу пападает не +1, а +2
в чем может быть ошибка?
также хотелось бы уточнить нормально ли писать запрос в базу таким образом как у меня?
Я имею в виду `id` = '". $news_id ."'
может лучше было бы убрать одинарные ковычки? `id` = ". $news_id ."
Спустя 13 минут, 5 секунд (18.12.2010 - 14:24) Lenarfate написал(а):
для начала запомни, что числа это не строки, и в кавычки их не надо заключать)
Спустя 8 минут, 37 секунд (18.12.2010 - 14:32) hellmin написал(а):
И прочитай сначала про UPDATE, чтобы два запроса не делать.
mysql_query("UPDATE `news` SET `count` = `count`+1 WHERE `id`= ". $news_id );
Спустя 4 минуты, 56 секунд (18.12.2010 - 14:37) Remka написал(а):
Цитата (hellmin @ 18.12.2010 - 11:32) |
И прочитай сначала про UPDATE, чтобы два запроса не делать.mysql_query("UPDATE `news` SET `count` = `count`+1 WHERE `id`= ". $news_id ); |
Именно так только что сделал
Всеравно плюсует +2
Спустя 8 минут, 25 секунд (18.12.2010 - 14:46) hellmin написал(а):
Ну значит запрос выполняется два раза. Ищи ошибку
Спустя 3 минуты, 42 секунды (18.12.2010 - 14:49) inpost написал(а):
mysql_query("UPDATE `news` SET `count` = `count`+1 WHERE `id`= '". $news_id ."'");
А вообще проверяй число, которое достал из БД, потом обновляй! Возможно страница дважды открывается. Можешь в таблице прописать значение IP, и если то же самое ай-пи дважды делает запрос - второй раз не обновлять
А вообще проверяй число, которое достал из БД, потом обновляй! Возможно страница дважды открывается. Можешь в таблице прописать значение IP, и если то же самое ай-пи дважды делает запрос - второй раз не обновлять
Спустя 2 часа, 19 минут, 11 секунд (18.12.2010 - 17:09) glock18 написал(а):
Цитата (Lenarfate @ 18.12.2010 - 11:24) |
для начала запомни, что числа это не строки, и в кавычки их не надо заключать) |
отнюдь
Цитата (hellmin @ 18.12.2010 - 11:46) |
Ну значит запрос выполняется два раза. Ищи ошибку |
Цитата (Remka @ 18.12.2010 - 11:11) |
Все прекрасно работает в OPERA, IE и FF но в Google Horom и Safari почемуто в базу пападает не +1, а +2 в чем может быть ошибка? |
разве еще не очевидно где ошибку искать то надо?
ЗЫ: собственно, тут уже написали, что страница открывается дважды - смотри какие запросы на сервер уходят, и какие попадают на этот скрипт.
Спустя 4 минуты, 54 секунды (18.12.2010 - 17:14) twin написал(а):
Цитата |
для начала запомни, что числа это не строки, и в кавычки их не надо заключать) отнюдь |
не учи людей плохому. прав ведь он.
Спустя 1 час, 36 минут, 48 секунд (18.12.2010 - 18:50) glock18 написал(а):
Цитата (twin @ 18.12.2010 - 14:14) |
не учи людей плохому. прав ведь он. |
я не учу. надо понимать когда и что плохо. и есть как минимум один общий случай, когда числа нужно брать в кавычки - например, типы данных вроде smallint в postgres, и там в кавычки число брать крайне желательно.
PS: всех ты так учишь ведь сам. я лично говорю как правило, что категорично заявлять не стоит о таких вещах, как эта.
Спустя 17 часов, 26 минут, 32 секунды (19.12.2010 - 12:17) Remka написал(а):
Так если у меня весь скрипт состоит из одной строки у меня всеравно плюсует двойку
mysql_query("UPDATE `news` SET `count` = `count`+1");
Спустя 3 минуты, 25 секунд (19.12.2010 - 12:20) glock18 написал(а):
Цитата (glock18 @ 18.12.2010 - 14:09) |
ЗЫ: собственно, тут уже написали, что страница открывается дважды - смотри какие запросы на сервер уходят, и какие попадают на этот скрипт. |
Спустя 5 минут, 16 секунд (19.12.2010 - 12:26) kirik написал(а):
У меня похожий баг был Ух как я извелся тогда
Оказалось что проблема в браузере (хроме) и в его идиотской манере запрашивать фавиконку, даже если на странице нету тэга. А так как у меня стоял реврайт, то при обращении к localhost/favicon.ico нас естественно реврайтило на index.php, и поэтому получалось +2 вместо ожидаемого +1.
Оказалось что проблема в браузере (хроме) и в его идиотской манере запрашивать фавиконку, даже если на странице нету тэга. А так как у меня стоял реврайт, то при обращении к localhost/favicon.ico нас естественно реврайтило на index.php, и поэтому получалось +2 вместо ожидаемого +1.
Спустя 3 минуты, 44 секунды (19.12.2010 - 12:29) kirik написал(а):
Про кавычки - для БД разницы вообще никакой (ну может только десятитысячная доля секунды потраченная на конвертацию типа), чего вы спорите
Спустя 2 минуты, 7 секунд (19.12.2010 - 12:31) inpost написал(а):
Хромой хром!
Спустя 5 часов, 26 минут, 31 секунда (19.12.2010 - 17:58) Remka написал(а):
Так стоп!
У меня тоже реврайт
и дело в том что я начал думать над тем что мне сказали в это теме
цитата: "собственно, тут уже написали, что страница открывается дважды - смотри какие запросы на сервер уходят, и какие попадают на этот скрипт."
Да действительно у меня какимто образом получается то что страница в Хроме и Сафари 2 раза обнавляется и соответственно обнавляет запрос
Если уйти немного назад к получению сессии и cookie
почему то когда я заношу cookie
так вот дело в том что Opera и FF в случае если куки не найдено создают ее и продолжают
а Хром и Сафари После содания куки выполняют что то на подобии
и вот впринципе я и встрял опять
У меня тоже реврайт
и дело в том что я начал думать над тем что мне сказали в это теме
цитата: "собственно, тут уже написали, что страница открывается дважды - смотри какие запросы на сервер уходят, и какие попадают на этот скрипт."
Да действительно у меня какимто образом получается то что страница в Хроме и Сафари 2 раза обнавляется и соответственно обнавляет запрос
Если уйти немного назад к получению сессии и cookie
почему то когда я заношу cookie
if(empty($_COOKIE['USER_TYPE'])){
setcookie('USER_TYPE', SESSION_GUEST, '0', '/', $_SERVER['HTTP_HOST']);
}
else{
создаем сессию в зависимости от типа пользователя
}
так вот дело в том что Opera и FF в случае если куки не найдено создают ее и продолжают
а Хром и Сафари После содания куки выполняют что то на подобии
header('location: index.php/');
и вот впринципе я и встрял опять
Спустя 3 часа, 43 минуты, 50 секунд (19.12.2010 - 21:42) kirik написал(а):
Цитата (Remka @ 19.12.2010 - 09:58) |
Хром и Сафари После содания куки выполняют что то на подобии |
Они не могут выполнять редирект сами, пока ты их не попросишь.
Сделай так: в начало всего и вся впиши строчку:
file_put_contents('./stack.txt', print_r($_SERVER, true), FILE_APPEND);Затем открой один раз страницу, и посмотри этот stack.txt. Посмотришь какие (куда) запросы приходят и сколько раз.
Цитата (inpost @ 19.12.2010 - 04:31) |
Хромой хром! |
:P
Спустя 35 минут, 12 секунд (19.12.2010 - 22:17) Remka написал(а):
Ну вообщем Хром обновляет 2раза
У меня сделан реврайт
сначала
[argv] => Array
(
[0] => rewrite=ru/
)
потом
(
[0] => rewrite=favicon.ico
)
У меня сделан реврайт
сначала
[argv] => Array
(
[0] => rewrite=ru/
)
потом
(
[0] => rewrite=favicon.ico
)
Спустя 12 минут, 3 секунды (19.12.2010 - 22:29) kirik написал(а):
Цитата (Remka @ 19.12.2010 - 14:17) |
[0] => rewrite=favicon.ico |
Вот она эта засада! Таже самая, что и у меня была
Создай просто в корне сайта пустой файл favicon.ico - проблема решится. Ну или отслеживай его в приложении rewrite=favicon.ico.
Спустя 5 минут, 51 секунда (19.12.2010 - 22:35) Remka написал(а):
А что если еще раз почитать уроки IRBIS
и прописать в .htaccess вот такую строчку
RewriteCond %{REQUEST_URI} !^/favicon.ico
У меня все получилось теперь 1 запрос
Или лучше еще создать эту картинку?
и прописать в .htaccess вот такую строчку
RewriteCond %{REQUEST_URI} !^/favicon.ico
У меня все получилось теперь 1 запрос
Или лучше еще создать эту картинку?
Спустя 12 минут, 15 секунд (19.12.2010 - 22:47) kirik написал(а):
Цитата (Remka @ 19.12.2010 - 14:35) |
Или лучше еще создать эту картинку? |
Не столь важно. Я создал пустой файл, ибо не люблю лишних правил в htaccess.
Спустя 2 минуты, 13 секунд (19.12.2010 - 22:49) Remka написал(а):
Спасибо огромное!
Все заработало! и закрутилось=)
Все заработало! и закрутилось=)