2

データを分離し、ページネーションを使用してテーブルを動的に作成するための正しいロジックとアプローチを考えるのに苦労しています。ファイルサーバーを読み取り、画像のリストをコンパイルして、次のような配列に並べ替える関数があります。

imagenames ( [0] => apple.png [1] => banana.png [2] => carrot.png [3] => dill.png ) 

この配列を使用して、次のようなコードでテーブルを動的に作成します。

echo '<table>';
for ($r=0; $r<$rows; $r++){
    echo '<tr>';
    for ($c=0; $c<$cols; $c++){
        if($index<$imagecount){
            echo '<td><img src="images/'.$imagenames[$index].'" ></td>';
            $index++;
        }
    }
    echo '</tr>';
}   
echo '</table>';

と を設定する$rows=3;$cols=3;、テーブルに 9 つの画像を格納できるスペースができます。私の配列に 50 個の画像があるとしたら、テーブル全体を一度にロードしたり、テーブルの外側にあるすべてのファイルを無視したりする必要がないように、次、前、および番号付きのメニューを使用して、テーブルのページ付けを行うにはどうすればよいでしょうか。によって定義された$rows*$colsスコープ

*編集** ------->>>

したがって、Steven Liao が提案するものを使用すると、次のようになります。

$size = $rows*$cols; // number of elements on page
$min = $_GET['p']*$size; // start index in array
$total_pages = ceil(count($imagenames)/$size); 

echo '<table class="photobox">';
   for ($r=0; $r<$rows; $r++){
      echo '<tr>';
      for ($c=0; $c<$cols; $c++){
    if($index<$imagecount){
       echo '<td><img src="images/'.$imagenames[$index].'" /></td>';
       $index++;
    }
      }
      echo '</tr>';
   }    
echo '</table><br/><br/>';

// Previous
$prev_page = max($_GET['p']-1, 0);
echo '<a href="photobox.php?p='.$prev_page.'">Previous</a>';
// Each individual page number (no separators yet)
for($i = 0; $i < $total_pages; $i++){
    echo '<a href="photobox.php?p='.$i.'">'.($i+1).'</a>';
}
// Next
$next_page = min($_GET['p']+1,$total_pages-1);
echo '<a href="photobox.php?p='.$next_page.'">Next</a>';

これにより、テーブルが表示され、ナビゲーション リンクが作成されます。各ページでテーブルの内容を変更するにはどうすればよいですか。ナビゲーションがあり、URL はページによって変わりますが、テーブルは変わりません。このページング コードは、Steven Liao の Answer に基づいているため、よくわかりません。

4

3 に答える 3

1

$rows×$cols各ページに多数の画像が表示されます。したがって、最初のページ$indexは0から始まり、次のページはから始まる1+$page×$rows×$colsというようになります。ここで、$pageはページnnumberです。私はあなたがその考えを理解することを望みます。

于 2012-11-04T05:09:28.467 に答える
0
$size = $row*$col; // number of elements on page
$min = $_GET['p']*$size; // start index in array
$total_pages = ceil(count($imagenames)/$size); // round up number of pages (stragglers get their own page)

// Display logic here
for($i = 0; $i < $rows; $i++){
    for($j = 0; $j < $cols; $j++){
        echo '<span>Display Logic for '.$imagenames[$min+$i*rows+$j].'</span>';
    }
}

// Previous
$prev_page = max($_GET['p']-1, 0);
echo '<a href="this.php?p='.$prev_page.'">Previous</a>';

// Each individual page number (no separators yet)
for($i = 0; $i < $total_pages; $i++){
    echo '<a href="this.php?p='.$i.'">'.($i+1).'</a>';
}

// Next
$next_page = min($_GET['p']+1,$total_pages-1);
echo '<a href="this.php?p='.$next_page.'">Next</a>';
于 2012-11-04T06:56:10.517 に答える
0

jQuery DataTables : 非常に単純な基本的な使用法を持つ jQuery プラグイン:

$(document).ready(function(){
    $('#your_table_id').dataTable();
});

ナビゲーションとページネーションに加えて、データ検出による複数列の並べ替えと検索ボックスも利用できます。jQuery UI スタイルのサポート。(必要に応じて機能を有効/無効にすることができます)。

注意:このプラグインが正しく機能するには、テーブルで要素を使用theadする必要があります。tbody

他にも複数のプラグインが利用可能です。

于 2012-11-04T07:08:44.983 に答える