【问题标题】:PHP Dynamic Gallery Pagination (with a twist)PHP 动态图库分页(有一个转折)
【发布时间】:2010-11-14 02:52:19
【问题描述】:

我正在使用 PHP 显示一个动态图库...我想要的是而不是在一页上显示很多缩略图我宁愿分页..你知道页数和下一页等等..

嗯,它是一个古老的东西,但我不知道如何做到这一点..

  • 怎么做?

但请保持你的马转折点

我在 DIVS 中显示我设置的缩略图,所以假设有人以 1024x768 打开页面,我会连续获得 3 个缩略图,并且有 6 行,所以他们总共制作了 18 个缩略图..

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

附言祝我疯狂的唐斯好运....

【问题讨论】:

  • 这听起来像是一个 HTML/CSS 问题,而不是 PHP 问题...
  • 好吧,我不知道 HTML\CSS 可以进行分页... o 等等 HTML 和 CSS 是否刚刚变为动态...请先阅读问题,兄弟
  • 我确实读过这个问题。可以让图像在 DIV 中自动流动;我忘记了如何(自从我使用 CSS 以来已经有一段时间了)。如果您想做一些比简单地让图像流畅地流动更复杂的事情,那么您需要让您的问题很多更清晰。

标签: javascript pagination


【解决方案1】:

基本技术是这样的:您知道或计算每页显示的图像数量。因此,当您进行查询时,这就是您的 LIMIT。此外,您将需要一个偏移量 - 您需要跳过多少个结果。如果您每页显示 8 个结果并且您想显示第 3 页,那么您的偏移量将是 (3 - 1) * 8 或 16。

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

【讨论】:

    【解决方案2】:

    尽管以某种方式您设法控制了用户的分辨率,并且您将能够计算 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】:

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

      【讨论】:

        【解决方案4】:

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

        document.write(screen.width+'x'+screen.height);

        这一行将打印屏幕分辨率。所以可以通过if条件照常进行进一步的步骤

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

        希望对你有帮助..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-10-29
          • 2010-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-18
          • 2019-02-07
          • 1970-01-01
          相关资源
          最近更新 更多