Jump to content
php.lv forumi

Top5 no .dat (domaajams taspats kas .txt) uz web


Recommended Posts

Man mircaa ir skripts kuram ir komanda !punkti niks 3 un tas pieliek 3 punktus klaat cilveekam ar noraadiito niku. Tas viss saglabaajaas failaa points.dat un tad var apskatiit mircaa ar komandu !top5. Lieta taada ka vaidzeetu lai sho top5 var apskatiit arii webaa. Caur webu var piekļūt šim failam ja zin adresi. Mans jautājums. Vai kāds nevarētu uzrakstīt kādu skriptiņu kas izvadītu informāciju no ši faila šādā formātā

 

Niks Punkti

Betmens 23

Kaamis 22

Arnolds 21

Biete 20

Fantastika 19

 

Viņam vaidzētu sakārtoties no cilvēka kam ir visvairāk punkti līdz vismazāk. Teksta failā tas saglabājas šādi

 

Niks

1

Niks

2

 

Tas 1 un 2 ir punktu skaits. Viņi nesakārtojas tā pēc kārtas kuram mazāk punktu līdz kuram vairāk. Tas ir vienkārši pēc pievienošanas vēstures. Kuru pievienoja pirmo tas ir augšā vai apakšā, nez ^^, bet tas nav īpaši svarīgi.

Link to post
Share on other sites

Niks tajā failā var atkārtoties ? Respektīvi, vai pievienojot punktus lietotājam, kam jau ir pievienoti punkti, tie tiek saskaitīti kopā un failā paliek tikai viens attiecīgais ieraksts, vai arī ar katru punktu pievienošanu tiek pievienots jauns ieraksts ?

Link to post
Share on other sites

<?php
$arr = file('faila_nosaukums');

$top = array();

for($i = 0; $i < count($arr); $i++) {
if ($i % 2 == 0) {
	$top[$arr[$i + 1]] = $arr[$i];
}
}

krsort($top);
$top = array_slice($top, 0, 5, true);

foreach($top as $k => $v) {
echo $v.' - '.$k.'<br />';
}
?>

 

Tikai šeit nav paredzēta iespēja, ka diviem vai vairākiem lietotājiem var būt vienāds punktu skaits.

Link to post
Share on other sites

nu vaidzeetu lai vareetu, bet pilnigi vienalga kursh ir augstaak ar vienadiem punktu skaitiem. ak jaa.. un lai vinsh sakaarto taa ka tas kuram ir vairaak ir 1 vietaa, un taa..

 

1. niks 10

2. niks 9

3. niks 8

4. niks 7

5. niks 6

Edited by spermer_co
Link to post
Share on other sites

Kaut kā šādi. No tevis pieci lati ;).

 

<?php
$arr = file('faila_nosaukums');

$top = array();

for($i = 0; $i < count($arr); $i++) {
if ($i % 2 == 0) {

	if(!isset($top[$arr[$i + 1]])) {
		$top[$arr[$i + 1]] = $arr[$i];
	} else {
		$top[$arr[$i + 1]] .= ' / '.$arr[$i];
	}

}
}

krsort($top);
$top = array_slice($top, 0, 5, true);

foreach($top as $k => $v) {
echo $v.' - '.$k.'<br />';
}
?>

Link to post
Share on other sites

njaa.. viss bija labi liidz kaads sasniedza 10 punktus.. ja punkti ir vairak par 10 (parbaudits uz 10 un 11) tad vinsh uztver to kaa zemaaku vietu un manaa top5 vispar neparadijas.. iespejams vinsh buutu kautkur top10 vai top20..

EDIT:

nomainiju lai raada top20 un es sapratu to ka 10 un 11 ir mazaaks par 2

 

Fobz - 9

WyB - 5

SSJGoku - 4

xrusts - 3

^D3v1L^ / liiv` - 2

Kzlv`spermis - 11

icky - 10

ayck - 1

 

 

Te man nav top20 jo tik daudz cilveku anv

Edited by spermer_co
Link to post
Share on other sites

OK shis straadaa

<?php
$arr = file('points.dat');

$top = array();

for($i = 0; $i < count($arr); $i++) { 
if ($i % 2 == 0) { 

	$score = (integer)$arr[$i + 1]; 

	if(!isset($top[$score])) { 
		$top[$score] = $arr[$i]; 
	} else { 
		$top[$score] .= ' / '.$arr[$i]; 
	} 

} 
}

krsort($top);
$top = array_slice($top, 0, 5, true);

foreach($top as $k => $v) {
echo $v.' - '.$k.'<br />';
}
?>

Link to post
Share on other sites
×
×
  • Create New...