Podział wyników na strony PHP i MySQL  
Przedstawianie wyników z zapytania w postaci długiej listy było by bardzo nie ciekawe dlatego stosuje się podział na strony skrypt poniżej dzieli wyniki zwrócone z zapytania na strony z wynikami gdzie $count określa ilość rekordów na stronie.
Listing
<?php
//Połączenie z mysql i wybranie bazy
$link = mysql_connect('localhost','user','passwd');
mysql_select_db('contacts',$link);
 
//Domyślne wartości, odpowiednio liczby rekordów na strone i przesunięcia
$count=25;
$offset=0;
 
//Pobranie danych z $_GET jezsli ustawione
if(isset($_GET['count']))$count = $_GET['count'];
if(isset($_GET['offset']))$offset = $count*$_GET['offset']; //numer strony
 
//Pobranie liczby rekordów
$sql = 'Select count(*) from contacts';
$result = mysql_query($sql,$link);
$r = mysql_fetch_array($result);
//Liczba stron, użycie ceil - zaokrąglenie w górę, w celu zapewnienia, że żadna strona się nie straci
$pages = ceil($r[0]/$count);
 
//Pobranie odpowieniej paczki
$sql = 'Select * from contacts Limit '.$count.' offset '.$offset.';';
$result = mysql_query($sql,$link);
 
//Początek tabeli
echo '<table><tr><th>Imie i nazwisko</th><th>Telefon</th><th>Mail</th></tr>';
 
 
//Pętla po wszystkich rekordach
while(($row=mysql_fetch_array($result))!=NULL){
echo '<tr><td>'.$row['name'].'</td><td>'.$row['phone']. '</td><td>'.$row['email'].'</td></tr>';
}
echo '</table>';
 
//Pętla po stronach
for($i=0;$i<$pages;$i++){
//jeśli obecna strona, nie twórz linku do strony
if($i*$count==$offset){
echo ' '.$i.' ';
}else{
echo '<a href="index.php?count='.$count.'&offset='.$i.'"> '.$i.' </a>';
}
}
?>
//Połączenie z mysql i wybranie bazy
$link = mysql_connect('localhost','user','passwd');
mysql_select_db('contacts',$link);
//Domyślne wartości, odpowiednio liczby rekordów na strone i przesunięcia
$count=25;
$offset=0;
//Pobranie danych z $_GET jezsli ustawione
if(isset($_GET['count']))$count = $_GET['count'];
if(isset($_GET['offset']))$offset = $count*$_GET['offset']; //numer strony
//Pobranie liczby rekordów
$sql = 'Select count(*) from contacts';
$result = mysql_query($sql,$link);
$r = mysql_fetch_array($result);
//Liczba stron, użycie ceil - zaokrąglenie w górę, w celu zapewnienia, że żadna strona się nie straci
$pages = ceil($r[0]/$count);
//Pobranie odpowieniej paczki
$sql = 'Select * from contacts Limit '.$count.' offset '.$offset.';';
$result = mysql_query($sql,$link);
//Początek tabeli
echo '<table><tr><th>Imie i nazwisko</th><th>Telefon</th><th>Mail</th></tr>';
//Pętla po wszystkich rekordach
while(($row=mysql_fetch_array($result))!=NULL){
echo '<tr><td>'.$row['name'].'</td><td>'.$row['phone']. '</td><td>'.$row['email'].'</td></tr>';
}
echo '</table>';
//Pętla po stronach
for($i=0;$i<$pages;$i++){
//jeśli obecna strona, nie twórz linku do strony
if($i*$count==$offset){
echo ' '.$i.' ';
}else{
echo '<a href="index.php?count='.$count.'&offset='.$i.'"> '.$i.' </a>';
}
}
?>
Dodano przez: igor  
Ranga: Administrator serwisu Punktów: 0
Ranga: Administrator serwisu Punktów: 0
Komentarze użytkowników
	    A czy dało by się tak zrobić aby pierwsza strona zaczynała się od 1 a nie od zera? Byłbym bardzo wdzięczny gdyby powiedział Pan jak to zrobić :)
	
	
		autor: .... | 313 | 2009-07-05 16:33:25
	
	    Kod masz niżej 
	
	
	
		autor: Igor | 317 | 2009-07-05 17:28:06
	
	    Działa dzięki:)
	
	
		autor: .... | 318 | 2009-07-05 23:16:57
	
	    A dało by się tak zrobić aby http://nazwastrony.pl/index.php?count=5&offset=0 aby pierwsza strona nie była równa offset = 0 tylko offset =1
	
	
		autor: .... | 321 | 2009-07-09 01:53:17
	
	    Halo? odpowie mi ktoś na mój poprzedni komentarz?
	
	
		autor: .... | 348 | 2009-07-15 15:41:04
	
	    Zamień to:
if(isset($_GET['offset']))$offset = $count*$_GET['offset']; //numer strony
Na to:
	
	
	
		autor: Ktoś | 482 | 2009-09-02 19:53:28
	
	    Skrypt jest dobry.
	
	
		autor: dj... | 5216 | 2010-02-17 19:28:58
	
	    cieniutko i dałem za to całego zeta
	
	
		autor: vincent | 12357 | 2011-03-19 23:27:31
	
:: Losowe artykuły 

:: Wymiana linków 
    
	Modowe inspiracje |
        Android Gry i Aplikacje |
        ZaplanujTransport.pl: Przeprowadzki, transport, aukcje |
        Logo dla firmy |
        Change Tires - Car Weather Forecast Reminder |
        Laminas: MVC Framework for PHP |
        IT Books Reviews and Programming: JS, JAVA, PHP, ANDROID, CSS | 
        Katalog roślin |
        Programming articles: JAVA, PHP, C++, Python, JavaScript |
        Kancelaria Adwokacka Łukasz Huszno
        
    

 
  
				

 
                             
 


 
                        
 
		 
	