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 的回答。

4

3 回答 3

1

$rows×$cols每页上都有许多图像。因此,在您的第一页上$index将从 0 开始,在下一页开始从1+$page×$rows×$cols等等,$page第 n 页在哪里。我希望你能明白。

于 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 样式。(可以根据需要启用/禁用功能)。

注意:您的表格必须使用该插件才能正常工作theadtbody元素。

还有多个其他插件可用。

于 2012-11-04T07:08:44.983 回答