Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 85, средняя оценка - 4.87
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
#1

Как сделать счётчик переходов по ссылке? php + MySQL - PHP БД

11.11.2010, 21:18. Просмотров 11600. Ответов 31
Метки нет (Все метки)

Привет народ!
У меня в общем из базы берёт ссылки следующим образом
http://www.cyberforum.ru/php/thread2164625.html


PHP
1
Echo "<a target='_blank' href='http://".$info['url'] ."'>". $info['url'] . '</a><p>Переходы: <p>';
как сделать так, чтобы при нажатии на ссылку работал счётчик переходов и заносился в базе mysql в стобце "perehody"? ну и потом выводило общее количество "переходы: (число) )))
Спасибо за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2010, 21:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как сделать счётчик переходов по ссылке? php + MySQL (PHP БД):

Как сделать правильно ? mysql и php
Кто может исправьте ошибки - что то не хвататет ) задолбался говорит ошибка в...

Счетчик переходов по ссылке пользователя
Вопрос такой: Есть два пользователя, у которых есть свои ссылки (например у...

Передача количества переходов по ссылке в БД
Привет друзья. 2 дня весь интернет рою и ни как не найду ответа на вопрос....

Как сделать поиск с помощью php в таблице MySQL
Доброе время суток. Подскажите плиз как сделать поиск с помощью php в таблице...

Как сделать красиво и правильно? ООП + PHP + MySQL
В одной из функций класса производится подключение к БД. Возможно ли...

31
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
11.11.2010, 22:34 #2
Можно вместо ссылки подставить php-скрипт с параметром. И потом в этом скрипте обработать переход:

PHP
1
<a href="redirect.php?id=<?=$info['id']?>" target="_blank"><?=$info['url']?></a> Переходов: <?=$info['perehody']?>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php // redirect.php
    
    // соединение с БД и прочая подготовуха
    // ...
    
    if (empty($_GET['id'])) {
        header('HTTP/1.1 404 Not found');
        die();
    } else {
        
        $id = mysql_real_escape_string($_GET['id']);
        $result = mysql_query("select url from infotable where id = '$id'");
        
        if (!mysql_num_rows($result)) {
            header('HTTP/1.1 404 Not found');
            die();
        }
        
        $url = mysql_result($result, 0);
        
        mysql_query("update infotable set perehody = perehody + 1 where id = '$id'");
        header('Location: http://'.$url);
    
    }
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
11.11.2010, 23:07  [ТС] #3
что-т я явно грамотно не могу вставить ссылку скрипта ((( ругается на синтакстическую ошибку (

что я тут не так сделал?


PHP
1
2
3
4
5
Echo "<a href="redirect.php?id=<?=$info['id']?>" target="_blank"><?=$info['url']?></a>".$info['url'] . $info['url']
 
     }
 
?>
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
12.11.2010, 09:33 #4
Если ссылку выводить через echo, тогда надо избавляться от <?=...?>:
PHP
1
echo "<a href=\"redirect.php?id={$info['id']}\" target=\"_blank\">{$info['url']}</a> Переходов: {$info['perehody']}";
1
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
12.11.2010, 22:05  [ТС] #5
переходит но ругается на сам redirect.php
а именно на это:
PHP
1
        if (!mysql_num_rows($result)) {
пишет:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in K:\home\mytest\www\redirect.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at K:\home\mytest\www\redirect.php:15) in K:\home\mytest\www\redirect.php on line 16
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
12.11.2010, 22:06 #6
Цитата Сообщение от philcrosoft Посмотреть сообщение
пишет:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in K:\home\mytest\www\redirect.php on line 15
Проверьте SQL-выражение. Правильно ли указано имя вашей таблицы? Все ли запрошенные поля существуют?
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
13.11.2010, 20:12  [ТС] #7
))) нашёл свою ошибку, всё работает, спасибо! но тему не закрываю, так как есть одна задачка, выложу завтра, она связана с теми же кликами )))

Добавлено через 21 час 19 минут
в общем задача такая ))), чтобы считало переход кликов пр правилу +1 переход с одного айпи адреса в сутки ))), чтобы не получалось что демять раз один и тот же гость сайта кликал на переход и счтало все десять переходов )
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
13.11.2010, 21:36 #8
Еще одна таблица понадобится. Поля:
- ip (IP кликера),
- link_id (id ссылки),
- dt_click (время первого клика)

При запуске redirect.php все записи, где dt_click < date_add(now() interval -1 day) удаляются.
После удаления просроченных кликов новый клик добавляется, только если в таблице нет такой же пары [ip, link_id] как у текущего клика.
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
27.11.2010, 19:38  [ТС] #9
Цитата Сообщение от ostgals Посмотреть сообщение
Еще одна таблица понадобится. Поля:
- ip (IP кликера),
- link_id (id ссылки),
- dt_click (время первого клика)

