Модераторы: 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   Вверх
Страницы: (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.1035 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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