kooza 18 Napisano 3 Sierpnia 2012 Udostępnij Napisano 3 Sierpnia 2012 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ą. 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" Odnośnik do odpowiedzi Udostępnij na innych stronach
Rekomendowane odpowiedzi