Я как бы новичок в Bootstrap, я пытаюсь реализовать разбиение на страницы на одном из разделов моей страницы, чтобы правильно представлять данные. Кто-нибудь может помочь?
Ниже приведен снимок того, как выглядит код прямо сейчас. Как я могу реализовать разбиение на страницы так, чтобы отображалось только 10 записей? Благодарю.
<section class="success" id="all-confessions"> <div class="container"> <div class="row"> <div class="col-lg-12 text-center"> <h2>All Confessions</h2> <hr class="star-light"> </div> </div> <div class="row"> <div class="row text-left"> <?php $allconfession = mysql_query("SELECT * FROM collection ORDER BY date DESC"); while($result2 = mysql_fetch_array($allconfession)) { $id = $result2['id']; ?> <div class="col-md-3 col-md-offset-1"> <h5>#<?php echo $id; ?></h5> </div> <div class="col-md-10 col-md-offset-1"> <p class="para-confess"> <?php echo $result2['type'] ." from ". $result2['college'] ." of ". $result2['department'] ." confessed ". $result2['confession']; ?> </p> <div class="text-left"> <?php if(isset($_COOKIE['uname'])) { ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="text" name="cid" style="display: none;" value="<?php echo $id; ?>"> <button type="submit" class="btn btn-success fa fa-thumbs-up" name="like"> Cool</button> <button type="submit" class="btn btn-warning fa fa-thumbs-down" name="dislike"> WTF</button> </form> <?php } ?> </div> <div class="text-right"> <i class="fa fa-thumbs-o-up"> <?php $likes = mysql_query("SELECT COUNT(*) FROM activity WHERE cid = $id AND ld = 1"); $alikes = mysql_fetch_row($likes); echo $alikes[0]; ?> </i> <i class="fa fa-thumbs-o-down"> <?php $dislikes = mysql_query("SELECT COUNT(*) FROM activity WHERE cid = $id AND ld = 0"); $adislikes = mysql_fetch_row($dislikes); echo $adislikes[0]; ?> </i> </div> <hr/> </div> <?php } ?> </div> </div> </div> </section>
Ты довольно далеко.
Как минимум, вам нужно сделать следующее.
Вот какой простой код разбивки на страницы, который я использовал много раз в сочетании с Bootstrap.
http://www.a2zwebhelp.com/php-mysql-pagination
Просто опустите стили и примените классы Bootstrap к элементам. Но вы не можете просто добавить статический html и ожидать, что он будет работать без какой-либо логики бэкэнд. Bootstrap предоставляет только способ стилизации страницы, но вы должны ее построить.
$page_no=$_POST['page_no'];//page number $limit=$_POST['limit'];//number of data $limit1 = $page_no*$limit; //calculate the limit $start = $limit1-$limit; //calculate the start point $sql = "select * from example limit $start,$limit";// query
используйте код, который поможет
Я столкнулся с такой же ситуацией, последовал за статьей и скорректировал ее для моего использования. Вот что вам нужно для вашего кода.
Протестировано с помощью Bootstrap v3.3.5.
Прежде всего : вы должны изменить свою mysql_query()
. Это расширение было устарело в PHP 5.5.0, и оно было удалено в PHP 7.0.0. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. Подробнее читайте здесь .
При этом перейдем к нашему PHP-коду.
PHP (обрабатывает запросы MySQL и генерирует HTML-код разбивки на страницы)
Примечание. Вы можете изменить целевую страницу с помощью переменной $targetpage
.
//PAGINATION// $sql = mysqli_query("select * from collection"); $total = mysql_num_rows($sql); $adjacents = 3; $targetpage = "$_SERVER['PHP_SELF']"; //your file name $limit = 10; //how many items to show per page if(isset($_GET['page'])) { $page = $_GET['page']; }else{ $page = 0; } if($page){ $start = ($page - 1) * $limit; //first item to display on this page }else{ $start = 0; } /* Setup page vars for display. */ if ($page == 0) $page = 1; //if no page var is given, default to 1. $prev = $page - 1; //previous page is current page - 1 $next = $page + 1; //next page is current page + 1 $lastpage = ceil($total/$limit); //lastpage. $lpm1 = $lastpage - 1; //last page minus 1 $sql2 = "SELECT * FROM collection"; $sql2 .= " order by date limit $start ,$limit "; $sql_query = mysqli_query($sql2); /* CREATE THE PAGINATION */ $pagination = ""; if($lastpage > 1) { $pagination .= "<ul class='pagination'>"; if ($page > $counter+1) { $pagination.= "<li><a href=\"$targetpage?page=$prev\"><</a></li>"; } if ($lastpage < 7 + ($adjacents * 2)) { for ($counter = 1; $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } } elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some { //close to beginning; only hide later pages if($page < 1 + ($adjacents * 2)) { for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } $pagination.= "<li>...</li>"; $pagination.= "<li><a href=\"$targetpage?page=$lpm1\">$lpm1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=$lastpage\">$lastpage</a></li>"; } //in middle; hide some front and some back elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { $pagination.= "<li><a href=\"$targetpage?page=1\">1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=2\">2</a></li>"; $pagination.= "<li>...</li>"; for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } $pagination.= "<li>...</li>"; $pagination.= "<li><a href=\"$targetpage?page=$lpm1\">$lpm1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=$lastpage\">$lastpage</a></li>"; } //close to end; only hide early pages else { $pagination.= "<li><a href=\"$targetpage?page=1\">1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=2\">2</a></li>"; $pagination.= "<li>...</li>"; for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } } } //next button if ($page < $counter - 1) $pagination.= "<li><a href=\"$targetpage?page=$next\">></a></li>"; else $pagination.= ""; $pagination.= "</ul>\n"; }
Теперь, когда у нас есть разбиение на страницы, просто назовите его, где хотите:
HTML
<div class="row"> <div class="col-md-12 text-center"> <?php echo $pagination ?> </div> </div>
Ваши элементы <a>
получат href=targetPage?page=pageNumber
ИСТОЧНИК : http://www.a2zwebhelp.com/php-mysql-pagination
Надеюсь, это поможет!
Недавно я сделал что-то подобное с бутстрапом, для достижения этого я использовал гибкие данные. вот ссылка здесь
вещи, с которыми я столкнулся,
Во-первых, узнайте что-нибудь о PDO http://php.net/manual/en/book.pdo.php . В моем решении я предполагаю, что вы используете PDO.
Первое, что вам нужно сделать, это определить, сколько строк на самом деле находится в БД.
$nbOfResults = $pdo->query('select count(*) from collection')->fetchColumn();
Затем установите ограничение на количество объектов на странице.
$entitiesPerPage = 10;
Теперь давайте определим, сколько страниц должно быть. Сначала я делю количество результатов по entityPerPage. Предположим, что есть 202 результата. Разделение его на 10 (сущностей на страницу) приведет к 20 страницам (отбрасывается в int). Однако осталось еще 2 объекта. Вот почему я должен проверить modulo и добавить еще одну страницу, если это необходимо.
$nbOfPages = intval($nbOfResults / $entitiesPerPage); if( ($entitiesPerPage % $nbOfResults) !== 0 ) { $nbOfPages += 1 }
Теперь мы готовы построить разбивку на страницы. Но сначала нам нужно иметь переменную, содержащую текущую страницу.
$currentPage = $_GET['page'];
Или более элегантным способом.
$currentPage = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_NUMBER_INT);
Однако, если нет какой-либо страницы, предположим, что мы находимся на первой странице.
if(!$currentPage) { $currentPage = 1 }
Хорошо, теперь пришло время для массива, содержащего информацию разбивки на страницы.
$pagination = []; if ($currentPage !== 1) { $pagination[] = [ 'page' => 'Previous', 'link' => '?page=' . ($currentPage - 1), 'active' => false, ]; } for($i = 1; $i <= $nbOfPages; $i++) { $pagination[] = [ 'page' => $i, 'link' => '?page=' . $i, 'active' => ( $i === $currentPage ), ]; } if ($currentPage !== $nbOfPages) { $pagination[] = [ 'page' => 'Next', 'link' => '?page=' . ($currentPage + 1), 'active' => false, ]; }
И, наконец, запрос для получения результатов на текущей странице.
$query = 'SELECT * FROM collection ORDER BY date DESC LIMIT ? OFFSET ?'; $sth = $dbh->prepare($query); $sth->execute(array($entitiesPerPage, ( $currentPage - 1 ) * $entitiesPerPage)));
Теперь все, что вам нужно сделать, это перебрать переменную $ pagination и напечатать правильный загрузочный HTML-код.
Для новых пользователей …
$ppcompletexxkc = "yes"; $restt = $db->prepare('SELECT COUNT(*) FROM shop WHERE complete = :complete'); $restt->execute(array(':complete' => $ppcompletexxkc )); $total = $restt->fetchColumn(); $adjacents = 3; $targetpage = "category.php"; //your file name $limit = 1; //how many items to show per page $page = $_GET['page']; if($page){ $start = ($page - 1) * $limit; //first item to display on this page }else{ $start = 0; } /* Setup page vars for display. */ if ($page == 0) $page = 1; //if no page var is given, default to 1. $prev = $page - 1; //previous page is current page - 1 $next = $page + 1; //next page is current page + 1 $lastpage = ceil($total/$limit); //lastpage. $lpm1 = $lastpage - 1; //last page minus 1 $lksmttba = $db->prepare('SELECT * FROM shop WHERE complete = :complete ORDER BY id ASC LIMIT :start ,:limit '); $lksmttba->execute(array(':complete' => $ppcompletexxkc, ':start' => $start, ':limit' => $limit )); /* CREATE THE PAGINATION */ $pagination = ""; if($lastpage > 1) { $pagination .= "<div class='pagination1'> <ul>"; if ($page > $counter+1) { $pagination.= "<li><a href=\"$targetpage?page=$prev\">prev</a></li>"; } if ($lastpage < 7 + ($adjacents * 2)) { for ($counter = 1; $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } } elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some { //close to beginning; only hide later pages if($page < 1 + ($adjacents * 2)) { for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } $pagination.= "<li>...</li>"; $pagination.= "<li><a href=\"$targetpage?page=$lpm1\">$lpm1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=$lastpage\">$lastpage</a></li>"; } //in middle; hide some front and some back elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { $pagination.= "<li><a href=\"$targetpage?page=1\">1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=2\">2</a></li>"; $pagination.= "<li>...</li>"; for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } $pagination.= "<li>...</li>"; $pagination.= "<li><a href=\"$targetpage?page=$lpm1\">$lpm1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=$lastpage\">$lastpage</a></li>"; } //close to end; only hide early pages else { $pagination.= "<li><a href=\"$targetpage?page=1\">1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=2\">2</a></li>"; $pagination.= "<li>...</li>"; for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } } } //next button if ($page < $counter - 1) $pagination.= "<li><a href=\"$targetpage?page=$next\">next</a></li>"; else $pagination.= ""; $pagination.= "</ul></div>\n"; } echo $pagination; while($readpostv=$lksmttba->fetch(PDO::FETCH_ASSOC)){ echo' '.$readpostv['img1'].''; } echo $pagination;
в$ppcompletexxkc = "yes"; $restt = $db->prepare('SELECT COUNT(*) FROM shop WHERE complete = :complete'); $restt->execute(array(':complete' => $ppcompletexxkc )); $total = $restt->fetchColumn(); $adjacents = 3; $targetpage = "category.php"; //your file name $limit = 1; //how many items to show per page $page = $_GET['page']; if($page){ $start = ($page - 1) * $limit; //first item to display on this page }else{ $start = 0; } /* Setup page vars for display. */ if ($page == 0) $page = 1; //if no page var is given, default to 1. $prev = $page - 1; //previous page is current page - 1 $next = $page + 1; //next page is current page + 1 $lastpage = ceil($total/$limit); //lastpage. $lpm1 = $lastpage - 1; //last page minus 1 $lksmttba = $db->prepare('SELECT * FROM shop WHERE complete = :complete ORDER BY id ASC LIMIT :start ,:limit '); $lksmttba->execute(array(':complete' => $ppcompletexxkc, ':start' => $start, ':limit' => $limit )); /* CREATE THE PAGINATION */ $pagination = ""; if($lastpage > 1) { $pagination .= "<div class='pagination1'> <ul>"; if ($page > $counter+1) { $pagination.= "<li><a href=\"$targetpage?page=$prev\">prev</a></li>"; } if ($lastpage < 7 + ($adjacents * 2)) { for ($counter = 1; $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } } elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some { //close to beginning; only hide later pages if($page < 1 + ($adjacents * 2)) { for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } $pagination.= "<li>...</li>"; $pagination.= "<li><a href=\"$targetpage?page=$lpm1\">$lpm1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=$lastpage\">$lastpage</a></li>"; } //in middle; hide some front and some back elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { $pagination.= "<li><a href=\"$targetpage?page=1\">1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=2\">2</a></li>"; $pagination.= "<li>...</li>"; for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } $pagination.= "<li>...</li>"; $pagination.= "<li><a href=\"$targetpage?page=$lpm1\">$lpm1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=$lastpage\">$lastpage</a></li>"; } //close to end; only hide early pages else { $pagination.= "<li><a href=\"$targetpage?page=1\">1</a></li>"; $pagination.= "<li><a href=\"$targetpage?page=2\">2</a></li>"; $pagination.= "<li>...</li>"; for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<li><a href='#' class='active'>$counter</a></li>"; else $pagination.= "<li><a href=\"$targetpage?page=$counter\">$counter</a></li>"; } } } //next button if ($page < $counter - 1) $pagination.= "<li><a href=\"$targetpage?page=$next\">next</a></li>"; else $pagination.= ""; $pagination.= "</ul></div>\n"; } echo $pagination; while($readpostv=$lksmttba->fetch(PDO::FETCH_ASSOC)){ echo' '.$readpostv['img1'].''; } echo $pagination;