![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
fakeman |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Натолкнулся у себя на проблему с счётчиком а именно при просмотре новостей..
Вроде как работает,но если include допустим ivents.php то счётчик записывает в базу не 1 а 2 и как я выяснил проблема в запросе находяшимся в ivents.php
И пооду это всё из-за того что всё обращения к 1 таблице news..так ли это ? Можно решить эту проблему не добовляя новую таблицу. Помогите. П.С. в таблице news есть как и новости так и события(ivents) если событие равно 1 то высвечивать его как событие и новость а если 0 то тока как новость. |
||||
|
|||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Интересно, а как запрос селекта может влиять на статистические данные в апдейте? Расскажи немного по подробней
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
видимо у тебя код, приведенный в первом блоке, выполняется дважды. возможно, функция, в которой этот блок содержится, выполняется дважды. возможно, файл с этим блоком подключается не через include_once, а через include. В двух разных местах. И выполняется дважды. Select запрос точно не влияет на содержимое таблиц. |
|||
|
||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
И я вот не понимаю почему так :(
что именно ? ![]() Мне надо простой счётчик. каторый при каждом нажатии на новость добовлялся в базу и выводился на сайте( По идеи это есть) то если добавить меню с событиями через include то при нажатии на новость в базу добовляет не 1(как надо) а 2. Такое ощущение что 2 раза вызывается этот участок кода
а вот почему ? фиг его знает :( |
|||
|
||||
Shark |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
Добавлялся или Обновлялся столбец view? |
|||
|
||||
bazzjr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 27.12.2007 Где: Россия, Пермь Репутация: 4 Всего: 6 |
Согласен с skyboy.
Смотри include, или косяк в функции. По тому коду что ты привел выше, ничего апсолютно не понятно, "даешь больше кода?" или плавай в бездне догадок... |
|||
|
||||
fakeman |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Shark, Обновляется..
Есть папка news в ней файлы index.php->page.php(через include в indexe) и news_view.php(Через <a href.. а точнее
ivents лежт долеко от news.. Код ivents.php
Код news_view.php
|
||||||
|
|||||||
Shark |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 она у тебя открывается и обновляется сразу |
|||
|
||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
||||
|
||||
Shark |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
тут косяк:
Текст из книги: Оператор do...while Этот оператор называется оператором цикла с постусловием и имеет следующий синтаксис
Такой цикл всегда будет выполнен хотя бы один раз. После выполнения тела цикла вычисляется выражение-условие, и если оно истино, вновь выполняется тело цикла. В примере ноль всегда будет добавлен в список, независимо от значения условия (++$i <= $var).
Будут выведены числа от 0 до 5 |
||||||
|
|||||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Да выводиться 6(как я понял от 0 - 5) раз но один и тот-же т.е. последняя новость выводится 6 раз. Как тогда не используя условие сделать что бы выводилось 5 последних новостей ?
|
|||
|
||||
Shark |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
так по пробуй |
|||
|
||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Да так всё в ivents работает исправно, а вот в новостях к просмотрам +2 :(
![]() |
|||
|
||||
Shark |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
а попробуй сделать так:
Новости:
тогда получится, что он из новости где id=$id.... берет кол-во просмотров и к этому количеству прибавляет еще единицу.... может это из-за такой записи все происходило
мне просто удобнее так писать:
тут хотя бы понятно что к чему Это сообщение отредактировал(а) Shark - 22.5.2009, 23:21 |
||||||
|
|||||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Неа не помогает ... Блин вот вечно какие то касяки. :(
|
|||
|
||||
bazzjr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 27.12.2007 Где: Россия, Пермь Репутация: 4 Всего: 6 |
Смотри ошибку в других (include)файлах, в том коде что ты привел все норм.
Как вариант можно попробовать методом усечения вычислить узкое место(где ошибка). Как вариант предлагаю начать с того что, поместить весь остальной код в условие if (isset($_GET["id"])) {$id = $_GET["id"]; и тут остальной код}, т.е.:
Еще как вариант попробуй переимановать переменную id, т.е. сделать любую например $_GET["id_"] просто может быть у тебя еще где то устанавливается она... |
|||
|
||||
Shark |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
лучше сюда выложи все коды, которые подключаются |
|||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 деревьев. |
|||
|
||||
fakeman |
|
||||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
news_view.php
header.php
nav.php
ivents.php
footer.php
Ну вот вроде все файлы которые подгружаються в news_view.php bazzjr, приведённыйкод табою тоже не фурычит :( |
||||||||||
|
|||||||||||
Shark |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
методом тыка:
попробуй это:
заменить на это:
1 раз новость посмотрел, и она всегда будет больше 0.... а если равна 0??? обновление не пройдет тогда так лучше будет:
|
||||||||
|
|||||||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
||||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 деревьев. |
|||
|
||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
||||
|
||||
NetJunky |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 11.5.2008 Где: Tallinn Репутация: 0 Всего: 0 |
Значит так в таблице с новостями добавить поле views, если нету.
Затем, создаёшь отдельную таблицу cmd_views
post_id - ид новости для которой подсчитываются просмотры. Далее при просмотре полной новости:
Первый запрос DELETE избавляет базу от перегрузки и удаляет старые IP (поразбирайся, если не понятно). Добавлено через 49 секунд Что будет совсем непонятно, спрашивай, постараюсь объяснить. ![]() -------------------- 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 деревьев. |
||||
|
|||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
NetJunky, длин выручил, маладчина, спасиб большое
![]() П.с. я делал так просто в news_view.php добавил такое
в нём был твой код правдо пришлось подогнать слегка под себя. Но всё работает ![]() А если есть на сайте блог и там тоже надо щётчик то надо делать отдельнюу таблицу дотустим views_blog в базе и тот код подгонять уже к блогу ? или можно как то иначе ? ![]() |
|||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 11.5.2008 Где: Tallinn Репутация: 0 Всего: 0 |
fakeman, зависит от того какой счётчик там надо. Я себе помница делал грамосткий, который таблицу не чистит и привязывал к картинке чтобы сразу числа выводил, а то всякие там счётчики от LiveInternet или ещё откуда, что если стормозят, то страничка фз скока грузиться, а у своего привязка к своей БД. Если не пашет одно, то не пашет всё...
![]() -------------------- 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 деревьев. |
|||
|
||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
NetJunky, ну по идеи такоже как и этот в таблицу с блогм добовляет тока число а в таблицу views_blog ид ид_блога ИП время через каторое удалиться запись. Или можно в эту же таблицу(views что приведена выше) дабавить просто id_blog столбец ?
![]() |
|||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 деревьев. |
|||
|
||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
NetJunky, ага, просто в новостях тока избранные будут писать а в блоге каждый но с проверкой, написал кто блог я проверяю если всё нормал допускается если нет то нет
![]() ![]() |
|||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 11.5.2008 Где: Tallinn Репутация: 0 Всего: 0 |
Что это означает? что за проверка?
Глупо или нет зависит от того, что нормал, а что нет? Что ты под этим подразумеваешь? Это сообщение отредактировал(а) 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 деревьев. |
|||
|
||||
fakeman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Проверка - я проверяю лично нормально ли там всё написано без мата и т.д. если всё нормально значит даю добро и запись появляется на сайте.
|
|||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 деревьев. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |