[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: +1 к значению в базе
Remka
Всем доброго дня!

Пытаюсь сделать счетчик посещения новости
вообщем сделал в базе параметр "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, и если то же самое ай-пи дважды делает запрос - второй раз не обновлять

Спустя 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 написал(а):
У меня похожий баг был smile.gif Ух как я извелся тогда smile.gif
Оказалось что проблема в браузере (хроме) и в его идиотской манере запрашивать фавиконку, даже если на странице нету тэга. А так как у меня стоял реврайт, то при обращении к localhost/favicon.ico нас естественно реврайтило на index.php, и поэтому получалось +2 вместо ожидаемого +1.

Спустя 3 минуты, 44 секунды (19.12.2010 - 12:29) kirik написал(а):
Про кавычки - для БД разницы вообще никакой (ну может только десятитысячная доля секунды потраченная на конвертацию типа), чего вы спорите smile.gif

Спустя 2 минуты, 7 секунд (19.12.2010 - 12:31) inpost написал(а):
Хромой хром!

Спустя 5 часов, 26 минут, 31 секунда (19.12.2010 - 17:58) Remka написал(а):
Так стоп!
У меня тоже реврайт

и дело в том что я начал думать над тем что мне сказали в это теме

цитата: "собственно, тут уже написали, что страница открывается дважды - смотри какие запросы на сервер уходят, и какие попадают на этот скрипт."

Да действительно у меня какимто образом получается то что страница в Хроме и Сафари 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
)

Спустя 12 минут, 3 секунды (19.12.2010 - 22:29) kirik написал(а):
Цитата (Remka @ 19.12.2010 - 14:17)
[0] => rewrite=favicon.ico

Вот она эта засада! Таже самая, что и у меня была smile.gif
Создай просто в корне сайта пустой файл favicon.ico - проблема решится. Ну или отслеживай его в приложении rewrite=favicon.ico.

Спустя 5 минут, 51 секунда (19.12.2010 - 22:35) Remka написал(а):
А что если еще раз почитать уроки IRBIS

и прописать в .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 написал(а):
Спасибо огромное!
Все заработало! и закрутилось=)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.