web-dev-qa-db-fra.com

Bootstrap Pagination en utilisant PHP Et MySQL

Je suis un peu nouveau pour Bootstrap, j'essaye d'implémenter la pagination sur l'une des sections de ma page pour représenter correctement les données. quelqu'un peut-il aider s'il vous plait?

Voici un aperçu de l’apparence actuelle du code. Comment puis-je implémenter la pagination afin que seuls 10 enregistrements soient affichés? Merci.

<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> &nbsp;
                            <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>
9
8yt3c0d3

Vous êtes assez loin.

Au minimum, vous devez procéder comme suit.

  1. Vous devez créer une variable qui détermine le nombre d'éléments à afficher par page.
  2. Vous devez prendre cette variable et la multiplier par le numéro de page pour obtenir le nombre d'enregistrements à compenser dans votre requête.
  3. Vous devez décaler les résultats de la requête en utilisant le nombre obtenu à partir du calcul ci-dessus et limiter la requête au nombre d'éléments à afficher.
  4. Vous devez compter le nombre total d'éléments et le diviser par le nombre d'éléments par page pour obtenir le nombre total de pages à afficher dans la pagination.

Voici un code de pagination simple que j'ai souvent utilisé avec Bootstrap. 

http://www.a2zwebhelp.com/php-mysql-pagination

Omettez simplement les styles et appliquez les classes Bootstrap aux éléments. Mais vous ne pouvez pas simplement ajouter du code HTML statique et vous attendre à ce qu'il fonctionne sans aucune sorte de logique d'arrière-plan. Bootstrap fournit seulement un moyen de styliser la pagination, mais vous devez la construire.

5
CChoma

Je faisais face à la même situation, suivais un article et l’adaptais à mon usage. Voici ce dont vous avez besoin pour votre code.

Testé avec Bootstrap v3.3.5.


Tout d’abord: Vous devriez changer votre fonction mysql_query(). Cette extension était obsolète dans PHP 5.5.0 et supprimée dans PHP 7.0.0. À la place, vous devez utiliser l’extension MySQLi ou PDO_MySQL. Lire plus ici .

Cela étant dit, passons à notre code PHP.

PHP (gère les requêtes MySQL et génère la pagination HTML)
Remarque: vous pouvez modifier votre page cible via la variable $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"; 
}

Maintenant que la mise en page est prête, appelez-la où vous voulez:

HTML

 <div class="row">
     <div class="col-md-12 text-center">
          <?php echo $pagination ?>
     </div>
 </div>


Vos éléments <a> recevront href=targetPage?page=pageNumber


SOURCE: http://www.a2zwebhelp.com/php-mysql-pagination

J'espère que cela pourra aider!

4
Felipe Rugai
 $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 

utiliser le code ça va aider 

4
Ankit Verma

Tout d’abord, veuillez vous renseigner sur PDO http://php.net/manual/fr/book.pdo.php . Dans ma solution, je suppose que vous utilisez PDO. 

La première chose à faire est de déterminer le nombre de lignes dans la base de données.

$nbOfResults = $pdo->query('select count(*) from collection')->fetchColumn();

Puis définissez une limite d’entités par page.

$entitiesPerPage = 10; 

Déterminons maintenant combien de pages il devrait y avoir. Je vais d’abord diviser le nombre de résultats par entityPerPage. Disons qu'il y a 202 résultats. En le divisant par 10 (entités par page), vous obtiendrez 20 pages (converties en int). Cependant, il reste encore 2 entités. C'est pourquoi je dois vérifier modulo et ajouter une page supplémentaire si nécessaire.

$nbOfPages = intval($nbOfResults / $entitiesPerPage);

if( ($entitiesPerPage % $nbOfResults) !== 0 ) {
    $nbOfPages += 1
}

Nous sommes maintenant prêts à construire une pagination. Mais nous devons d’abord avoir une variable qui contient la page actuelle.

$currentPage = $_GET['page']; 

Ou d'une manière plus élégante.

$currentPage = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_NUMBER_INT);

Cependant, s'il n'y a pas de page, supposons que nous sommes sur la première page.

if(!$currentPage) { $currentPage = 1 }

Ok, maintenant il est temps pour un tableau contenant des informations de pagination.

$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,
    ];
}

Et enfin la requête pour obtenir les résultats sur la page en cours.

$query = 'SELECT * FROM collection ORDER BY date DESC LIMIT ? OFFSET ?';
$sth = $dbh->prepare($query);
$sth->execute(array($entitiesPerPage, ( $currentPage - 1 ) * $entitiesPerPage)));

Maintenant, tout ce que vous avez à faire est de parcourir la variable $ pagination et d’imprimer le code HTML d’amorçage approprié.

J'ai récemment fait quelque chose de similaire avec bootstrap, j'ai utilisé des tables de données responsive pour y parvenir. voici le lien ici

choses avec lesquelles j'ai eu des problèmes, 

  1. utiliser la dernière api de google 
  2. les fichiers html, css et js sont fournis par le site
  3. ils fournissent la pagination et la réactivité tout ce que vous voulez
  4. les données les plus importantes acceptent les données au format tableau. Ainsi, lorsque vous renvoyez les données de php, utilisez jason object et liez toutes les données d’un tableau, puis les lignes que vous souhaitez remplir 
2
njwin07

Pour les nouveaux utilisateurs ...

$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;
0
user6174374