Strankování

 2013-06-21 00:00:00
 Dmitry Burobin

Chtěl bych Vám ukázat, jak se dá udělat jednoduché strankování ( procedurálně ), pokročilé strankování Vám ukážu až v dalším článku ( pokročilé, protože budeme používat OOP a vytvoříme si třídu Strankovani, která bude velice dynamická ), tento článek je hlavně proto, abyste pochipoli ten princip. A použijí k tomu komentáře, které jsme vytvořili ve článku Systém komentářů pomocí jQuery a Ajax, ale určitě to budete moci přizpůsobit podle Vašich potřeb.

Strankování.

Princip je založen na tom, že potřebujeme vypočítat minimální hodnotu, od které se budou vybírat data z databáze, kterou následně dosadíme do MySQL příkazu pro výběr všech záznamu.

<?php
//počet vypsaných výsledků na jednu stránku, toto je statická hodnota
$max 5

// vybereme z tabulky počet záznamu, které budeme chtit zobrazit
$query mysql_query(" SELECT COUNT(`id`) FROM `comments` "); 
if( !
$query ) { exit(" MySQL chyba. "); }
else {
        
    if( 
mysql_num_rows$query ) > ) {
        
        
// do proměnne pocet_zaznamu uložime výsledek MySQL přikazu
        
$pocet_zaznamu mysql_result$query); 
        
// vypočítame počet stránek
        
$pocet_stranek ceil$pocet_zaznamu/$max ); 
        
        
// do proměnne page uložíme hodnotu $_GET parametru URL, což je číslo konkretní stránky
        
$page = isset( $_GET['page'] ) ? mysql_real_escape_string$_GET['page'] ) : '1'
        

        if( empty( 
$page ) || $page == '' ) {
            
            
// do proměnne min uložíme počáteční záznam, od kterého budeme vypisovat výsledky z databáze,
            // pokud je roven 0, tak začneme vypisovat data od prvního záznamu
            
$min 0
            
        } else {
            
            
// pokud parametr $_GET['page'] existuje, tzn. že je člověk na nějaké jiné stránce než je počáteční
            // pak podle jednoduchého vzorečku vypočítame min
            
$min = ( $page $max ) - $max
            
        }
    
    } else {
        exit(
" V tabulce neni zadny zaznam. ");
    }
        
}

?>
Tento kód přidejte na začátek souboru comment.php, aby vypadal takto:
<?php
require_once 'db.php';

$max 5;

$query mysql_query(" SELECT COUNT(`id`) FROM `comments` "); 
if( !
$query ) { exit(" MySQL chyba. "); }
else {
        
    if( 
mysql_num_rows$query ) > ) {
        
        
$pocet_zaznamu mysql_result$query); 
        
$pocet_stranek ceil$pocet_zaznamu/$max ); 
        
        
$page = isset( $_GET['page'] ) ? mysql_real_escape_string$_GET['page'] ) : '1'

        if( empty( 
$page ) || $page == '' ) {
            
            
$min 0
            
        } else {
            
            
$min = ( $page $max ) - $max;
            
        }
    
    } else {
        exit(
" V tabulce neni zadny zaznam. ");
    }
        
}


$query mysql_query("
         SELECT `id`,`parent_id`,`name`,`komentar`, 
         DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add
         FROM `comments_26` ORDER BY `id` ASC LIMIT "
$min .","$max ."  
         "
);
if(!
$query) { echo mysql_error() . " - " mysql_errno(); }
else {

    while( 
$result mysql_fetch_assoc($query) ) {
        
        
$data[$result['id']] = $result;
        
    }
    .
    .
    .
?>
a všiměte si, že jsem upravil příkaz pro výběr všech komentářů, doplnil jsem ho o operátor LIMIT, který jako parametry má minimální hodnotu ( počáteční ), od které se výběr dat začne a maximální hodnotu, do které se ten vyběr bude pokračovat. Tímto vybereme potřebný počet komentářů.

index.php

Na hlavní stránku přidáme několik řádků kódu, které zobrazí číslice.

<?php
/*Soubor pro vybírání komentářů z databáze*/
require_once 'comment.php';
?>
<!DOCTYPE html>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">

<
head>
    <
title>Systém komentářů.</title>
    <
meta charset="utf-8" >
    
    <
link rel="stylesheet" href="style.css"> <!-- soubor se styly -->
    <
script src="jquery-1.7.1.min.js"></script> <!-- připojení jquery -->
    <script src="comment.js"></script> <!-- funkce potřebné pro přidávání komentářů -->
    
</head>
<body>
<ul id="commentWrapper">
<?php
/*Zde v proměnné $comments jsou komentáře*/
echo $comments;
?>
<!-- formulář pro přidávání komentářů -->
</
ul>    
<?php
/********************************NOVÉ****************************/

// for cyklem projdeme všechny stránky a zobrazíme je na obrazovce, která je aktivní bude tučna.
for( $i=1$i <= $pocet_stranek$i++ ) { 
     
     
// stránka neaktivní, tudiž link na ní
    
if( $page != $i ) { echo '<a href="?page='.$i.'">['.$i.']</a>&amp;nbsp;'; }  
    
// aktivní stránka, tudiž bude zobrazená tučně 
    
if( $page == $i ) { echo '<strong>['.$i.']&amp;nbsp;</strong>'; } 
    
}

/********************************KONEC NOVÉHO****************************/
?>

    <div id="commentBox">
        <
input class="validate" type="text" name="name" >
        <
input id="parent" type="hidden" name="parent_id" value="">
        <
div class="commentText">
            <
textarea name="text"></textarea>
        </
div>
        <
button>Přidat</button><img class="loader" src="loader.gif">
    </
div>
</
body>
</
html>

Závěr

Chtěl bych poděkovat uživateli RomanGrigar, který mi nabídnul toto téma. V dalším článku Vám ukážu pokročilé strankování s použitím OOP, vytvořime si třídu Strankovani.

Systém Orphus
Napište komentář.
Celkem komenrářů(0)