За последние 24 часа нас посетили 16373 программиста и 1546 роботов. Сейчас ищут 813 программистов ...

неверно работает счетчик в mozilla и chrome, но верно в Oper

Тема в разделе "PHP для новичков", создана пользователем mahmudchon, 19 сен 2010.

  1. mahmudchon

    mahmudchon Активный пользователь

    С нами с:
    19 сен 2010
    Сообщения:
    6
    Симпатии:
    0
    PHP:
    1. $result = mysql_query("SELECT view FROM data WHERE id='$id'", $db);
    2. $myrow = mysql_fetch_array($result);
    3. $new_view = $myrow["view"] + 1;
    4. mysql_query("UPDATE data SET view='$new_view' WHERE id='$id'", $dbconnect);
    При обновлении страницы в Opera и IE значение view увеличивается на 1, при обновлении страницы в mozilla и chrome на 2.
    Причем если написать:
    $new_view = $myrow["view"] + 3;
    то значение увеличивается в первом случае на 3, во втором на 6. Как быть?
     
  2. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Спорим, это можно переписать в один запрос?

    PHP:
    1. <?php
    2. $q = 'UPDATE table_name SET count_field = count_field+1 WHERE id = '.$id;
     
  3. mahmudchon

    mahmudchon Активный пользователь

    С нами с:
    19 сен 2010
    Сообщения:
    6
    Симпатии:
    0
    admyx, спасибо, исправил код. Проблема та же.
     
  4. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    mahmudchon
    Толи лыжи не едут..

    А можно скрипт полностью?
    И как происходит обновление? Ручками, f5?
     
  5. mahmudchon

    mahmudchon Активный пользователь

    С нами с:
    19 сен 2010
    Сообщения:
    6
    Симпатии:
    0
  6. mahmudchon

    mahmudchon Активный пользователь

    С нами с:
    19 сен 2010
    Сообщения:
    6
    Симпатии:
    0
    Написал более точный пример кода.
    В базе данных db_name таблица table, в которой поля id и view. url: _site.ru/index.php?id=1
    И как ни странно, он работает корректно:
    PHP:
    1. <?php
    2. $db = mysql_connect ("host","user","password");
    3. mysql_select_db ("db_name", $db);
    4. $id = $_GET['id'];
    5. $result = mysql_query("SELECT view FROM table WHERE id='$id'", $db);
    6. $myrow = mysql_fetch_array($result);
    7. mysql_query("UPDATE table SET view=view+1 WHERE id='$id' LIMIT 1", $db);
    8. echo $myrow["view"];
    9. ?>
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    потому что сначала обновляй, а потом делай запрос на вывод, а не такую кашу.
     
  8. mahmudchon

    mahmudchon Активный пользователь

    С нами с:
    19 сен 2010
    Сообщения:
    6
    Симпатии:
    0
    Методом исключения проблема была решена.
    Я удалил код поиска по сайту от Гугла и все встало на свои места.
    Сайт работал в тестовом режиме на локалке, поэтому чтобы ноут не просил подключение к интернету я поудалял значения в коде поиска и образовался пустой
    [js]<script type="text/javascript" src=""></script>[/js]
    вот он и мешал.
    Как сделать, чтобы "апдейт" происходил не при каждом обращении к страничке, а только 1 раз в сутки для конкретного IP, к примеру. Так можно сделать свой счетчик посещений.