Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Простой скрипт счетчика кликов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Без описания
VestCoastman
Отправлено: 07 Января, 2011 - 18:14:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




На форуме уже видел подобную тему, но там как то все по другому.(С php у меня не очень)

Это вытаскивает из базы ссылку и выводит ее:
CODE (php):
скопировать код в буфер обмена
  1. <?php echo $this->article->downloadlnk; ?>


Это полный вывод с кнопкой:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <FORM>
  2. <input TYPE="button" name="download" VALUE="Download Link" ONCLICK="HomeButton()"><script>
  3. function HomeButton()
  4. {
  5. location.href="<?php echo $this->article->downloadlnk; ?>";
  6. }
  7. </script>
  8. </FORM>

Нужен скрипт который рядом выводит кол-во кликов по этому бутону.
 
 Top
grefon
Отправлено: 07 Января, 2011 - 18:27:19
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Так Вам тогда нужно завести запись в базе данных или в каком-нибудь файле на сервере о том, сколько кликов уже было сделано. И каждый раз при клике записывать туда +1.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
VestCoastman
Отправлено: 07 Января, 2011 - 18:31:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




А не подскажете как?
С пхп не очень в ладах.
 
 Top
grefon
Отправлено: 07 Января, 2011 - 18:36:47
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




А что находится тут: $this->article->downloadlnk, прямая ссылка на файл или дальнейший php скрипт обработчик?

(Отредактировано автором: 07 Января, 2011 - 18:37:04)



-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
VestCoastman
Отправлено: 07 Января, 2011 - 18:39:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Прямая ссылка на файл
 
 Top
grefon
Отправлено: 07 Января, 2011 - 18:45:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




В таком случае самое простое будет создать текстовый файлик, например download.txt, где нибудь на сервере, можно даже в корне сайта. После чего сделать скрипт download.php, который при обращении к нему, будет считывать download.txt в переменную, увиличивать переменную на 1 и записывать результат в download.txt.
На функцию HomeButton() нужно поставить аякс запрос к download.php.
А при выводе $this->article->downloadlnk нужно будет так же выводить содержимое файла download.txt.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
VestCoastman
Отправлено: 07 Января, 2011 - 19:14:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Я сделал файл download.txt (пустой), закинул его в корень сайта.
Так же сделал download.php с содержанием
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. $f=fopen("download.txt","a+");
  4. flock($f,LOCK_EX);
  5. $count=fread($f,100);
  6. @$count++;
  7. ftruncate($f,0);
  8. fwrite($f,$count);
  9. fflush($f);
  10. flock($f,LOCK_UN);
  11. fclose($f);
  12.  
  13. ?>


А вот как обратиться к нему, через эту форум
CODE (htmlphp):
скопировать код в буфер обмена
  1. <FORM>
  2. <input TYPE="button" name="download" VALUE="Download Link" ONCLICK="HomeButton()"><script>
  3. function HomeButton()
  4. {
  5. location.href="<?php echo $this->article->downloadlnk; ?>";
  6. }
  7. </script>
  8. </FORM>

и куда вписывать сколько кликнули именно на эту($this->article->downloadlnk) ссылку я не знаю.
 
 Top
grefon
Отправлено: 07 Января, 2011 - 19:19:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




У Вас $this->article->downloadlnk динамическая?


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
VestCoastman
Отправлено: 07 Января, 2011 - 19:23:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Да.
Она записывается в форму при добавлении материала.
 
 Top
grefon
Отправлено: 07 Января, 2011 - 19:41:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




В этом случае в таблице нужно создать еще один столбец download.
В файл download.php пишите что-то типа такого:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (isset($_POST['link_id']) and $_POST['link_id']) {
  3.  
  4.         $connect = @mysql_connect("localhost", "root", "");  
  5.         if (!$connect) { echo "Не доступен сервер mySQL"; exit(); }  
  6.         if (!@mysql_select_db ( "ВАША БАЗА", $connect ) ) { echo "Не доступна база данных"; exit(); }
  7.  
  8.         $zapros="UPDATE table SET download=download+1 WHERE id='".$_POST['link_id']."'";
  9.         $result=mysql_query($zapros) or die (mysql_error());
  10.        
  11.         echo "ok";
  12. }
  13. ?>


Файл download.txt убивайте нафиг. А юзеру форму нужно выдавать так:

