Witam,
mam problem z wyświetlaniem stronicowania i przycisków next i prev.

Mam pętle która zwraca mi linki wszystkich wpisów w bazie (danej kategorii).
  1. <?php
  2. $i = 1;
  3. foreach ($get_realizacje->result() as $val) {
  4. ?>
  5. <a href="#" rel="<?php echo $val->id_realizacji?>" <?php if($val->id_realizacji == $id_realizacji){echo 'class="active"'; }?>><?php echo $i?></a>
  6. <?php
  7. $i++;
  8. }
  9. ?>

$id_ realizacji - to id konkretnie otwartej realizacji
$val->id_realizacji - to id wszystkich realizacji, (jedno id dla danego llinku wink.gif)

Zawsze mam linki do wszystkich realizacji, chciałbym do nich dorobić przyciski wstecz i dalej (które, będą pokazywać wcześniejszą lub następną realizacją -1 lub +1 ).
Chciałbym także jeśli będzie wybrana realizacja ostatnia z widocznego przedziału, to linki zaczną się od np. 5 pozycji wcześniejszych i skończą na 5 później.
Cały czas mają być wyświetlane przyciski wstecz i dalej, chyba że jest to pierwsza bądź ostatnia realizacja wtedy pomijamy któryś z przycisków.

Dotychczasowy efekt można zobaczyć tutaj.

W tej chwili jest 11 linków jak mógłbym rozwiązać wyświetlanie tego, żeby gdy znajduję się na 6 stronie widać nr od np. 2 - 10 i po bokach przyciski wstecz dalej, proszę o propozycje.

Edit 1:
wpadłem na pewien pomysł jednak nie wiem czy da radę tak to zrobić.
Może można stworzyć zapytanie które pobiera z bazy np. 5 rekordów mniej i 5 więcej od wskazanego warunku where id_realizacji = id_realizacji;

Tylko nie mogę wymyślić postaci takiego zapytania...

rozwiązałem problem za pomocą jQuery i styli css.
Przed i po pętli umieściłem dwa a href'y jako przyciski wstecz i dalej.
Dodatkowo dodałem parametry id i alt oraz domyslnie dla linków generowanych przez pętle display none;

  1. <a href="#" alt="" id="" class="prev" rel="" ><</a>
  2. <?php
  3. $i = 1;
  4. $ile_elem = count($get_realizacje->result());
  5. foreach ($get_realizacje->result() as $val) {
  6. ?>
  7.  
  8.  
  9. <a href="#" alt="<?php echo $i ?>" style="display: none" id="<?php echo $i ?>" rel="<?php echo $val->id_realizacji ?>" <?php
  10. if ($val->id_realizacji == $id_realizacji) {
  11. echo 'class="active links_menu"';
  12. }
  13. ?>><?php echo $i ?></a>
  14.  
  15.  
  16. <?php
  17. $i++;
  18. }
  19. ?>
  20. <a href="#" alt="" id="" class="next" rel="" >></a>




Tutaj cały jquery odpowiedzialny za wyświetlanie konkretnych numerów linków
  1. var numerek = parseInt($(".links_menu").attr("alt")); // numer aktualnie oglądanej realizacji
  2. var prev1 = numerek - 1; // numer relizacji poprzedzającej
  3. var next1 = numerek + 1; // numer realizacji następnej
  4.  
  5. // założenie że ma się na raz wyświetlać 13 linków (+ wstecz i next)
  6. if(numerek < 7){
  7. var num_1 = 13 - numerek;
  8. var max = numerek + num_1 // ile linków ma być wyświetlonych po aktualnie oglądanej realizacji jeżeli oglądana realizacja jest pierwszą z 6
  9. }else{
  10. var max = numerek + 6; //ile linków ma być wyświetlonych po aktualnie oglądanej realizacji (tak żeby oglądanej link zawsze był na środku)
  11. }
  12. if(numerek > <?php echo $ile_elem - 6 ?>){ // $ile_elem ilość wszystkich linków
  13. var num_2 = numerek - (<?php echo $ile_elem - 6 ?>);
  14. var min = (numerek - 6) - num_2 // ile linków ma być wyświetlonych po aktualnie oglądanej realizacji jeżeli oglądana realizacja jest ostatnią z 6
  15. }else{
  16. var min = numerek - 6; //ile linków ma być wyświetlonych przed aktualnie oglądaną realizacją (tak żeby oglądanej link zawsze był na środku)
  17. }
  18.  
  19. for(i=min; i<=max;i++){
  20. $("#"+i).css({"display":"inline"}); // pętla wyświetlająca tylko linki z pożądanego przedziału
  21. }
  22. var prev = $("#"+prev1).attr("rel");
  23. var next = $("#"+next1).attr("rel");
  24.  
  25. if(numerek > 1){
  26. $(".prev").attr('rel', prev);
  27. }else{
  28. $(".prev").css({'display':"none"}); // jeśli jesteśmy na pierwszej realizacji przycisk wstecz niewidoczny
  29. }
  30. if(numerek < <?php echo $ile_elem; ?>){
  31. $(".next").attr('rel', next);
  32. }else{
  33. $(".next").css({'display':"none"}); // jeśli jesteśmy na ostatniej realizacji przycisk dalej niewidoczny
  34. }



Jeśli ktoś ma lepszy pomysł jak można wyświetlić te linki proszę o podpowiedź
Rezultat działania można podejrzeć tutaj