Брпй преглеждания

botevis2

Registered
Какво ще ми предложете да използвам за брой прегледи на дадена страница става въпрос за новини :)
 
Ако искаш най-обикновен брояч за прегледи,добави една колонка в таблицата с новините с име views примерно и при всяко зареждане на файла които показва новините примерно news.php
правиш една проста заявка
Код:
UPDATE news   SET views = views + 1 WHERE news id = $id
 
Код:
<?php $id = (int)($_GET['id']);
$q = mysql_query("UPDATE files   SET views = views + 1 WHERE  id = $id"); 
while($rv = mysql_fetch_array($q))
{
	$rq=$rv['views']; 
	echo $rq;
}
?>

Това сътворих и ми дава грешка в заявката
 
в страница примерно novina.php?id=..
PHP:
<?php 
include ('conf.php');
$getid = (int)$_GET['id']; 
 $selectc = mysql_query("SELECT id,views FROM files where id='$getid'")  or die(mysql_error()); 
 if(mysql_num_rows($selectc) == 0) {
        header("Location: index.php");
} else {
$r = mysql_fetch_assoc($selectc); 
$update = mysql_query("Update files set views= '$r[views]'+1 where id = '$getid'") or die(mysql_error()) ; }
 
Нищо не показва :(

В phpmyadmin полето в `files` ми е views varchar 255 от това да е проблема ?
 
botevis2 каза:
Нищо не показва :(

В phpmyadmin полето в `files` ми е views varchar 255 от това да е проблема ?
Ако полето ти е празно , направи една заявка в phpmyadmin
Код:
UPDATE  news SET   views =0

А и не разбрах , хем ти дава грешка в заявката , хем не ти дава?

А и това
Код:
set views= '$r[views]'+1
трябва да си е
Код:
set views = views +1
 
Ako полето ти е празно, няма как да се обнови...

Всяка страница си е уникална (със своето име), нали така? :) т.е. UNIQUE KEY

[sql]
CREATE TABLE page_views(id INT AUTO_INCREMENT PRIMARY KEY,
page_name VARCHAR(255) NOT NULL DEFAULT '',
view_count INT NOT NULL DEFAULT 1,
UNIQUE KEY(page_name));
[/sql]
При отваряне, всяка страница include-ва кода
PHP:
/* connect to MySQL */
mysql_query("INSERT INTO page_views (page_name) 
VALUES('".$_SERVER['PHP_SELF']."') 
ON DUPLICATE KEY UPDATE view_count=view_count+1") 
or die('Error');
:?:

Edit: view_count INT NOT NULL DEFAULT 1, а не 0 -> по разбираеми причини...
 
koko5 каза:
Ako полето ти е празно, няма как да се обнови...

Всяка страница си е уникална (със своето име), нали така? :) т.е. UNIQUE KEY

[sql]
CREATE TABLE page_views(id INT AUTO_INCREMENT PRIMARY KEY,
page_name VARCHAR(255) NOT NULL DEFAULT '',
view_count INT NOT NULL DEFAULT 1,
UNIQUE KEY(page_name));
[/sql]
При отваряне, всяка страница include-ва кода
PHP:
/* connect to MySQL */
mysql_query("INSERT INTO page_views (page_name) 
VALUES('".$_SERVER['PHP_SELF']."') 
ON DUPLICATE KEY UPDATE view_count=view_count+1") 
or die('Error');
:?:

Edit: view_count INT NOT NULL DEFAULT 1, а не 0 -> по разбираеми причини...

Глупости, как да не може да се обнови. Понеже е varchar, когато е празно просто връща празен стринг. В случая му е нужно да е int(), все пак само числа ще минават оттам. И не, по подразбиране не трябва да е 1, защото все пак почваме да броим от 0. Като влезе някой за пръв път, твоя начин ще покаже, че е прегледана вече 2 пъти страницата.

До автора. Нито цялостна структора даде, нито грешката, която по-горе спомена даде. Каква помощ очакваш. Ние ще ти дадем примери, но после ще кажеш, че не работят, защото не използват твоята структура.
И все пак ти какво броиш в крайна сметка ? Свалени файлове ? Преглед файлове ? Преглед страница ?
Никаква информация не си дал, хората тука наслуки ти дават примери и ти пишеш единствено, че не работи.
Затова, дай ни повече информация, която споменах по-горе и да можем да ти помогнем пълноценно. ;)
 
Revelation каза:
Глупости, как да не може да се обнови. Понеже е varchar, когато е празно просто връща празен стринг. В случая му е нужно да е int(), все пак само числа ще минават оттам. И не, по подразбиране не трябва да е 1, защото все пак почваме да броим от 0. Като влезе някой за пръв път, твоя начин ще покаже, че е прегледана вече 2 пъти страницата.
Глупост e да очакваме връщане на нещо при update (освен affected rows)-> връща от селект... В началото имаме празна таблица-какво ще обновяваме? Поне опитай 1 insert в посочената таблица и ще разбереш защо default e 1, защо така е най-удачно, особено за сайтове, където всеки ден се генерират нови и нови страници. Все пак не ми се спори с теб-нито си ме питал нещо, нито пък съм отговорил на твой въпрос, а и нямам проблеми с кодове, както и време да си губя с подобни неща...
 
извинете , но какво му имаше на моя вариант ? бачка идеално в сайта ми
 
Аз искам тука най-просто един брояч за посещения вие тука състезание кой знае повече си направихте :D :D

Става въпрос за новина колко пъти е прегледна това е
 
Еми едно поле от тип int добавяш със стойност по подразбиране 0.

Оттам ти трябва това в news.php

PHP:
$newsId = $_GET['id'];
//заявка да си вземеш новината
$update = mysql_query("UPDATE news SET views = views + 1 WHERE `id` = '{$newsId}'");

Най-простото решение.
 
В phpmyadmin промених полето views на int,11, и 0 по подразбиране
И ето това сложих в view.php(файла с който преглеждам новините)
Код:
<?php
$newsId = $_GET['id'];
$update = mysql_query("UPDATE files SET views = views + 1 WHERE `id` = '{$newsId}'");
while($v = mysql_fetch_array($update))
{
	$views = $v['views'];
	echo $views;
}
?>

Грешка:Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\forecast\view.php on line 74

Това трябва да е в заявката...
 
UPDATE не ти връща нищо... първо изпълни ъпдейта, после SELECT и от там извади всичко което ти трябва - заглавие, съдържание, брой прегледи.
 
botevis2 каза:
В phpmyadmin промених полето views на int,11, и 0 по подразбиране
И ето това сложих в view.php(файла с който преглеждам новините)
Код:
<?php
$newsId = $_GET['id'];
$update = mysql_query("UPDATE files SET views = views + 1 WHERE `id` = '{$newsId}'");
while($v = mysql_fetch_array($update))
{
	$views = $v['views'];
	echo $views;
}
?>

Грешка:Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\forecast\view.php on line 74

Това трябва да е в заявката...

Е, ти какво очакваш бе човек ? Ти ъпдейтваш, не селектираш, че да вадиш от базата данни.
Аз виж какво съм ти писал в примера горе.
Сложил съм ти коментар, на мястото на който трябва да си сложиш заявка за селектиране на новините.
 
Голяма каша стана , с една проста заявка,аз още в началото дадох код които ползвам от много време за най-простото увеличаване на views+1 при всяко зареждане...

Код:
$id = $_GET['id'];
$update = mysql_query("UPDATE files SET views = views + 1 WHERE `id` = '$id'");
///tuka moje i 2ra zaqvka ve4e za pokazvaneto i prochie
....
сега ако автора не успява да се справи с нея значи просто трябва да разбере къде дава грешка и да "тества" иначе ние така със завързани очи няма как да помогнем...

:)
 

Back
Горе