Witajcie, do tej pory stosowałem taki kod:
  1. <?php
  2. $l_odp_nastronie = 5; //liczba rekordów na jedną stronę
  3. $ile_rekordów = 100; //liczba rekordów w pliku
  4. $a = $_GET['a']; //numer strony
  5. $do = $ile_rekordow-(($a-1)*$l_odp_nastronie); //zakresy rekordów
  6. $od = $do-$l_odp_nastronie;
  7.  
  8. while(!feof($uchwyt)){
  9.  $linia = rtrim(fgets($uchwyt));
  10.  $licznik++;
  11.  if($licznik>$od && $licznik<=$do){
  12. $tabliczka[] = $linia; //dane, które mają być wyświetlone na stronie
  13.  }
  14. }
  15. ?>
- który ładnie mi porcjował plik w zależności od zmiennej $a. Wszystko pięknie, tylko wpadłem (może na niezbyt mądry) pomysł, żeby wyświetlać rekordy (konkretnie mają to być newsy) na podstawie statusu - statusy przewiduje trzy: zwykły, przyklejony na stałe i przyklejony na 24 godziny - oczywiście newsy przyklejone będą wyświetlane na górze, a reszta dalej będzie porcjowana. Wymyśliłem coś takiego:
  1. <?php
  2. $przyklejone=array();$tabliczka=array();$przyklejone24=array();
  3. while(!feof($p_newsy)){
  4.  ++$licznik;$przyk='';
  5.  $linia = rtrim(fgets($p_newsy));
  6.  list($aut,$dat,$tyt,$tre,$stat,$ide) = explode("||",$linia); //$stat = status newsa
  7.  if($stat==2){array_unshift($przyklejone,$linia);$przyk=1;} //0 to zwykły, 1 - 24h 2 - na zawsze
  8.  if($stat==&& $dat>$dat_roznica){array_unshift($przyklejone24,$linia);$przyk=1;}
  9.  if($licznik>$od && $licznik<=$do && $przyk!=1){array_unshift($tabliczka,$linia);}
  10. }//koniec pętli while
  11. ?>

I działa, jednak problem jest następujący:
- chciałbym, żeby liczba rekordów wyświetlana na jednej stronie była stała, niezależnie od liczby przyklejonych newsów

Teraz wyświetla przyklejone+zwykłe, dodatkowo jeśli w zakresie są przyklejone newsy, to ich nie wyświetla. Przykład: news 8 i 10 są przyklejone. Gdy wyświetlamy zakres 5-10 wyświetlane są dwa przyklejone + 5-2(bo przyklejone pomija, żeby się nie dublowały) z zakresu = 5. Gdy wyświetlamy zakres 0-5 wyświetlane są dwa przyklejone + 5 zwykłych = 7.

Da się to jakoś rozwiązać nie rezygnując z wydajności? Obawiam się, że będę musiał zrezygnować z użycia tej opcji. Mam pewnien pomysł - tworzyć "paczki" po 5 rekordów i je zliczać, jednak jak to powiązać z numerem strony zakresem rekordów w pliku? I czy to będzie wydajne?

P.S > Wiem, że baza jest lepsza etc. ale tu ma być plik i amen.