抓取屏幕分辨率并根据大小显示结果 [英] Grabbing screen resolution and displaying results based on the size

查看:99
本文介绍了抓取屏幕分辨率并根据大小显示结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试根据屏幕分辨率大小显示数据库中的结果。我在上周发布了一个关于如何获得宽度的问题,并且能够在这里借助一些想法来提出这个jquery,但是无法完成第二个方面,即根据大小显示结果:

I'm trying to show results from a database based on screen resolution size. I posted a question last week about how to get the width and was able to come up with this jquery with the help of a few ideas here, but was unable to complete the second aspect, which is to display results based on the size:

<script type="text/javascript">
$(document).ready(function() {
    var $window = $(window);
    function checkWidth() {
        var windowsize = $window.width();
        if (windowsize = 1600) {
            //**This is where I need to define the $maxresults value, but how?**
        }
    }
    // Execute on load
    checkWidth();
    // Bind event listener
    $(window).resize(checkWidth);
});
</script>

现在,这是第二部分:

<?php
    // get the function
    include_once ('function.php');
    $maxresults = 21;
    if ($_GET['page']) {
        $page = $_GET['page'];
    } 
    else {
        $page = 0; 
    }
    $currentpage = $page;
    $page = $page*$maxresults;
    $numpages = QuickQuery("SELECT COUNT(id) FROM books WHERE visible=1");
    $numpages = mysql_result($numpages, 0);
    $numpages = $numpages/$maxresults-1;
    //Show <maxresults> pages at a time
    $result = GetBooksByRangeID($page, $maxresults);
    DisplayResults($result); 
?>

要显示的最大结果数量设置为21,但我想使用上面的jquery来根据用户的屏幕分辨率定义金额;我将有各种尺寸。换句话说,我需要if语句说根据找到的大小显示这么多结果。那么如何编写if语句呢?

The max amount of results to show is set to 21, but I want to use the jquery above to define the amount based on a user's screen resolution; I will have various sizes. In other words, I need the if statement to say "show this many results based on the size found." So how do I write that if statement?

* 最后修订=部分工作,(尽管分辨率大小,所有结果仍设为最高6)*

<?php
// get the function
include_once ('function.php');
if(($_GET['w']) && ($_GET['h'])) {
    $w = $_GET['w'];
    $h = $_GET['h'];
}
if ($w == 1920) {
    $maxresults = 24;  
}
else if ($w == 1600) {
    $maxresults = 24;  
}
else if ($w == 1440){ 
    $maxresults = 12;
}
else if ($w == 1366) { 
    $maxresults = 10;
}
else if ($w == 1024) {
    $maxresults = 8;
}
else  $maxresults = 6; 

.....

推荐答案

使用Ajax,这是需要做的事情

Using Ajax, this is what needs to be done

<html><body>
<div id="content"></div>
....
<script>
    $(function(){
      $.ajax({
         url: 'file.php',
         type: 'GET',
         data: {h: screen.height, w: screen.width}
      }).done(function ( data ) {
         document.getElementById("content").innerHTML=data;
        });
    });
</script>

然后file.php将运行您的数据库查询并返回一组格式良好的结果(即html table)基于通过ajax发送的h和w参数,告诉你屏幕的高度和宽度。要做到这一点,只需设置$ page变量,具体取决于 $ _ GET ['w'] $ _ GET ['h'] <的大小/ code>变量。见下文:

That file.php would then run your database query and return a nicely formatted set of results (i.e. html table) based on the h and w parameters sent via ajax which tell you the height and width of the screen. To do this just set the $page variable depending on the size of the $_GET['w'] and $_GET['h'] variables. See below:

<?php
// get the function
include_once ('function.php');
$maxresults = 21;

$page = ( $_GET['page'] ? $_GET['page'] : 0 );

if(($_GET['w']) && ($_GET['h'])) {
  $w = $_GET['w'];
  $h = $_GET['h'];
  //$maxresults = // calculate this depending on w and h
  // i.e. if h > 1600 $maxresults = 20, else = 10
  $currentpage = $page;
  $page = $page * $maxresults;
  $numpages = QuickQuery("SELECT COUNT(id) FROM books WHERE visible=1");
  $numpages = mysql_result($numpages, 0);
  $numpages = $numpages/$maxresults-1;
  $result = GetBooksByRangeID($page, $maxresults);//Show <maxresults> pages at a time  
  //DisplayResults($result); 
  echo $results; // in a nice format (i.e. table) to be inserted into div via ajax
?>

您可以按如下方式计算$ maxresults:

You can calculate $maxresults as follows:

if($w > 640) && ($h > 480) $maxresults = 5;
if($w > 800) && ($h > 600) $maxresults = 7;
if($w > 1024) && ($h > 768) $maxresults = 12;
....
if($w > 2560) && ($h > 1600) $maxresults = 21;

或者您可以按宽度对这些语句进行分组(因为我认为这不比高度重要,这意味着更少滚动对用户来说):

Or you can group these statements by width (as I think thats less important than height, meaning less scrolling down for the user):

if ($w <= 1024) {
  if ($h >= 768) $maxresults = 12;  // 1024x(768 or higher)
  else if ($h >= 600) $maxresults = 8; // 1024x(600~768)
  else  $maxresults = 6; // 1024x(599 or below)
}
else if ($w <= 1280) {
  if ($h >= 1024) $maxresults = 14;  // 1280x(1024 or higher)
  else if ($h >= 960) $maxresults = 12; // 1280x(960~1024)
  else if ($h >= 800) $maxresults = 10; // 1280x(800~960)
  else if ($h >= 768) $maxresults = 8; // 1280x(768~800)
  else  $maxresults = 6; // 1280x(768 or below)
}
//and so on



请参阅: http://en.wikipedia.org/wiki/Display_resolution#Computer_monitors



修订版

see: http://en.wikipedia.org/wiki/Display_resolution#Computer_monitors

Revision

填写maxresults的代码编写得非常糟糕,这就是为什么它不起作用。试试这个:

You code for populating maxresults is very poorly written, thats why it does not work. Try this:

<?php
include_once ('function.php');
$maxresults = -1;
if(($_GET['w']) && ($_GET['h'])) {
  $w = $_GET['w'];
  $h = $_GET['h'];

  if ($w == 1920) {
    $maxresults = 24;  
  } else if ($w == 1600) {
    $maxresults = 24;  
  } else if ($w == 1440){ 
    $maxresults = 12;
  } else if ($w == 1366) { 
    $maxresults = 10;
  } else if ($w == 1024) {
    $maxresults = 8;
  } else 
    $maxresults = 6;
}
echo $maxresults;

如果w和h没有被发送,它将输出-1或者它将返回24或12等等取决于您的屏幕宽度。学习对代码进行一些基本的调试。我很难调试你的代码,而没有完全掌握它。

This will either output -1 if w and h are not being sent or it will return 24 or 12 and so on depending on your screen width. Learn to do some basic debugging on your code. It is difficult for me to debug your code without having all of it to hand.

这篇关于抓取屏幕分辨率并根据大小显示结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