Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> счётчик входов в новость 
V
    Опции темы
fakeman
Дата 22.5.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Натолкнулся у себя на проблему с счётчиком а именно при просмотре новостей.. 
Код

if (mysql_num_rows($result) > 0)
{
$update = mysql_query("UPDATE news SET view=view + 1 WHERE id='$id'",$db);
}


Вроде как работает,но если include допустим ivents.php то счётчик записывает в базу не 1 а 2 и как я выяснил проблема в запросе находяшимся в ivents.php
Код

$result1 = mysql_query("SELECT id,ivent,title,date,flag FROM news WHERE ivent=1 ORDER BY id DESC LIMIT 5",$db);


И пооду это всё из-за того что всё обращения к 1 таблице news..так ли это ? Можно решить эту проблему не добовляя новую таблицу. Помогите.

П.С. в таблице news есть как и новости так и события(ivents) если событие равно 1 то высвечивать его как событие и новость а если 0 то тока как новость. 
PM MAIL   Вверх
SneG0K
Дата 22.5.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Интересно, а как запрос селекта может влиять на статистические данные в апдейте? Расскажи немного по подробней
PM WWW Skype   Вверх
skyboy
Дата 22.5.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(fakeman @  22.5.2009,  12:21 Найти цитируемый пост)
то счётчик записывает в базу не 1 а 2

видимо у тебя код, приведенный в первом блоке, выполняется дважды.
возможно, функция, в которой этот блок содержится, выполняется дважды.
возможно, файл с этим блоком подключается не через include_once, а через include. В двух разных местах. И выполняется дважды.
Select запрос точно не влияет на содержимое таблиц.
PM MAIL   Вверх
fakeman
Дата 22.5.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



