Forum Webscript.Ru
Программирование => PHP => Тема начата: 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]
";
Пока все, ечли че не понятно, пишите...
-
и вот еще забыл написать:
когда я скачиваю миссию, загрузки прибавляются на 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");
}
-
Мдя... Любят же некоторые усложнять... А ты все счетчики в одном файле хранить не мог?
Конкретизирую задачу: есть файлы. Количество закачек файла - это количество строк в файле. Тебе надо вывести файлы в порядке, соотв. количетсву закачек. Так?
-
Мдя... Любят же некоторые усложнять... А ты все счетчики в одном файле хранить не мог?
Конкретизирую задачу: есть файлы. Количество закачек файла - это количество строк в файле. Тебе надо вывести файлы в порядке, соотв. количетсву закачек. Так?
все правильно
-
Кидаем все в массив:
$massiv[$kol-vo_skachek]="путь до файла".
далее натравливаем f-ю
uksort ($massiv);
далее foreach
-
Кидаем все в массив:
$massiv[$kol-vo_skachek]="путь до файла".
до какого файла? Файл с миссиями только один: data/mission.txt
-
до какого файла?
Значит название миссии.
Чё придераешься-то???
"до какого файла?" написал, для случая со счётчиком скачивания файлов.
-
Подумайте пока над этим:
В массив надо занести $name
где $name = $count."~".$id;
затем сортировать массив, потом explode вывести $id.
Т.е. получится в массив просортируется в правильном порядке, и будет содержать все IDы по порядку.
И теперь надо вывести окончательный цикл, вроде:
for ($n=0; $n
-
Подумайте пока над этим
Мона и так.
-
А тип запроса ты проверяешь - HEAD или GET ?
(на всякий случай так :)
-
Пока я ждал ответа, сам уже придумал все:
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");
}