Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie newsow
Forum PHP.pl > Forum > Przedszkole
malakacrys
Witajcie mam scrypt wyswietlania newsow z kilku plikow textowych jednak wyswietla on kolejno zawartosc plikow chronologicznie najpierw bierze pod uwage pliki zgodnie z data utworzenia potem wyswietla wszystkie newsy z pliku i tak pokolei wyswietla mi plik po pliku

Chcialbym zeby ladowal wszsytkie newsy z wszystkich plikow do tablicy sortowal wg daty i dopiero wypisywal

Moj scrypt wyswietlania wyglada tak
[php:1:e8da3668fa]
<?
$bg="lightblue" ;
echo "<div align="center"><font color="lightblue" size="4"><b>..:: Serwis Newsów ::..</b></font><br>" ;

$dir = "./news"; // katalog w ktorym sa te pliki
if( !( $d = opendir( $dir ) ) )
{
die( "Nie mogę otworzyc katalogu" );
}
while( $txt = readdir( $d ) )
{
if( $txt != "." && $txt != ".." )
{
echo "$txt<br>"; //wyswietlamy nazwe pliku
$table = file($dir."/".$txt);
$total = count($table);
for ($i=0; $i<$total; $i++)
{
$data=explode("|", $table[$i]);
echo "<table align=center border="0">
<tr><td colspan="2" bgcolor="$bg" width="400">
<b>Tytul:</b>$data[0]</td></tr>
<tr><td bgcolor="$bg" width="400"> $data[3] | $data[4]</td></tr>
<tr><td bgcolor="$bg" width="400">$data[1]</td></tr>
<tr><td bgcolor="$bg" width="400"><b>Autor:</b>$data[2]<br></td></tr>
</table>";
}
}
}
closedir( $d );
?>
[/php:1:e8da3668fa]
pomozcie
mike
wklej wszystko do tablicy, w ten sposób że każdy wiersz jest wierszem z pliku, podzielony funkcją explode na tablicę. W ten sposób uzyskasz tablicę dwuwymiarową. Potem skorzystaj z funkcji z manuala :
  1. <?php
  2. function array_qsort2 (&$array, $column=0, $order=SORT_ASC, $first=0, $last= -2) 
  3. { 
  4. // $array - the array to be sorted 
  5. // $column - index (column) on which to sort 
  6. // can be a string if using an associative array 
  7. // $order - SORT_ASC (default) for ascending or SORT_DESC for descending 
  8. // $first - start index (row) for partial array sort 
  9. // $last - stop index (row) for partial array sort 
  10.  
  11. if($last == -2) $last = count($array) - 1; 
  12. if($last > $first) { 
  13.  $alpha = $first; 
  14.  $omega = $last; 
  15.  $guess = $array[$alpha][$column]; 
  16.  while($omega >= $alpha) { 
  17.  if($order == SORT_ASC) { 
  18.  while($array[$alpha][$column] < $guess) $alpha++; 
  19.  while($array[$omega][$column] > $guess) $omega--; 
  20.  } else { 
  21.  while($array[$alpha][$column] > $guess) $alpha++; 
  22.  while($array[$omega][$column] < $guess) $omega--; 
  23.  } 
  24.  if($alpha > $omega) break; 
  25.  $temporary = $array[$alpha]; 
  26.  $array[$alpha++] = $array[$omega]; 
  27.  $array[$omega--] = $temporary; 
  28.  } 
  29.  array_qsort2 ($array, $column, $order, $first, $omega); 
  30.  array_qsort2 ($array, $column, $order, $alpha, $last); 
  31. } 
  32. } 
  33. ?>

a potem posortuj twoją całą tablicę za pomocą tej funkcji względem elementu z datą.
Fufkcję w orginale znajdziesz w opisie funkcji sort w komentarzach wżytkowników gdzieś na dole strony
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-2025 Invision Power Services, Inc.