И я вот не понимаю почему так :( 

Цитата(SneG0K @  22.5.2009,  13:37 Найти цитируемый пост)
Расскажи немного по подробней 

что именно ? smile ?

Мне надо простой счётчик. каторый при каждом нажатии на новость добовлялся в базу и выводился на сайте( По идеи это есть) то если добавить меню с событиями через include то при нажатии на новость в базу добовляет не 1(как надо) а 2. Такое ощущение что  2 раза вызывается этот участок кода
Код

$update = mysql_query("UPDATE news SET view=view + 1 WHERE id='$id'",$db);


а вот почему ? фиг его знает :(
PM MAIL   Вверх
Shark
Дата 22.5.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Цитата

добовлялся в базу и выводился

Добавлялся или Обновлялся столбец view?


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
bazzjr
Дата 22.5.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 27.12.2007
Где: Россия, Пермь

Репутация: 4
Всего: 6



Согласен с skyboy.

Смотри include, или косяк в функции.

По тому коду что ты привел выше, ничего апсолютно не понятно, "даешь больше кода?" или плавай в бездне догадок...
PM MAIL ICQ   Вверх
fakeman
Дата 22.5.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Shark, Обновляется.. 

Цитата(bazzjr @  22.5.2009,  16:14 Найти цитируемый пост)
"даешь больше кода?"


Есть папка news в ней файлы index.php->page.php(через include в indexe)  и  news_view.php(Через <a href.. а точнее
Код

<div class='newsheading'><a href='news_view.php?id=$myrow['id']'>$myrow['title']</a> (<b>$myrow['view']</b>)</div>
 )

ivents лежт долеко от news..
Код ivents.php
Код

<div class="listing3s_header">
    <div style="float: left;">События</div>
</div>
    <div class="listing3">
        <div id="rightbody">
<?php $result1 = mysql_query("SELECT id,ivent,title,date,flag FROM news WHERE ivent=1 ORDER BY id DESC LIMIT 5",$db);
                $myrow1 = mysql_fetch_array($result1);

                    do
                    {
                        if($myrow1['ivent']==true){
                                                    printf ("
                        <div style='float: left;'>
                            <img src='%s' width='12' height='12'></img>
                            <a href='/phpsite/news/news_view.php?id=%s'>%s</a>
                        </div>
                        <div style='float: right; padding-right: 10px;'>%s</div><br>
                        ", $myrow1["flag"], $myrow1["id"], $myrow1["title"], $myrow1["date"]);
                        }
                    }
                    while ($myrow1 = mysql_fetch_array($result1))

                
?>
        </div>
    </div>



Код news_view.php
Код

<?@session_start();
include_once "/home/localhost/www/phpsite/blocks/connect.php";
if (isset($_GET["id"])) {$id = $_GET["id"]; }
$result = mysql_query ("SELECT * FROM news WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);
if(!$result)
{
    echo "<p>Запрос о выводе данных из базы не прошёл. Напишите об этом администратору [email protected] <br> <b>Код ошибки: </b></p>";
    exit(mysql_error());
}

if (mysql_num_rows($result) > 0)
{
$update = mysql_query("UPDATE news SET view=view + 1 WHERE id='$id'",$db);

}
else
{
    echo "<p>Информация о запросе не может быть извлечена в таблице нет записи.</p>";
    exit();
}


                echo "<div class='newsheading'>$myrow[title]</div>
                        <div class='newsbody'>$myrow[text]
                        <div style='height:6px;'></div>
                        <div class='view'>Просмотров: $myrow[view]</div></div>";
            ?>

<?php include "/home/localhost/www/phpsite/blocks/top_header.php"; ?>
<? include "/home/localhost/www/phpsite/blocks/header.php"; ?>
<? include "/home/localhost/www/phpsite/blocks/nav.php"; ?>
<? include ("/home/localhost/www/phpsite/blocks/ivents.php"); ?>
<? include_once "/home/localhost/www/phpsite/blocks/footer.php"; ?>




PM MAIL   Вверх
Shark
Дата 22.5.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



<?php include "/home/localhost/www/phpsite/blocks/top_header.php"; ?>
<? include "/home/localhost/www/phpsite/blocks/header.php"; ?>

тут лежат HEADER () ???
если да... то они должны быть ДО вывода какой-либо инфы в браузер...
мне кажется что при открытии news_view.php она у тебя открывается и обновляется сразу


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 22.5.2009, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Shark @  22.5.2009,  19:50 Найти цитируемый пост)
тут лежат HEADER () ???

Не там лежит просто лого.
Код

    <div id="header">
    </div>


Это сообщение отредактировал(а) fakeman - 22.5.2009, 21:47
PM MAIL   Вверх
Shark
Дата 22.5.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



тут косяк:
Код


                    while ($myrow1 = mysql_fetch_array($result1))



Текст из книги:
Оператор do...while
Этот оператор называется оператором цикла с постусловием и имеет следующий синтаксис
Код

do
{
оператор;
} while(уловие);

Такой цикл всегда будет выполнен хотя бы один раз. После выполнения тела цикла вычисляется выражение-условие, и если оно истино, вновь выполняется тело цикла.
В примере ноль всегда будет добавлен в список, независимо от значения условия (++$i <= $var).
Код

$var=5;
$i=0;
do
{
echo($i); echo ('<br>');
}
while(++$i <= $var)

Будут выведены числа от 0 до 5


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 22.5.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Shark @  22.5.2009,  22:05 Найти цитируемый пост)
Такой цикл всегда будет выполнен хотя бы один раз

Да выводиться 6(как я понял от 0 - 5) раз но один и тот-же т.е. последняя новость выводится 6 раз. Как тогда не используя условие 
Цитата(Shark @  22.5.2009,  22:05 Найти цитируемый пост)
 while ($myrow1 = mysql_fetch_array($result1))

сделать что бы выводилось 5 последних новостей ?

Код

$var=4;
$i=0;

$res = mysql_query("SELECT id,ivent,title,date,flag FROM news WHERE ivent=1 ORDER BY id DESC",$db);
        $myrow1 = mysql_fetch_array($res);

do
{
if($myrow1['ivent']==true){
echo "
<div style='float: left;'>
    <img src='".$myrow1['flag']."' width='12' height='12'></img>
    <a href='/phpsite/news/news_view.php?id=".$myrow1['id']."'>".$myrow1['title']."</a>
</div>
<div style='float: right; padding-right: 10px;'>".$myrow1['date']."</div><br>
";
 }
}
while(++$i <= $var)

PM MAIL   Вверх
Shark
Дата 22.5.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Код

$res = mysql_query("SELECT id,ivent,title,date,flag FROM news WHERE ivent=1 ORDER BY id DESC LIMIT 5",$db);
        while($myrow1 = mysql_fetch_array($res))
                 {
                           echo "<div style='float: left;'>
                           <img src='".$myrow1['flag']."' width='12' height='12'></img>
                           <a href='/phpsite/news/news_view.php?id=".$myrow1['id']."'>".$myrow1['title']."</a>
                           </div>
                           <div style='float: right; padding-right: 10px;'>".$myrow1['date']."</div><br>";  
                 }

так по пробуй


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 22.5.2009, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Да так всё в ivents работает исправно, а вот в новостях к просмотрам +2 :(  smile 
PM MAIL   Вверх
Shark
Дата 22.5.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



а попробуй сделать так:
Новости:
Код

$result = mysql_query ("SELECT * FROM news WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);
if(!$result)
{
    echo "<p>Запрос о выводе данных из базы не прошёл. Напишите об этом администратору [email protected] <br> <b>Код ошибки: </b></p>";
    exit(mysql_error());
}

if (mysql_num_rows($result) > 0)
{
$count=$myrow['view']+1;
$update = mysql_query("UPDATE news SET view='$count' WHERE id='$id'",$db);

}


тогда получится, что он из новости где id=$id.... берет кол-во просмотров и к этому количеству прибавляет еще единицу....

может это из-за такой записи все происходило 
Цитата

view=view + 1


мне просто удобнее так писать:
Код

$count=$myrow['view']+1;

тут хотя бы понятно что к чему

Это сообщение отредактировал(а) Shark - 22.5.2009, 23:21


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 22.5.2009, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Неа не помогает ... Блин вот вечно какие то касяки. :(
PM MAIL   Вверх
bazzjr
Дата 23.5.2009, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 27.12.2007
Где: Россия, Пермь

Репутация: 4
Всего: 6



Смотри ошибку в других (include)файлах, в том коде что ты привел все норм.

Как вариант можно попробовать методом усечения вычислить узкое место(где ошибка). Как вариант предлагаю начать с того что, поместить весь остальной код в условие if (isset($_GET["id"])) {$id = $_GET["id"];  и тут остальной код}, т.е.:

Код

<?
session_start();
include_once "/home/localhost/www/phpsite/blocks/connect.php";
if (isset($_GET["id"]) && $_GET["id"] != "") {
$id = $_GET["id"]; 
$result = mysql_query ("SELECT * FROM `news` WHERE `id`='".$id."' LIMIT 1", $db) or die(mysql_error());
$myrow = mysql_num_rows($result);
if(!$myrow)
{
    echo "<p>Информация о запросе не может быть извлечена в таблице нет записи.</p>";
}else{
$update = mysql_query("UPDATE `news` SET `view`=view + 1 WHERE `id`='".$id."' ", $db) or die(mysql_error());
$result_view = mysql_query ("SELECT * FROM `news` WHERE `id`='".$id."' LIMIT 1", $db) or die(mysql_error());
$view = mysql_fetch_array($result_view);
}
                echo "<div class='newsheading'>$view['title']</div>
                        <div class='newsbody'>$view['text']
                        <div style='height:6px;'></div>
                        <div class='view'>Просмотров: $view['view']</div></div>";
}
?>


Еще как вариант попробуй переимановать переменную id, т.е. сделать любую например $_GET["id_"]
просто может быть у тебя еще где то устанавливается она...
PM MAIL ICQ   Вверх
Shark
Дата 23.5.2009, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Цитата

Смотри ошибку в других (include)файлах, в том коде что ты привел все норм.
поддерживаю...
лучше сюда выложи все коды, которые подключаются


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
NetJunky
Дата 23.5.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: 0
Всего: 0



Могу рассказать как делал у себя.
Вообщем: считываешь IP юзера, время его посещения и ИД новости.
Далее есть отдельна таблицы для просмотров куда все эти данные заносишь.
Далее у тебя при чтение новости, данные упомянутые выше заносятся в таблицу при условии, что тотже ИП не смотрет туже новость в ближайшие 24 часа.
Далее при выходе обратно на основную страничку с перечьнем новостей происходит обновление таблицы с новосятми где есть поле просмотры. Там для каждой новости происходит КАУНТ из таблицы просмотры с ИД новости для которой этот каунд делаеться.

P.S. Чтобы не забивать таблицу, ИП котороые там были 24 часа удаляються + это даёт возможность для занесения того же ИП в очередной раз.


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
fakeman
Дата 23.5.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Shark @  23.5.2009,  02:40 Найти цитируемый пост)
лучше сюда выложи все коды, которые подключаются 


news_view.php
Код

<?@session_start();
include_once "/home/localhost/www/phpsite/blocks/connect.php";
if (isset($_GET["id"])) {$id = $_GET["id"]; }
$result = mysql_query ("SELECT * FROM news WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);
if(!$result)
{
    echo "<p>Запрос о выводе данных из базы не прошёл. Напишите об этом администратору [email protected] <br> <b>Код ошибки: </b></p>";
    exit(mysql_error());
}

if (mysql_num_rows($result) > 0)
{
$update = mysql_query("UPDATE news SET view=view + 1 WHERE id='$id'",$db);

}
else
{
    echo "<p>Информация о запросе не может быть извлечена в таблице нет записи.</p>";
    exit();
}





 ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="description" content="<? echo $myrow['meta_d']; ?> ">
<meta name="keywords" content="<? echo $myrow['meta_k']; ?> ">

<title><? echo $myrow['title']; ?></title>
<link href="menu.css" type="text/css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


<link href="/phpsite/css/style.css" type="text/css" rel="stylesheet">

</head>

<body id="page">
<div id="container">
    <div id="top_header">
        <?php // include_once "/home/localhost/www/phpsite/blocks/top_header.php"; ?>
    </div>
    <? include_once "/home/localhost/www/phpsite/blocks/header.php"; ?>
    <div style="clear: both;"></div>
    <div id="nav">
        <? include "/home/localhost/www/phpsite/blocks/nav.php"; ?>
        <div style="clear: both;"></div>
    </div>
    <div id="main">
        <div id="col1">
            <div class="listing3_header">
                <div style="float: left;">Новости</div>
            </div>

            <div class="listing3">
            <?php 
                echo "<div class='newsheading'>$myrow[title]</div>
                        <div class='newsbody'>$myrow[text]
                        <div style='height:6px;'></div>
                        <div class='view'>Просмотров: $myrow[view]</div></div>";
            ?>
                    <div style="clear: both;"></div>
            </div>
            <div class="ban_m">
                <div class="ban_space">
                <iframe height="60" frameborder="0" width="468" scrolling="no" target="_blank" src="http://www.game-advertising-online.com/index.php?section=serve&id=377" marginwidth="0" marginheight="0">
                    <html>
                    <head/>
                    <body>
                        <a rel="nofollow" target="_blank" href="http://www.game-advertising-online.com/index.php?section=redir&zon=377&zid=49901afc07930">
                            <img height="60" width="468" border="0" style="cursor: url(http://www.game-advertising-online.com/sword.cur), pointer;" src="http://www.game-advertising-online.com/b/umoo.jpg"/>
                        </a>
                        <script type="text/javascript">

                            _qoptions={
                            qacct:"p-57mrc03j0BaV2"
                            };

                        </script>
                        <script src="http://edge.quantserve.com/quant.js" type="text/javascript">
                        </script>
                        <noscript><img src='http://pixel.quantserve.com/pixel/p-57mrc03j0BaV2.gif' style='display: none;' height='1' width='1'/></noscript>
                    </body>
                    </html>
                </iframe>
                </div>
            </div>
            
            <div style="clear:both;"></div>
        </div>
        <div id="col2">
            <div class="searchS">
                
                    <b>Поиск</b>
                    <input class="form" style="width: 235px; margin-left:8px; margin-right:5px" maxlength="100" size="15" name="username"></input>
                    <img onclick="document.searchform.submit();" src="img/search.png" style="widht:20px; height:16px";"/>
                    
            </div>
            <br>
            
<? include "/home/localhost/www/phpsite/blocks/ivents.php"; ?>

            <br>
            
            <div class="ban_r">
                <div class="ban_space">
                    <iframe height="600" frameborder="0" width="300" scrolling="no" target="_blank" src="http://www.game-advertising-online.com/index.php?section=serve&id=377" marginwidth="0" marginheight="0">
                    <html>
                    <head/>
                    <body>
                        <a rel="nofollow" target="_blank" href="http://www.game-advertising-online.com/index.php?section=redir&zon=377&zid=49901afc07930">
                            <img height="600" width="300" border="0" style="cursor: url(http://www.game-advertising-online.com/sword.cur), pointer;" src="http://www.game-advertising-online.com/b/umoo.jpg"/>
                        </a>
                        <script type="text/javascript">

                            _qoptions={
                            qacct:"p-57mrc03j0BaV2"
                            };

                        </script>
                        <script src="http://edge.quantserve.com/quant.js" type="text/javascript">
                        </script>
                        <noscript><img src='http://pixel.quantserve.com/pixel/p-57mrc03j0BaV2.gif' style='display: none;' height='1' width='1'/></noscript>
                    </body>
                    </html>
                </iframe>
                </div>
            </div>
        </div>
        <br>
        
        <div style="clear: both;"></div>
    </div>
    <div id="footer">
        <? include_once "/home/localhost/www/phpsite/blocks/footer.php"; ?>
    </div>
    <div style="clear: both;"></div>
</div>
</body>
</html>


header.php
Код

    <div id="header">
    </div>


nav.php
Код

<div id="navig1">
    <span class="s"></span>
    <div class="n">
    
    <nobr>
        <a href="/phpsite/">
            <span>Главная</span>
        </a>
    </nobr>
    <nobr>
        <a href="/phpsite/news/">
            <span>Новости</span>
        </a>
    </nobr>
    <nobr>
        <a href="/phpsite/blog/">
            <span>Блог</span>
        </a>
    </nobr>
    <nobr>
        <a href="/">
            <span>Школы</span>
        </a>
    </nobr>
    <nobr>
        <a href="/">
            <span>Галерея</span>
        </a>
    </nobr>
    <nobr>
        <a href="/">
            <span>Аудио</span>
        </a>
    </nobr>
    <nobr>
        <a href="/">
            <span>Видео</span>
        </a>
    </nobr>
    <nobr>
        <a href="/">
            <span>Форум</span>
        </a>
    </nobr>
    <nobr>
        <a href="/">
            <span>Контакты</span>
        </a>
    </nobr>
    </div>
</div>

        <div id="user">
<? include '/home/localhost/www/phpsite/login/login.php'; ?>
</div>


ivents.php
Код

<div class="listing3s_header">
    <div style="float: left;">События</div>
</div>
    <div class="listing3">
        <div id="rightbody">
<?php
$res = mysql_query("SELECT id,ivent,title,date,flag FROM news WHERE ivent=1 ORDER BY id DESC LIMIT 5",$db);
        while($myrow1 = mysql_fetch_array($res))
                 {
                           echo "<div style='float: left;'>
                           <img src='".$myrow1['flag']."' width='12' height='12'></img>
                           <a href='/phpsite/news/news_view.php?id=".$myrow1['id']."'>".$myrow1['title']."</a>
                           </div>
                           <div style='float: right; padding-right: 10px;'>".$myrow1['date']."</div><br>";  
                 }
?>
        </div>
    </div>


footer.php
Код

        <br/>
        <a class="under" href="/about/" >О проекте</a>
        <b> · </b>
        <a class="under" href="/cont/">Контакты</a>
        <b> · </b>
        <a class="under" href="/Map/">Карта сайта</a>
        <br/>
        По вопросам сотрудничества пишите на 
        <a class="under" href="mailto:[email protected]">[email protected]</a>



Ну вот вроде все файлы которые подгружаються в news_view.php 


bazzjr, приведённыйкод табою тоже не фурычит :(
PM MAIL   Вверх
Shark
Дата 23.5.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



методом тыка:
попробуй это:
Код

if (mysql_num_rows($result) > 0)
{
$update = mysql_query("UPDATE news SET view=view + 1 WHERE id='$id'",$db);

}

заменить на это:
Код

if ($result) 
{
$update = mysql_query("UPDATE news SET view=view + 1 WHERE id='$id'",$db);
}

Код

if (mysql_num_rows($result) > 0)

1 раз новость посмотрел, и она всегда будет больше 0.... а если равна 0??? обновление не пройдет
тогда так лучше будет:
Код

if (mysql_num_rows($result) >= 0)
{
$update = mysql_query("UPDATE news SET view=view + 1 WHERE id='$id'",$db);
}




--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 23.5.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Shark @  23.5.2009,  16:13 Найти цитируемый пост)
if ($result) 
{
$update = mysql_query("UPDATE news SET view=view + 1 WHERE id='$id'",$db);
}


Всё та же ошибка :(
PM MAIL   Вверх
NetJunky
Дата 27.5.2009, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: 0
Всего: 0



fakeman, объяснение ещё надо?


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
fakeman
Дата 27.5.2009, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(NetJunky @  27.5.2009,  18:15 Найти цитируемый пост)
fakeman, объяснение ещё надо? 

Да надо, конешно smile 

PM MAIL   Вверх
NetJunky
Дата 27.5.2009, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: 0
Всего: 0



Значит так в таблице с новостями добавить поле views, если нету.
Затем, создаёшь отдельную таблицу cmd_views
Код

CREATE TABLE `views` (
  `views_id` int(10) unsigned NOT NULL auto_increment,
  `post_id` int(11) NOT NULL,
  `ip` varchar(15) NOT NULL,
  `time` varchar(10) NOT NULL,
  PRIMARY KEY  (`views_id`)
)


post_id - ид новости для которой подсчитываются просмотры.

Далее при просмотре полной новости:
Код

    $timestamp = time() - 86400;
    mysql_query("DELETE FROM views WHERE time < '".$timestamp."'");
    $ip = $_SERVER['REMOTE_ADDR'];
    $result = mysql_query("SELECT COUNT(*) FROM views WHERE `ip` = '".$ip."' AND `post_id` = '".$post_id."'");
    $n = mysql_fetch_row($result);
    if($n[0] == 0) {
        mysql_query("INSERT INTO `views` (`views_id`, `post_id`, `ip`, `time`) 
                    VALUES (
                        '',
                        '".$post_id."',
                        '".$ip."',
                        '".time()."'
                        );
                    ");            
        $result = mysql_query("SELECT views FROM news WHERE id = '".$post_id."'");
        $v = mysql_fetch_row($result);
        $v_plus = $v[0] + 1;
        mysql_query("UPDATE news SET views = '".$v_plus."' WHERE id = '".$post_id."'");
    }


Первый запрос DELETE избавляет базу от перегрузки и удаляет старые IP (поразбирайся, если не понятно).

Добавлено через 49 секунд
Что будет совсем непонятно, спрашивай, постараюсь объяснить. smile 


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
fakeman
Дата 28.5.2009, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



NetJunky, длин выручил, маладчина, спасиб большое smile 
П.с. я делал так просто в news_view.php добавил такое 
Код

include "/home/localhost/www/phpsite/count.php";

в нём был твой код правдо пришлось подогнать слегка под себя. Но всё работает smile Ура..

А если есть на сайте блог и там тоже надо щётчик то надо делать отдельнюу таблицу дотустим views_blog  в базе и тот код подгонять уже к блогу ? или можно как то иначе ? smile 
PM MAIL   Вверх
NetJunky
Дата 28.5.2009, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: 0
Всего: 0



fakeman, зависит от того какой счётчик там надо. Я себе помница делал грамосткий, который таблицу не чистит и привязывал к картинке чтобы сразу числа выводил, а то всякие там счётчики от LiveInternet или ещё откуда, что если стормозят, то страничка фз скока грузиться, а у своего привязка к своей БД. Если не пашет одно, то не пашет всё... smile 


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
fakeman
Дата 28.5.2009, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



NetJunky, ну по идеи такоже как и этот в таблицу с блогм добовляет тока число а в таблицу views_blog ид ид_блога ИП время через каторое удалиться запись. Или можно в эту же таблицу(views что приведена выше) дабавить просто id_blog столбец ? smile
PM MAIL   Вверх
NetJunky
Дата 28.5.2009, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: 0
Всего: 0



fakeman, впринцепи можно. и тогда для каждого блога подсчитывать таким же алгоритмом. А у тебя блог от новости отличается?


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
fakeman
Дата 28.5.2009, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



NetJunky, ага, просто в новостях тока избранные будут писать а в блоге каждый но с проверкой, написал кто блог я проверяю если всё нормал допускается если нет то нет smile Или глупа ?  smile 
PM MAIL   Вверх
NetJunky
Дата 28.5.2009, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: 0
Всего: 0



Цитата(fakeman @  28.5.2009,  10:06 Найти цитируемый пост)
а в блоге каждый но с проверкой

Что это означает? что за проверка?

Цитата(fakeman @  28.5.2009,  10:06 Найти цитируемый пост)
написал кто блог я проверяю если всё нормал допускается если нет то нет

Глупо или нет зависит от того, что нормал, а что нет? Что ты под этим подразумеваешь?

Это сообщение отредактировал(а) NetJunky - 28.5.2009, 11:04


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
fakeman
Дата 28.5.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Проверка - я проверяю лично нормально ли там всё написано без мата и т.д. если всё нормально значит даю добро и запись появляется на сайте.
PM MAIL   Вверх
NetJunky
Дата 28.5.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: 0
Всего: 0



Ну в таком случае, впринцепи логично делать так как ты сделал, но на самом деле PHP настолько беспредельный язык, что там одну мысль можно реализовать (lim n -> endless). Так что тут другой человек скажет тебе свой способ.


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1764 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.