Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie wynikow wzgledem pewnej rubryki w tabelce
Forum PHP.pl > Forum > Gotowe rozwiązania
alpin
... kolejny problem , mam tabelke ktora wyswietla sie z tego kodu:

[php:1:6dfd73c235]<?php
####################### config #####################################

/// 10 dat do tylu z wynikow wziette
$tablica=file("wyniki.txt");
$wers= explode(';', $tablica[0]); $data1=$wers[0];
$wers= explode(';', $tablica[1]); $data2=$wers[0];
$wers= explode(';', $tablica[2]); $data3=$wers[0];
$wers= explode(';', $tablica[3]); $data4=$wers[0];
$wers= explode(';', $tablica[4]); $data5=$wers[0];
$wers= explode(';', $tablica[5]); $data6=$wers[0];
$wers= explode(';', $tablica[6]); $data7=$wers[0];
$wers= explode(';', $tablica[7]); $data8=$wers[0];
$wers= explode(';', $tablica[8]); $data9=$wers[0];
$wers= explode(';', $tablica[9]); $data10=$wers[0];
//

## nazwa pliku z wynikami ########################################
$plik_z_wynikami="wyniki.txt";
##########################################################

## nazwa katalogu z userami ########################################
$katalog="users";
##########################################################

## nazwa pliku z wynikami ########################################

$plik_z_typami='zzz/'.$data1.'.txt';
##########################################################
####################### koniec config #################################

########## FUNKCJE ###################
function wyswietl_typ_usera ($user, $data) {

$plik="users/$user/typy.txt";
$tablica=file($plik);

for($i=0;$i<count($tablica);$i++){
$linia=explode('|**|', $tablica[$i]);
if(trim($linia[0])=="$data") { $typ="$linia[1]"; }
}
//if ($typ=='') { $typ="-"; } else { "$typ<br>"; }
echo $typ;

$stan="niema";
$tablica2=file("wyniki.txt");
for($i=0;$i<count($tablica2);$i++){
$linia=explode(';', $tablica2[$i]);
if(trim($linia[0])=="$data") { $liczby_przed="$linia[1]"; $stan="jest";}
}
$liczby_po=explode('-', $liczby_przed);
$var1 = array_pop( $liczby_po );
$liczby_po[] = str_replace(array("rn", "n"), "", $var1) ;

if ($typ=='') {echo "<img src='baza/img0.gif'>"; } else {
if ($stan=="jest") {
if (in_array ("$typ", $liczby_po)) {
echo "<br><img src='baza/img2.gif'>"; $alpin="jest";
} else {
echo "<br><img src='baza/img1.gif'>"; $alpin="niema";
}
}
}
}

function skutecznosc($user) {
// data
$tablica=file("wyniki.txt");
$wers= explode(';', $tablica[0]); $data1=$wers[0];
$wers= explode(';', $tablica[1]); $data2=$wers[0];
$wers= explode(';', $tablica[2]); $data3=$wers[0];
$wers= explode(';', $tablica[3]); $data4=$wers[0];
$wers= explode(';', $tablica[4]); $data5=$wers[0];
$wers= explode(';', $tablica[5]); $data6=$wers[0];
$wers= explode(';', $tablica[6]); $data7=$wers[0];
$wers= explode(';', $tablica[7]); $data8=$wers[0];
$wers= explode(';', $tablica[8]); $data9=$wers[0];
$wers= explode(';', $tablica[9]); $data10=$wers[0];
//data end

$ile=0;
$naile=0;

for( $j = 0; $j <= 10; $j++) {
$plik="users/$user/typy.txt";
$tablica=file($plik);

for($i=0;$i<count($tablica);$i++){
$linia=explode('|**|', $tablica[$i]);
if(trim($linia[0])==${"data".$j}) { $typ="$linia[1]"; }
}

$tablica2=file("wyniki.txt");
for($i=0;$i<count($tablica2);$i++){
$linia=explode(';', $tablica2[$i]);
if(trim($linia[0])==${"data".$j}) { $liczby_przed="$linia[1]"; }
}
$liczby_po=explode('-', $liczby_przed);
$var1 = array_pop( $liczby_po );
$liczby_po[] = str_replace(array("rn", "n"), "", $var1) ;
if ($typ !='') { if (in_array ("$typ", $liczby_po)){$ile++;}else{$naile++;}}
}

## $ile <= trafione, naile<= nie tradione, nie typowanie nie uwzglednione
$wszystkie=$ile+$naile;
$wynik=$ile/$wszystkie*100;
echo "$ile/$wszystkie = "; printf('%.1f', $wynik); echo " %";
}



