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

Форум MySQL

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

 

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

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

тема: Хранение информации о файлах + счетчик
 
 автор: Surfer   (09.08.2007 в 06:26)   письмо автору
 
 

Добрый день! Для реализации вполне несложной задачи не хватает знаний для реализации.

Цель такая: постраничный вывод списка файлов в папке + размер файла+счетчик скачиваний,
желательно добавить поиск по названию.

Идея такая: после закачки файлов в папку (или удаления старых) запустить скрипт типа update.php который произведет необходимую работу - забьет в базу необходимые данные нового и удалит ненужные от старого.

Информацию по постраничному выводу нашел, с поиском тоже вроде разобрался, как данные вводить тоже вкурсе.

А теперь вопрос: правильный ли подход с update.php или можно все намного проще сделать (как всегда)? И как реализовать +1 к счетчику при скачивании?

Наглядно можно посмотреть сдесь
http://wapmania.org.ua/modules/zagruz/index.php?kat=./--Melodii--/mmf
К сожалению скрипт построен на файлах и не может постранично вывести по несколько файлов,
что и послужило толчком модифицировать его и перевести на БД.

   
 
 автор: tuder   (09.08.2007 в 07:26)   письмо автору
 
   для: Surfer   (09.08.2007 в 06:26)
 

http://files.byte.nsk.su/oldgames/
http://nostalgie.tut.ru/

Постраничный вывод не сделан, но это можно реализовать.
Ни в какую базу, никаких update.php.
Выводится содержимое каталога. Примерно так:

Открывается файл с описаниями

   $fp=fopen($d->path."/files.bbs", "r");
   while (FALSE!==($file=readdir($handle))) {
      if ($file!="." && $file!="..") {
      ++$count;
     }
    }

потом считываются из него имя файла и описание, проверяется на наличие файла

   while ($finfo=ltrim(fgets($fp))) {
[...]
         if (is_file($filep)) {
            $file=strtolower($file);
            $count+=filesize($d->path."/".$file);
            ++$countf;
            $files=number_format(strval(filesize($d->path."/".$file)));
            $filet=date("d-m-Y", filemtime($d->path."/".$file));
            $filen=strtoupper($file);
            $filep=$d->path."/".$file;
// подсчёт количества скачиваний
            $sql="SELECT COUNT(filename) FROM `statdl` where url='$url' and filename='$file'";

Затем выводится информация.
Прямой ссылки на файл - нет. Идёт ссылка на скрипт для скачки

echo "<tr><td width=20% 
bgcolor='#888888'><a href='#' 
onclick=\"window.open('download.php?
location=$file','$file','toolbar=0,
location=0,directories=0,status=0,
menubar=0,scrollbars=0,resizable=0,
copyhistory=0,width=400,height=300')
\">$filen</a></td>


Сам скрипт счётчика скачиваний. Если у тебя без базы, то количество скачек можно хранить в файле описаний. Или если без описаний, то описанием может служить как раз количество скачек.


<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<meta http-equiv="pragma" content ="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<?php

$url
="OldGames";

if (isset(
$location)) {
//если location не пуста
   
$realoc=$_GET["location"];
   
$location="files/".$location;
   include(
"stat");
   
$date=time();
   include(
"config");
   include(
"openbase");
   if (
is_file($location)) {$isset=1;} else {$isset=0;}
   
$query="insert into `statdl`
 (date, ip, browser, referer, filename, 
isset, url) VALUES ("
.$date.", '".
$REMOTE_ADDR."', '".$HTTP_USER_AGENT."', 
'"
.$HTTP_REFERER."', '".$realoc."', '".
$isset."', '".$url."')";
   
$result=mysql_query($query);
}
if (isset(
$location) and is_file($location)) {
   echo 
"<meta http-equiv='refresh' content='3; url=$location'>";
?>
<title>Download</title>
</head>
<body>
<?
//      echo "<body onload=\"window.
location.href='$location'\" />";
      echo 
"<p align=center>Если загрузка 
не начнется через несколько секунд - <a 
href='
$location'> нажмите эту ссылку</a></
p>"
;
   echo 
"<p align=center><a 
href=\"javascript:opener.location.
reload(bReloadSource = true);window.
close(self)\">Закрыть окно</a></p>"
;
} else {
//если файла не существует
   
$location="";
   echo 
"<body onload=\"window.close\">\n";
   echo 
"<center><font color='red'>Файл не 
найден!</font></center>"
;
}

?>
</body>
</html>

   
 
 автор: Surfer   (09.08.2007 в 22:54)   письмо автору
 
   для: tuder   (09.08.2007 в 07:26)
 

Интересно конечно, сейчас попробую. Единственная проблема- как обойтись без ява скрипта popup? Ведь сайт расчитан для мобильных телефонов, а они такое еще не понимают...

   
 
 автор: tuder   (10.08.2007 в 09:48)   письмо автору
 
   для: Surfer   (09.08.2007 в 22:54)
 

Просто в ссылке передавать имя файла скрипту


<a href="download.php?file=lalalal.wav">lalalal.wav</a>


Скрипт добавит счётчки этому файлу, потом отдаст его пользователю.
Также, как у меня в отдельном окне. Только будет в этом ж.

   
 
 автор: Surfer   (13.08.2007 в 01:04)   письмо автору
 
   для: tuder   (09.08.2007 в 07:26)
 

а можете пояснить строчку

      ++$count;

и что находиться в [...] после while

   
 
 автор: Surfer   (13.08.2007 в 01:14)   письмо автору
 
   для: Surfer   (13.08.2007 в 01:04)
 

и еще вопрос:
если мне захочется осуществить поиск файлов, также можно будет не использовать базу?

   
 
 автор: tuder   (17.08.2007 в 14:22)   письмо автору
 
   для: Surfer   (13.08.2007 в 01:14)
 

Если все файлы будут прописаны в текстовом файле с описаниями/счётчиками, то можно открывать этот текстовый файл и в нём искать нужное.

++$countf - это вроде как увеличить переменную на единицу.
Подсчитывается количество найденных файлов.

   
Rambler's Top100
вверх

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