Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa]Stronicowanie
piotrooo89
post
Post #1


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Jako że OOP od pewnego czasu znam czysto z teori postanowiłem napisać coś co mogłoby mi się przydać. Przerobiłem własny sturkturalny kod stronicowania i teraz prosze was o wszelkie uwagi, rady - konstruktywną krytykę - jak dla laika OOP.

index.php

  1. <?php
  2. include ('stronicowanie-class.php');
  3. include ('mysql.php');
  4.  
  5. if(empty($_GET['start']))
  6. {
  7.  $od = 1;
  8.  $_GET['page'] = 1;
  9. }
  10. else
  11. {
  12.  $od = mysql_escape_string($_GET['start']);
  13. }
  14.  
  15. $str = new Stronicowanie();
  16. $str->pokaz($od);
  17. $str->nawigacja($str->licz_rekordy());
  18. $str->pop_nas($_GET['start'], $str->licz_rekordy());
  19. ?>



stronicowanie-class.php

  1. <?php
  2. class Stronicowanie
  3. {
  4.  public $ile_na_stronie = 20;
  5.   
  6.  public function licz_rekordy()
  7.  {
  8.      $all = mysql_query('SELECT COUNT(*) FROM termin');
  9.      $ile = mysql_result($all, 0);
  10.      return $ile;
  11.  }
  12.  
  13.  public function pokaz($od)
  14.  {
  15.      $sql = mysql_query('SELECT * FROM termin LIMIT '.$od.', '.$this->ile_na_stronie.'');
  16.      while ($row = mysql_fetch_object($sql))
  17.      {
  18.          echo $row->id;
  19.          echo $row->data .'<br>';
  20.      }
  21.  }
  22.  
  23.  public function nawigacja($ile)
  24.  {
  25.      if($ile > $this->ile_na_stronie)
  26.      {
  27.          for($i=0 ; $i<ceil($ile/$this->ile_na_stronie) ; $i++) 
  28.          {
  29.              $b = $i + 1;
  30.              if ($_GET['page']==$b)
  31.              {
  32.                  echo '<a href="'.$_SERVER['PHP_SELF'].'?start='.($i*$this->ile_na_stronie).'&page='.($i+1).'">['.($i+1).']</a> | '; 
  33.              }
  34.              else
  35.              {
  36.                  echo '<a href="'.$_SERVER['PHP_SELF'].'?start='.($i*$this->ile_na_stronie).'&page='.($i+1).'">'.($i+1).'</a> | '; 
  37.              }
  38.          }
  39.      }
  40.  }
  41.  
  42.  public function pop_nas($naw, $ile)
  43.  {
  44.      $next = $naw + $this->ile_na_stronie;
  45.      $prev = $naw - $this->ile_na_stronie;
  46.   
  47.      if ($_GET['start'] == 0)
  48.      {
  49.          echo '<a href="'.$_SERVER['PHP_SELF'].'?start='.$next.'&page='.($_GET['page']+1).'">Następny ></a>';
  50.      }
  51.      elseif (($_GET['start'] > 0) && ($next < $ile))
  52.      {
  53.          echo '<a href="'.$_SERVER['PHP_SELF'].'?start='.$prev.'&page='.($_GET['page']-1).'">< Poprzedni</a> | '; 
  54.          echo '<a href="'.$_SERVER['PHP_SELF'].'?start='.$next.'&page='.($_GET['page']+1).'">Następny ></a>';
  55.      }
  56.      elseif ($next > $this->ile_na_stronie)
  57.      {
  58.          echo '<a href="'.$_SERVER['PHP_SELF'].'?start='.$prev.'&page='.($_GET['page']-1).'">< Poprzedni</a>';
  59.      }
  60.  }
  61. }
  62. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Tak jak napisał Cysiaczek, to funkcje opakowane w class {} (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Obiekt ma być ułatwieniem w pisaniu, ma być jak bardzo elastyczna funkcja. Do czego służy funkcja? Żeby nie pisać kilka razy tego samego. Co do obiektowości, ciężko mi to wytłumaczyć, ale polega ona na tym aby uprościć pisanie użytkownikowi. Przykład dobrego stronnicowania:
  1. <?php
  2. $iCount = mysql_query('SELECT ......');
  3. $oPager = new Pager($iCount, $_GET['page'], 20);
  4.  
  5. $rQuery = mysql_query('SELECt ...LIMIT '.$oPager->getLimit());
  6.  
  7. echo $oPager->getPager();
  8. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 15:30