function pokaz_punkty($user) {
// data
$tablica=file("wyniki.txt");
$wers= explode(';', $tablica[0]); $data10=$wers[0];
$wers= explode(';', $tablica[1]); $data9=$wers[0];
$wers= explode(';', $tablica[2]); $data8=$wers[0];
$wers= explode(';', $tablica[3]); $data7=$wers[0];
$wers= explode(';', $tablica[4]); $data6=$wers[0];
$wers= explode(';', $tablica[5]); $data5=$wers[0];
$wers= explode(';', $tablica[6]); $data4=$wers[0];
$wers= explode(';', $tablica[7]); $data3=$wers[0];
$wers= explode(';', $tablica[8]); $data2=$wers[0];
$wers= explode(';', $tablica[9]); $data1=$wers[0];
//data end

$ile=0;
$naile=0;

for( $j = 0; $j <= 10; $j++) {
$plik="users/$user/typy.txt";
$tablica=file($plik);

for($i=0;$i<count($tablica);$i++){
$linia=explode('|**|', $tablica[$i]);
if(trim($linia[0])==${"data".$j}) { $typ="$linia[1]"; }
}

$tablica2=file("wyniki.txt");
for($i=0;$i<count($tablica2);$i++){
$linia=explode(';', $tablica2[$i]);
if(trim($linia[0])==${"data".$j}) { $liczby_przed="$linia[1]"; }
}
$liczby_po=explode('-', $liczby_przed);
$var1 = array_pop( $liczby_po );
$liczby_po[] = str_replace(array("rn", "n"), "", $var1) ;
if ($typ !='') { if (in_array ("$typ", $liczby_po)){ $ile++; $ile++; $ile++; }else{ if($ile!=0) {$ile--;}}}
}

## $ile <= trafione, naile<= nie tradione, nie typowanie nie uwzglednione
echo $ile;
}

########### koniec funkcji #############

echo "<table>
<tr bgcolor=#7777ee>
<td align=center><b>Pozycja</b></td>
<td align=center><b>Nick</b></td>
<td align=center><b>Punkty</b></td>
<td align=center><b>Skutecznosc</b></td>
<td align=center><b>$data10</b></td>
<td align=center><b>$data9</b></td>
<td align=center><b>$data8</b></td>
<td align=center><b>$data7</b></td>
<td align=center><b>$data6</b></td>
<td align=center><b>$data5</b></td>
<td align=center><b>$data4</b></td>
<td align=center><b>$data3</b></td>
<td align=center><b>$data2</b></td>
<td align=center><b>$data1</b></td>
</tr>";


#pobieranie pliku w tablice
$tablica=file($plik_z_typami);

# wyswietlanie
for ($i=0; $i<count($tablica); $i++) {

$a=$i % 2;
$k=$i+1;

$wers=$tablica[$i];
$kawalki=explode('|**|', $wers);
$user=$kawalki[0];
$typ=$kawalki[1];


if ($a==0)
echo "<tr bgcolor=#bbeeaa align=center>";
else
echo "<tr bgcolor="#aabb88" align="center">";
echo " <td align=center>$k</td>
<td align=center>$user</td>
<td align=center>"; pokaz_punkty($user); echo"</td>
<td align=center>"; skutecznosc ($user); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data10"); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data9"); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data8"); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data7"); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data6"); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data5"); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data4"); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data3"); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data2"); echo"</td>
<td align=center>"; wyswietl_typ_usera ($user, "$data1"); echo"</td>
</tr>";
}
echo "</table>";
?>[/php:1:6dfd73c235]
wynik mozna obejrzec tu: http://hajnowka.net/~alpin/bbb.php

w czym problem ? otoz jest rubryka PUNKTY, i chcialbym posortowac wersy wzgledem tych punktow, od najwiekszej ilosci do najmniejszej ,
przed przerobioniem zrobilem to funkcja sortujaca tablice:
array_multisort($tablica, SORT_DESC, SORT_NUMERIC);
punkty mialem zapisane w pliku i jeszcze przed wyswietleniem sortowalem tablice, teraz nie wiem jak to ( czy wogole ta funkcje) zastosowac w tym przypadku, prosze o jakies podpowiedzi, dzieki z gory
mike
Nie wgryzałem się w twój kod ale na pierwszy rzut oka problem sprowadza się do posortowania tablicy dwuwymiarowej.
A więc moja propozcja to skorzystać z funkcji mu_sort(), którą znajdziesz w manualu po opisem funkcji sort() w poście jednago z użytkowników.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.