Forum Webscript.Ru

Программирование => PHP => Тема начата: andtar от 20 Августа 2002, 10:44:51

Название: трудный вопрос
Отправлено: andtar от 20 Августа 2002, 10:44:51
Значит так:
 
Я делаю ссылку популярные миссии (для игры). Популярные - это те, у которых больше загрузок, т.е. скачиваний.
Файлы скачивания лежат в дирректории data/load/file.txt где file - это номер идентификатора миссии.
Сам файл миссии лежит в data/mission.txt в нем записано:
1^^mission.php?action=ot&id=1^^имя миссии^^ ...etc...
2^^mission.php?action=ot&id=2^^имя миссии^^ ...etc...

Также существует файл data/load/1.txt и data/load/2.txt
Количество скачиваний определяет count. Для миссии под номером 1:
$array = file ("data/load/1.txt"); $count = count ($array);
$count - это кол-во скачиваний для миссии id=1

Теперь главное:
нужно расположить по порядку все миссии от больших закачек к меньшим
миссий может быть сколько угодно, ID их возрастает 1,2,3,4...

В цикле, когда они уже располагаются по порядку, нужно писать:



    $href = "mission.php?action=ot&id={$d[0]}";
    echo "$d[3]
";
    echo "Версия: $d[5]
";
    echo "Требует дополнения: $d[6]
";
    echo "Размер файла: $d[2] Кб
";
    echo "Автор: $d[8]

";



Пока все, ечли че не понятно, пишите...
Название: трудный вопрос
Отправлено: andtar от 20 Августа 2002, 10:49:41
и вот еще забыл написать:
когда я скачиваю миссию, загрузки прибавляются на 2, а не на 1 как надо. Текст такой:

if ($action == "download") { # Если файл скачан
  if (!$id) { die ("

ID файла не определен

");}
  $file_load = "data/load/{$id}.txt";
  @$f = fopen ($file_load, "a");
  $data = $date."~".$ip."\\n";
  @fputs ($f, $data);
  @fclose ($f);
  $href_location = $server."mis/".$id.".zip";
  header ("Location: $href_location");
}
Название: трудный вопрос
Отправлено: Maniac от 20 Августа 2002, 11:22:24
Мдя... Любят же некоторые усложнять... А ты все счетчики в одном файле хранить не мог?
Конкретизирую задачу: есть файлы. Количество закачек файла - это количество строк в файле. Тебе надо вывести файлы в порядке, соотв. количетсву закачек. Так?
Название: трудный вопрос
Отправлено: andtar от 20 Августа 2002, 12:04:17
Цитировать
Мдя... Любят же некоторые усложнять... А ты все счетчики в одном файле хранить не мог?
Конкретизирую задачу: есть файлы. Количество закачек файла - это количество строк в файле. Тебе надо вывести файлы в порядке, соотв. количетсву закачек. Так?


все правильно
Название: трудный вопрос
Отправлено: Alexandr от 20 Августа 2002, 12:15:47
Кидаем все в массив:
$massiv[$kol-vo_skachek]="путь до файла".
далее натравливаем f-ю
uksort ($massiv);
далее foreach
Название: трудный вопрос
Отправлено: andtar от 20 Августа 2002, 13:13:58
Цитировать
Кидаем все в массив:
$massiv[$kol-vo_skachek]="путь до файла".



до какого файла? Файл с миссиями только один: data/mission.txt
Название: трудный вопрос
Отправлено: Alexandr от 20 Августа 2002, 13:24:40
Цитировать
до какого файла?

Значит название миссии.

Чё придераешься-то???
"до какого файла?" написал, для случая со счётчиком  скачивания файлов.
Название: трудный вопрос
Отправлено: andtar от 20 Августа 2002, 13:40:37
Подумайте пока над этим:

В массив надо занести $name
где $name = $count."~".$id;
затем сортировать массив, потом explode вывести $id.
Т.е. получится в массив просортируется в правильном порядке, и будет содержать все IDы по порядку.

И теперь надо вывести окончательный цикл, вроде:
for ($n=0; $n
Название: трудный вопрос
Отправлено: Alexandr от 20 Августа 2002, 13:57:33
Цитировать
Подумайте пока над этим

Мона и так.
Название: трудный вопрос
Отправлено: Oak от 20 Августа 2002, 23:40:27
А тип запроса ты проверяешь - HEAD или GET ?

(на всякий случай так :)
Название: трудный вопрос
Отправлено: andtar от 21 Августа 2002, 07:09:46
Пока я ждал ответа, сам уже придумал все:

if ($action == "top") { # популярные миссии
  $handle = opendir ("data/load");
  while (($file=readdir($handle))!==FALSE) {
    if (($file=="..") or ($file==".")) continue;
    $id_1 = explode (".", $file);
    $id = $id_1[0];
    $file_full = "data/load/{$file}";
    $array_file = file ($file_full);
    $count = count ($array_file);
    $array[] = $count." ~ ".$id;
  }
  closedir ($handle);
  rsort ($array);
  reset ($array);
  $stop = "0";
  while (list ($key, $val) = each ($array)) {
    if ($stop == $top_mission) break;
    $sort_ar = explode (" ~ ", $array[$key]);
    $sort = $sort_ar[1];
    $array_mis = file ($file_m);    # чтение файла миссии
    $d = explode ("^^", $array_mis[$sort-1]);
    $href = "mission.php?action=ot&id={$d[0]}";
    echo "$d[3]
";
    echo "Версия: $d[5]
";
    echo "Требует дополнения: $d[6]
";
    echo "Размер файла: $d[2] Кб
";
    echo "Автор: $d[8]

";
    $stop++;
  }
}


А почему у меня пишется, что 2 закачки, вместо одной:

if ($action == "download") { # Если файл скачан
  if (!$id) { die ("

ID файла не определен

");}
  $file_load = "data/load/{$id}.txt";
  @$f = fopen ($file_load, "a");
  $data = $date."~".$ip."\\n";
  @fputs ($f, $data);
  @fclose ($f);
  $href_location = $server."mis/".$id.".zip";
  header ("Location: $href_location");
}