2014-11-18 9 views
8

का उपयोग कर बूटस्ट्रैप पेजिनेशन मैं बूटस्ट्रैप के लिए नया हूं, मैं डेटा का सही ढंग से प्रतिनिधित्व करने के लिए अपने पृष्ठ के किसी भी अनुभाग पर पृष्ठांकन को लागू करने की कोशिश कर रहा हूं। क्या कोई मदद कर सकता है?PHP और MySQL

यहां एक स्नैपशॉट है कि कोड अभी कैसा दिखता है। मैं पेजिनेशन कैसे कार्यान्वित कर सकता हूं ताकि केवल 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> &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> 
+0

तुम क्यों datatable lib –

उत्तर

5

आप बहुत दूर हैं।

बहुत कम से कम, आपको निम्न कार्य करने की आवश्यकता है।

  1. आपको एक चर बनाने की आवश्यकता है जो प्रति पृष्ठ दिखाने के लिए आइटमों की संख्या निर्धारित करता है।
  2. आपको अपनी चर में ऑफसेट करने के लिए रिकॉर्ड्स की संख्या प्राप्त करने के लिए उस चर को लेना और पृष्ठ संख्या से गुणा करना होगा।
  3. आपको ऊपर की गणना से प्राप्त संख्या का उपयोग करके क्वेरी परिणामों को ऑफ़सेट करने की आवश्यकता है और क्वेरी को दिखाने के लिए आइटम की संख्या को सीमित भी करना है।
  4. पेजिंग की कुल संख्या को पेजिनेशन में दिखाने के लिए आपको कुल आइटम की संख्या गिनने और प्रति पृष्ठ वस्तुओं की संख्या से विभाजित करने की आवश्यकता है।

यहां कुछ सरल पेजिनेशन कोड है जिसे मैंने बूटस्ट्रैप के साथ कई बार उपयोग किया है।

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

बस शैलियों को छोड़ देते हैं और तत्वों के बूटस्ट्रैप कक्षाएं लागू होते हैं। लेकिन आप केवल स्थिर एचटीएमएल नहीं जोड़ सकते हैं और इसे किसी भी प्रकार के बैकएंड तर्क के बिना काम करने की उम्मीद कर सकते हैं। बूटस्ट्रैप केवल पेजिनेशन को स्टाइल करने का एक तरीका प्रदान करता है, लेकिन आपको इसे बनाना होगा।

+1

ए साइड नोट (एक महत्वपूर्ण एक ईमानदार होना) इस जवाब में जोड़ने के लिए कोशिश मत करो: ** mysql_ प्रोटोटाइप का उपयोग नहीं करते , क्योंकि वे अप्रचलित ** हैं। ओपी सीधे क्वेरी के अंदर मूल्यों को पार्स कर रहा है, जो किसी दुर्भावनापूर्ण उपयोगकर्ता को किसी भी मूल्य को इंजेक्ट करने और पूरी तालिका को छोड़ने के लिए वास्तव में आसान बनाता है। – briosheje

+0

@ ब्रियोशेजे सही है। आपको अद्यतन माइस्क्ली या पीडीओ विधियों से पूछताछ करनी चाहिए। इसके अलावा, स्क्रिप्ट पेजिंग बनाने के तरीके को समझने में उपयोगी है। – CChoma

+0

मैं उत्तर में कुछ नमूना/कामकाजी कोड डालने के लिए @cchoma का सुझाव दूंगा। – Ironic

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

उपयोग कोड यह

2

मैं हाल ही में बूटस्ट्रैप के साथ कुछ ऐसा ही किया था मदद मिलेगी, मैं इस लक्ष्य को हासिल करने के लिए उत्तरदायी datatables इस्तेमाल किया। यहाँ लिंक here

बातें मैं के साथ परेशानी है,

  1. गूगल से नवीनतम एपीआई का उपयोग
  2. एचटीएमएल, CSS और JS फ़ाइलों साइट
  3. वे पृष्ठांकन और responsivness सभी प्रदान द्वारा प्रदान की जाती है कि आप
  4. सबसे महत्वपूर्ण डेटाटेबल्स सरणी प्रारूप में डेटा स्वीकार करते हैं, इसलिए जब आप php उपयोग जेसन ऑब्जेक्ट से डेटा को प्रतिबिंबित करते हैं और सभी डेटा को सरणी में बांधते हैं और फिर पंक्तियां जिन्हें आप
  5. भरना चाहते हैं
2

सबसे पहले, कृपया पीडीओ http://php.net/manual/en/book.pdo.php के बारे में कुछ जानें। मेरे समाधान में मुझे लगता है कि आप पीडीओ का उपयोग कर रहे हैं।

सबसे पहले आपको यह करने की ज़रूरत है कि वास्तव में डीबी में कितनी पंक्तियां हैं।

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

फिर प्रति पृष्ठ इकाइयों की कुछ सीमा निर्धारित करें।

$entitiesPerPage = 10; 

अब निर्धारित करें कि कितने पेज होना चाहिए। सबसे पहले मैं EntitiesPerPage द्वारा परिणामों की संख्या विभाजित करूंगा। मान लें कि 202 परिणाम हैं। 10 (संस्थाओं प्रति पृष्ठ) द्वारा इसे विभाजित करने के परिणामस्वरूप 20 पेज (int में जाये गये) होंगे। हालांकि अभी भी 2 इकाइयां बाकी हैं। यही कारण है कि मुझे मॉड्यूलो जांचना होगा और यदि आवश्यक हो तो एक और पेज जोड़ना होगा।

$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))); 

अब तुम सब करने की है $ पृष्ठांकन चर और प्रिंट उचित बूटस्ट्रैप एचटीएमएल के माध्यम से लूप है।

4

मुझे एक ही स्थिति का सामना करना पड़ रहा था, एक लेख का पालन किया और इसे मेरे उपयोग में समायोजित किया। यहां आपको अपने कोड के लिए क्या चाहिए।

बूटस्ट्रैप v3.3.5 के साथ परीक्षण किया गया।


सभी सबसे पहले: आप अपने mysql_query() समारोह बदलना चाहिए। यह एक्सटेंशन PHP 5.5.0 में बहिष्कृत किया गया था, और इसे PHP 7.0.0 में हटा दिया गया था। इसके बजाय, MySQLi या PDO_MySQL एक्सटेंशन का उपयोग किया जाना चाहिए। here और पढ़ें।

कहा जा रहा है, चलो हमारे PHP कोड पर जाएं।

पीएचपी (MySQL प्रश्नों को संभालती है और पृष्ठांकन एचटीएमएल उत्पन्न करता है)
नोट: यदि आप $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"; 
} 

अब हम पृष्ठांकन की स्थापना की है कि, बस इसे कहते भी आप चाहते हैं:

एचटीएमएल

<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

आशा है कि मदद करता है!

+0

आपको सीधे अपने उत्तर में प्रश्न का उत्तर देने के लिए पर्याप्त जानकारी देनी चाहिए। यदि आप जिस पृष्ठ से लिंक करते हैं, तो आपका उत्तर बेकार है। – blm

+0

पर्याप्त मेला। बस इसे हल किया। –

0

नए उपयोगकर्ताओं के लिए ...

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