CODE (javascript):
скопировать код в буфер обмена
  1. <FORM>
  2. <input TYPE="button" name="download" VALUE="Download Link" ONCLICK="HomeButton(<?php echo $this->article->id; ?>)">
  3. <script>
  4. function HomeButton(id) {
  5.                         $.post("http://site.ru/download.php", { link_id:id }, function(data){
  6.                         if (data == 'ok') {
  7.                                 location.href="<?php echo $this->article->downloadlnk; ?>";
  8.                         } else {
  9.                                 alert("Не удалось обновить значение!");
  10.                         }
  11.                 });
  12.  
  13. }
  14. </script>
  15. </FORM>


Тут для отправки аякса используется jquery, так что не забудьте его подключить.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
VestCoastman
Отправлено: 07 Января, 2011 - 20:03:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




А может можно переделать количество просмотров под кол-во скачиваний?
Так выводится кол-во просмотров
CODE (htmlphp):
скопировать код в буфер обмена
  1. <? echo $this->escape($item->hits) ?>

В этой строке $this->escape($item->hits) уже содержится подключение к базе и выборка
Аналогично и с предыдущим моим сообщением ($this->article->downloadlnk - тут тоже есть соединение с базой и выборка)
 
 Top
grefon
Отправлено: 07 Января, 2011 - 20:09:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Можете и переделать. В этом случае Вам нужно убрать автообновление хитов при запросе материала. Все остальное остается таким же как я написал.
Судя по переменным речь идет о джумле?


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
VestCoastman
Отправлено: 07 Января, 2011 - 20:28:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Да, она самая, только переделанная до неузнаваемости, понаписал там всякого, теперь самому не разобраться.
А зачем тут делать еще раз запрос, если тут($this->article->downloadlnk) он уже есть?
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2.      if (isset($_POST['link_id']) and $_POST['link_id'])
  3.           {
  4.              $connect = @mysql_connect("localhost", "root", "");
  5.              if (!$connect) { echo "Не доступен сервер mySQL"; exit(); }
  6.              if (!@mysql_select_db ( "ВАША БАЗА", $connect ) ) { echo "Не доступна база данных"; exit(); }
  7.              $zapros="UPDATE table SET download=download+1 WHERE id='".$_POST['link_id']."'";
  8.              $result=mysql_query($zapros) or die (mysql_error());
  9.              echo "ok";
  10.      }
  11. ?>
 
 Top
grefon
Отправлено: 07 Января, 2011 - 20:31:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Этот скрипт обновляет значение на 1 при клике по кнопке.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
VestCoastman
Отправлено: 07 Января, 2011 - 21:22:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Создал столбец download. В download.php прописал
CODE (php):
скопировать код в буфер обмена
  1. <?PHP
  2.       if (isset($_POST['link_id']) and $_POST['link_id'])
  3.           {
  4.               $connect = @mysql_connect("localhost", "root", "");
  5.               if (!$connect) { echo "Не доступен сервер mySQL"; exit(); }
  6.               if (!@mysql_select_db ( "база", $connect ) ) { echo "Не доступна база данных"; exit(); }
  7.               $zapros="UPDATE table SET download=download+1 WHERE id='".$_POST['link_id']."'";
  8.               $result=mysql_query($zapros) or die (mysql_error());
  9.               echo "ok";
  10.       }
  11. ?>

и в выводном файле прописал:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <script language="JavaScript" type="text/javascript" src="<?php echo $this->baseurl ?>/js/jquery.js"></script>
  2. <script language="JavaScript" type="text/javascript" src="<?php echo $this->baseurl ?>/js/jquery.magnifier.js"></script>
(подключение jquery в <head>)
И сам вывод кнопки
CODE (htmlphp):
скопировать код в буфер обмена
  1. <FORM>
  2. <input TYPE="button" name="download" VALUE="Download Link" ONCLICK="HomeButton(<?php echo $this->article->id; ?>)">
  3. <script>
  4. function HomeButton(id) {
  5. $.post("http://garrysbox.ru/download.php", { link_id:id }, function(data){
  6. if (data == 'ok') {
  7. location.href="<?php echo $this->article->downloadlnk; ?>";
  8. } else {
  9. alert("Не удалось обновить значение!");
  10. }
  11. });
  12. }
  13. </script>
  14. </FORM>

Теперь при нажатии на бутон выводится "Не удалось обновить значение!"
Что не так делаю?
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB