Извеждане и подреждане на резултати от файл + странициране
Публикувана от smilev на January 12 2011 09:45:19

Разширена новина
Така ето какво представлява урокът.
Примерно имаме файла example.txt.
Той съдържа:


Stoqn|15
Go6o|123
Pe6o|3
Hristo|33
Rumen|10
Nqkaf_si|333
Druga|222



Така както виждате той се съдържа от имена и цифри.
От ляво на "|" са имената на потребителите примерно, а от дясно да кажем са точките им :)
Целта ни е да направим странициране и подреждане по точки.

Ето как ще стане това. Просто си направете един файл с подобни на горните данни и страница с долният код, който ще изкарва тези данни.

[code]
<?php
$file = "example.txt"; // тук пишете файла от, който ще четем
$str = 3; // по колко резултата да изкарва на страница

// тук взимаме информацията от файла
$filesize = @filesize($file);
$fp = @fopen ($file ,"r");
$text = @fread($fp,$filesize);
@fclose($fp);

$razdelqne = explode("n",$text); // разделяме файла на редове
$kolkooo = count($razdelqne); // преброяваме колко редове съдържа файла
$i = 0;
while($i < $kolkooo) {
$line = explode("|",$razdelqne[$i]);
$masiv["$line[0]"] = $line[1]; // вкарваме всяко едно име с неговите точки в масив
$i++;
}
natsort($masiv); // подреждаме масива по-големина на точките
$masiv = array_reverse($masiv); // обръщаме стойностите в масива.
// Ако желаете да започне да показва потребителтие с най-малко точки просто сложете "#" пред горната функция
// Пример: #$masiv = array_reverse($masiv);


$masiv = array_chunk($masiv, $str,TRUE); // разделяме масива на части за да се осъществи страницирането

// определяме на колко страници да извеждаме резултатите
$stranici = floor($kolkooo / $str);
if (($kolkooo % $str) > 0) { $stranici++; }

// правим проверка за избраната страница
if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] <= $stranici) {
$page = $_GET['page']; // присвояваме избраната страница
} else {
$page = 1; // ако не сме избрали страница се задава по подразбиране
}

$m = $page - 1; // определяме от коя стойност да започне масива
foreach ($masiv[$m] as $key => $value) {
echo "Потребител: <b>$key</b>, Точки: <b>$value</b><br />"; // изкарваме резултатите Може да ги променяте.
}

// Тук извеждаме страниците
echo "<br><br>Страници: ";
for ($i=1;$i<=$stranici;$i++) {
if ($page != $i) {
echo "<a href="?page=$i">$i</a> ";
} else {
echo "$i ";
}
}
?>
[/code]




Надявам се урокът да Ви е бил полезен :)