代码之家  ›  专栏  ›  技术社区  ›  Moon

PHP动态库分页(有一个转折点)

  •  0
  • Moon  · 技术社区  · 14 年前

    我正在用PHP显示一个动态库。。。我想要的是不要在一页上显示很多缩略图,我宁愿分页。。你知道号码页和下一页。。

    好吧,这是件老事情,但我不知道怎么做。。

    • 怎么做?

    但别急 这是转折点

    我把缩略图放在div里,我把它们排成一行,比如说,如果有人用1024x768打开页面,我会得到一行3个缩略图,一共有6行,所以它们总共会产生18个thumnails。。

    但是如果有人用他们的分辨率打开页面,比如说1600 x 1200,我会得到5个thumnails,所以18个缩略图会变成3行。。假设我想保留第6行并将缩略图弹出到30。。。 如何利用代码来实现这一点

    p、 祝你好运和我疯狂的唐斯。。。。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Surreal Dreams    14 年前

    最基本的技术是:你知道,或者计算一下,每页显示多少图像。所以当你做查询时,这是你的极限。另外,你需要一个偏移量-你需要跳过多少个结果。如果每页显示8个结果,并且希望显示第3页,则偏移量为(3-1)*8或16。

    现在,你有趣的挑战听起来像你的显示器:你根据显示器显示不同数量的缩略图。因此,您需要计算所需的显示大小(可能是使用javascript),然后根据所显示的页面发出ajax请求,查询所需的结果量和偏移量。

        2
  •  1
  •   aefxx    14 年前

    同意了 以某种方式 您可以控制用户的分辨率,并且能够计算DIV中的缩略图总数,那么告诉PHP使用30个缩略图就没有什么魔力了。

    define('ROW_TOTAL',   6);
    define('MIN_THUMBS',  3);
    define('THUMB_WIDTH', 320);
    
    // Get the clients resolution (i.e. via ECMA and a cookie)
    $thumbs = isset($_COOKIE['res_width']) ?
        (int) (intval($_COOKIE['res_width'], 10) / THUMB_WIDTH) : MIN_THUMBS;
    
    // Get the page via the client's request
    $page = isset($_GET['page']) ?
        intval($_GET['page'], 10) : 0;
    
    $query = sprintf(
        'SELECT thumb_url' .
         ' FROM images' .
        ' WHERE set_id = %u'.
        ' LIMIT %u OFFSET %u',
        $set_id,
        $thumbs,
        $thumbs * $page
    );
    
    // Feth the records and process them in a loop
    // I'll leave that up to you
    

    祝你好运, aefxx公司

        3
  •  1
  •   bcosca    14 年前

    分页可以在PHP中处理。但是你不能做你在纯PHP中提到的所有事情。将涉及一些AJAX/Javascript,特别是在浏览器分辨率的自动检测中。您必须考虑使用具有纵向和横向尺寸的浏览器的客户端,包括小屏幕(移动电话240x240或320x320)。

        4
  •  0
  •   Gowri    14 年前

    您可以通过java脚本找到屏幕分辨率

    document.write(屏幕宽度+x'+屏幕高度);

    这一行将打印屏幕分辨率。所以可以按if条件继续进行下一步

    if($screen=1024x768){执行查询 }否则{执行查询}

    我希望这对你有帮助。。