При запуске redirect.php все записи, где dt_click < date_add(now() interval -1 day) удаляются.
После удаления просроченных кликов новый клик добавляется, только если в таблице нет такой же пары [ip, link_id] как у текущего клика.
можно поподробнее? так три поля в php admin ... не загрузит ли это базу, если будет много кликов по ссылке? есть ли другие варианты?
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
27.11.2010, 19:43 #10
Цитата Сообщение от philcrosoft Посмотреть сообщение
не загрузит ли это базу, если будет много кликов по ссылке?
Естественно, хостинг должен соответствовать вашим требованиям. Но даже 20 кликов в секунду (хотя скорее всего у вас будет намного меньше) - это мелочь.
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
27.11.2010, 19:47  [ТС] #11
ну я имел в виду есть ли другие варианты это как-нибудь организовать? чтобы не хранить айпи адреса в базе данных?
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
27.11.2010, 19:54 #12
Ну... А где еще хранить? В файлах, что ли? Тогда хостинг точно не выдержит.
IP хранить обязательно исходя из условий задачи.
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
27.11.2010, 19:57  [ТС] #13
Цитата Сообщение от ostgals Посмотреть сообщение
Ну... А где еще хранить? В файлах, что ли? Тогда хостинг точно не выдержит.
IP хранить обязательно исходя из условий задачи.
ладно думаю это действительно более разумнее, в фале будет напрягать систему!
можно поподоробнее написать как код написать подсчёта кликов? и чтобы айпи каждые стуки удаляло из базы?
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
27.11.2010, 20:28 #14
Цитата Сообщение от philcrosoft Посмотреть сообщение
можно поподоробнее написать как код написать подсчёта кликов?
Можно. Имеющийся redirect.php и структуру таблицы выкладывайте.
А там посмотрим...
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
27.11.2010, 20:46  [ТС] #15
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php // redirect.php
 
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("users") or die(mysql_error()) ; // ñîåäèГ*ГҐГ*ГЁГҐ Г± ГЃГ„ ГЁ ïðî÷Г*Гї ïîäãîòîâóõГ*
    // ...
 
    if (empty($_GET['id'])) {
        header('HTTP/1.1 404 Not found');
        die();
    } else {
 
        $id = mysql_real_escape_string($_GET['id']);
        $result = mysql_query("select url from users where id = '$id'");
 
        if (!mysql_num_rows($result)) {
            header('HTTP/1.1 404 Not found');
            die();
        }
 
        $url = mysql_result($result, 0);
 
        mysql_query("update users set clicks = clicks + 1 where id = '$id'");
        header('Location: http://'.$url);
 
    }
Вот
0
Миниатюры
Как сделать счётчик переходов по ссылке? php + MySQL  
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
27.11.2010, 23:17 #16
Это таблица пользователей. Для регистрации кликов нужна еще одна таблица (я уже писал про это) - вот ее структура мне и нужна.

По идее, там должны быть поля:
1. идентификатор ссылки
2. адрес кликера
3. время клика
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
27.11.2010, 23:56  [ТС] #17
Цитата Сообщение от ostgals Посмотреть сообщение
Это таблица пользователей. Для регистрации кликов нужна еще одна таблица (я уже писал про это) - вот ее структура мне и нужна.

По идее, там должны быть поля:
1. идентификатор ссылки
2. адрес кликера
3. время клика
а так вон оно что ... а я думал то строки в таблице создать, ну вот три последних строки будут с такими же названиями таблиц!
Точнее таблица "clicks" с этими тремя строками
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
28.11.2010, 13:35  [ТС] #18
вот скрин таблицы:
0
Миниатюры
Как сделать счётчик переходов по ссылке? php + MySQL  
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
28.11.2010, 16:24 #19
А что, типы данных вы еще не изучили?

ip - varchar(10) - большинство IP-адресов просто не поместятся в такой тип. сделайте varchar(15)
link_id - вопрос в том, что за данные это будут. если по аналогии с уже имеющимся кодом, то это значение поля id из таблицы users? если так, то тип будет int. если нет, тогда объясните откуда должно браться конечное значение ссылки.
date_click - должен быть типа datetime или аналогичный
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
28.11.2010, 16:47  [ТС] #20
нет типы данных ещё не до конца изучил! link_id соответсвует именно ссылке из users ))) чтобы при нажатии на одну и ту же ссылку не считалисб клики по данной ссылки )))
0
28.11.2010, 16:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2010, 16:47
Привет! Вот еще темы с решениями:

Не работает статистика переходов по внешней ссылке
Всем здравствуйте! Помогите, пожалуйста, решить проблему: Есть сайт и на нем...

Счётчик кликов по ссылке, MVC
Доброго времени суток. Имеется база данных с таблицей в которой хранятся...

Как сделать, чтобы при нажатии по нику или логину пользователя, попасть на его страницу php mysql
Как на странице пользователи сайта организовать такую вещь: Это уже сделано -&gt;...

В PHP сделать запросы к таблице в БД mysql
База данных - Автозаправочные станции! название полей в таблице: название АЗС,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru