Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите как подсчитать сколько раз скачали файл
 
 автор: Mesm   (27.07.2005 в 11:08)   письмо автору
 
 

Здравствуйте, мне надо посчитать сколько раз скачали файл, как лучше это сделать? Такой запрос: mysql_query("UPDATE aaaa SET num_ska=num_ska + 1 WHERE iddd=$u[0]"), только куда его впихнуть :). Спасибо

   
 
 автор: cheops   (27.07.2005 в 12:35)   письмо автору
 
   для: Mesm   (27.07.2005 в 11:08)
 

Смысл построения таких счётчиков заключается в следующем коде. Пусть имеется файл test.zip для которого необходимо подсчитать число посетителей его загрузивших.
<?php 
  
// файл index.php 
  
if($_GET['test'] == "downloads"
  { 
      
// Тут код подсчёта хита, например заносим в базу данных 
      
mysql_query("UPDATE aaaa SET num_ska=num_ska + 1 WHERE iddd=$u[0]");
      echo 
"<HTML><HEAD> 
            <META HTTP-EQUIV='Refresh' CONTENT='0; URL=test.zip'> 
            </HEAD></HTML>"

  } 
?> 
<a href=index.php?test=downloads>Скачать</a>


PS Полный вариант такого счётчика можно найти на компакт-диске к книге "PHP 5 Практика создания Web-сайтов" http://www.softtime.ru/php5/?id_article=43

   
 
 автор: Mesm   (27.07.2005 в 12:39)   письмо автору
 
   для: cheops   (27.07.2005 в 12:35)
 

А можно это сделать с помощью onclick?

   
 
 автор: cheops   (27.07.2005 в 12:53)   письмо автору
 
   для: Mesm   (27.07.2005 в 12:39)
 

Можно, но страницу всё-равно перегружать придётся, так как onclick клиентское событие, а запись в базу данных происходит на серверной стороне.

   
 
 автор: [CHOL]Scorpion   (27.07.2005 в 13:06)   письмо автору
 
   для: cheops   (27.07.2005 в 12:53)
 

cheops код немного нерациональный. Если уже +1 за скачку, то зачем ещё ссылка для инициации скачивания.

Я думаю, но это сугубо моё мнение, как бы делал я, стоит модернизировать ствой код:

есть ссылка на допустим такая:

<a href="files/test.zip">test.zip</a>


переделываем её в

<a href="download.php?file=test.zip">test.zip</a>


содержимое download.php


тут коннектимся к базе

$sql = "записываем +1 показ в базу";
mysql_query($sql);

header ("Location: files/".$file);



Сам пока не пробовал на практике, но в теории обязано сработать.

   
 
 автор: cheops   (27.07.2005 в 13:14)   письмо автору
 
   для: [CHOL]Scorpion   (27.07.2005 в 13:06)
 

Это тоже самое.

   
 
 автор: [CHOL]Scorpion   (27.07.2005 в 13:22)   письмо автору
 
   для: cheops   (27.07.2005 в 13:14)
 

угу, только в твоём примере это делает браузер ... что увеличивает время операции.


ЗЫ: просто обозначил разницу вариантов :)

   
 
 автор: cheops   (27.07.2005 в 13:51)   письмо автору
 
   для: [CHOL]Scorpion   (27.07.2005 в 13:22)
 

На самом деле в вашем примере это тоже делает браузер :), HTTP-заголовок Location интерпретируется именно им.

   
 
 автор: cheops   (27.07.2005 в 13:54)   письмо автору
 
   для: [CHOL]Scorpion   (27.07.2005 в 13:22)
 

На самом деле оба варианта практически эквивалентны - в вашем случае код получается более компактным, в моём более защищённым от использования новичками, у которых часто возникают проблемы при отправки текста вперёд заголовоков.

   
 
 автор: [CHOL]Scorpion   (27.07.2005 в 17:25)   письмо автору
 
   для: cheops   (27.07.2005 в 13:54)
 

да, верно, вечно нафигачат пол страницы, а потом пытаются хэдером переслать :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования