Брояч за посещения с MYSQL.
Публикувана от ko6rata на January 19 2011 10:30:22

Разширена новина
В този урок ще ви покажа това как да си направите брояч, който изчислява това колко пъти определена страница е посещавана. Ще ни е нужно да създадем една база данни, защото скриптът го изисква. Ще създадем само един файл. Можете да го кръстите както пожелаете. Аз бих ще го кръстя count.php.
Нека първо се погрижим за базата данни. Както е написано по-горе създайте си една , и създайте таблицата stats_pagecounter.

Нейното съдържание е следното:

CREATE TABLE `stats_pagecounter` (
`id` int(25) NOT NULL auto_increment,
`page_name` varchar(255) NOT NULL default '',
`page_hits` int(25) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM;

Би трябвало всичко да е успешно. Ако е така нека продължим. Сега създаваме .php файлът които ще използваме (както казах, няма значение името). Този файл ще съдържа:

<?PHP
function page_count($page) {
$c_link = mysql_connect('localhost', 'root', 'donkihot')
or die('counter CONNECT error: '.mysql_errno().', '.mysql_error());
mysql_select_db('testes');
$c_query = "SELECT * FROM stats_pagecounter
WHERE (page_name = '$page')";
$c_result = mysql_query($c_query, $c_link)
or die('counter SELECT error: '.mysql_errno().', '.mysql_error());
if (mysql_num_rows($c_result)) {
$row=mysql_fetch_array($c_result,MYSQL_ASSOC);
$pcounter = $row['page_hits']+1;
$c_update = "UPDATE stats_pagecounter
SET page_hits = '$pcounter' WHERE page_name = '$page'";
$c_hit = mysql_query($c_update, $c_link)
or die('counter UPDATE error: '.mysql_errno().', '.mysql_error());
} else {
$c_insert = "INSERT INTO stats_pagecounter
VALUES ( '0', '$page', '1')";
$c_page = mysql_query($c_insert, $c_link)
or die('counter INSERT error: '.mysql_errno().', '.mysql_error());
$pcounter = 1;
}
mysql_free_result($c_result);
mysql_close($c_link);
return $pcounter;
}
$phpself_url = $_SERVER['SERVER_NAME'].
$_SERVER['PHP_SELF'].'?'.
$_SERVER['QUERY_STRING'];
$page_hits = page_count($phpself_url);

echo "Този сайт е посетен <b>$page_hits</b> пъти.";
?>