Jump to content
kooza

[Inne] Oryginalna paginacja w phpBB2 by przemo

Recommended Posts

kooza

Dla tych co nie wiedzą, jak dodać paginacje do kodu. Paginacja (stronicowanie wyników sql na stronie).

Przedstawię to wszystko na kodzie zaporzyczonych z top5 by lui "ostatnie tematy"

    $sql = 'SELECT topic_id, topic_title, topic_time

    FROM ' . TOPICS_TABLE . '

    WHERE forum_id AND (topic_status <> 2)

    ORDER BY topic_time DESC

    LIMIT 5';

mysql_query($sql)

    or die(mysql_error());


$i=0;

while ($row = $db->sql_fetchrow($result))

{

    $posttime = create_date($board_config['default_dateformat'], $row['topic_time'], $board_config['board_timezone']);

    $i++;

    if (strlen($row['topic_title']) > 25)

    {

    $topic_title = substr($row['topic_title'], 0, 25)."...";

    }

    else

    {

    $topic_title = $row['topic_title'];

    }

    $template->assign_block_vars('tem', array(

        'LI' => $i+0,

        'POSTTIME' => $posttime,

        'URL' => '' . $topic_title . '')

    );

} [/code]


przed pobieraniem kodu sql dodajemy, czyli przed tym 

[code]$sql = 'SELECT topic_id, topic_title, topic_time
dodajmy
$start = intval($_GET['start']);
poźniej dodajemy drugie podobne zapytanie takie jak mamy w kodzie wyżej. i zliczamy ile jest wyników ogółem.
    $sql = 'SELECT topic_id, topic_title, topic_time

    FROM ' . TOPICS_TABLE . '

    WHERE forum_id AND (topic_status <> 2)

    ORDER BY topic_time DESC';

    if ( !($result = $db->sql_query($sql)) )

    {

    message_die(GENERAL_ERROR, 'error', '', __LINE__, __FILE__, $sql);

    }

    $paginacja = $db->sql_numrows($result); 
później to nasze sql zamieniamy, czyli to
 $sql = 'SELECT topic_id, topic_title, topic_time

    FROM ' . TOPICS_TABLE . '

    WHERE forum_id AND (topic_status <> 2)

    ORDER BY topic_time DESC

    LIMIT 5';
na:
    $sql = 'SELECT topic_id, topic_title, topic_time

    FROM ' . TOPICS_TABLE . '

    WHERE forum_id AND (topic_status <> 2)

    ORDER BY topic_time DESC

    LIMIT ' . $start . ', '.$perpage.''; 
później po zamknięciu pętli while dodajemy.
generate_pagination('ostatnie.' . $phpEx, $paginacja, 10, $start, true);
a w tpl na samym dole dodajemy:
{PAGINATION}
i cieszymy się nową paginacją. :D Całość kodu powinna wyglądać tak.
    $sql = 'SELECT topic_id, topic_title, topic_time

    FROM ' . TOPICS_TABLE . '

    WHERE forum_id AND (topic_status <> 2)

    ORDER BY topic_time DESC

    LIMIT 5';

 if ( !($result = $db->sql_query($sql)) ) 

    { 

    message_die(GENERAL_ERROR, 'error', '', __LINE__, __FILE__, $sql); 

    } 

    $paginacja = $db->sql_numrows($result); 

$sql = 'SELECT topic_id, topic_title, topic_time

    FROM ' . TOPICS_TABLE . '

    WHERE forum_id AND (topic_status <> 2)

    ORDER BY topic_time DESC

LIMIT ' . $start . ', 10';

 $result = mysql_query($sql) 

    or die(mysql_error());

$i=0;

while ($row = $db->sql_fetchrow($result))

{

    $posttime = create_date($board_config['default_dateformat'], $row['topic_time'], $board_config['board_timezone']);

    $i++;

    if (strlen($row['topic_title']) > 25)

    {

    $topic_title = substr($row['topic_title'], 0, 25)."...";

    }

    else

    {

    $topic_title = $row['topic_title'];

    }

    $template->assign_block_vars('tem', array(

        'LI' => $i+0,

        'POSTTIME' => $posttime,

        'URL' => '' . $topic_title . '')

    );

generate_pagination('ostatnie.' . $phpEx, $paginacja, 10, $start, true);

} [/code]

w razie jakichkolwiek problemów pisać w dziale "Problem ze skryptem"

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
×
×
  • Create New...