2009-07-26 9 views
1

私が行っているページがクリック可能にならないようにするにはどうすればよいですか? for内部ifPHPの質問ページ区切り

$page = (isset($_GET['page']) && is_numeric($_GET['page']) ? (int) $_GET['page'] : 1); 
$limit = ($page - 1) * 15; 
$sql = mysql_query("SELECT * FROM log LIMIT $limit, 15"); 
$totalres = mysql_result(mysql_query("SELECT COUNT(id) AS tot FROM log"),0); 
$totalpages = ceil($totalres/15); 

for ($i = 1; $i <= $totalpages; $i++) { 
    $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> "; 
} 

<p><?php echo $pagination ?></p> 
+1

http://thedailywtf.com/Articles/Pagination-Consternation.aspx - すべての深刻さにもか​​かわらず、Pear :: Pagerは調べる価値があるかもしれません。 – Thorarin

答えて

3
if ($i == $page) 
    $pagination .= "$i "; 
else 
    $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> ";
+1

'$ page'変数を前もって定義した方が良いでしょう。$ _GET ['page'] ' – Thorarin

+0

あなたは絶対に正しいです。 – Kawa

1

if ($i != $page) { 
    //Your code. 
} 
else 
{ 
    //Same page. 
    $pagination .= "&nbsp;" . $page . "&nbsp;" 
} 
1

ただ、現在のページがあるかどうか確認するためのループを変更する必要があります。

for ($i = 1; $i <= $totalpages; $i++) 
{ 
    if ($i != $page) 
     $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> "; 
    else 
     $pagination .= " " . $i . " "; 
} 
+0

'$ i == $ page'を!=に変更するか、2行のコードを入れ替える必要があります。 – Thorarin

+0

西に最速の銃...あまりそれほど;)...ありがとう – RedBlueThing

+0

私はこのトピックが古いことを知っているが、私はページが100 101などになると言うのだろうかと思いましたか?どのようにしてそれを変更することができますか?1 2 3 ... 100 101? – blackbull77

0

@RedBlueThingはすぐに私は別のstackoverflow question with a little modifying of the codeからアイデアを得たが、私は、私はそれが動作するようになったあなたのポストを見ていています。

<?php 
echo "<section>"; 

$link = mysqli_connect("localhost", "root", "root", "user_db"); 

$page = (isset($_GET['page']) && is_numeric($_GET['page']) ? (int) $_GET['page'] : 1); 


$offset = 4; 
$x = 5; 

$limit = ($page - 1) * $offset; 

$sql = mysqli_query($link,"SELECT * FROM cfp_blogs;"); 
$totalres = mysqli_num_rows($sql); 
$totalpages = ceil($totalres/$offset); 

    $stmt = mysqli_query($link, "SELECT * FROM blogs LIMIT $limit, $offset;"); 
     if($stmt->num_rows > 0){ 
      while($obj = mysqli_fetch_object($stmt)) { 
       echo "<h1>$obj->title</h1>"; 
       echo "<p>$obj->content</p>"; 
       $stmt2 = $link->query("SELECT COUNT(id) AS Tot FROM blogs"); 
       if($stmt2->num_rows > 0){ 

       while ($obj2 = $stmt2->fetch_object()){ 
         echo "<p>($obj2->Tot)</p>"; 
        } 
       } 
       else 
       echo "<p>(0)</p>"; 
       $stmt2->close(); 

      } 
     } 
     else { 
      echo "<section class='error'><h1>There was a problem with the database.</h1></section>"; 
     } 

    mysqli_free_result($stmt); 

for ($i = $page - $x; $i < $page; $i++) 
{ 
    if ($i >= 1) { 
     $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> "; 
    } 
} 

$pagination .= " " . $i . " "; 

for ($i = $page + 1; $i <= $page + $x; $i++) 
{ 
    if ($i <= $totalpages) { 
     $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> "; 
    } 

} 

/*for ($i = 1; $i <= $totalpages; $i++) 
{ 
    if ($i != $page){ 
     $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> "; 
    } 
    else{ 
     $pagination .= " " . $i . " "; 
    } 
}*/ 

mysqli_close($link); 

echo $pagination; 

echo "</section>"; 
?> 

私が得ることができなかった唯一のものは、「次の」または「前の」ボタンを持っていたことでした。誰かがそれらのボタンを追加する作業をしている場合は、そのショットを付けてください。他の賢明な.....お楽しみ..... :)これは私を助けるためにstackoverflowコミュニティに返す私の方法です。