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");
 }