Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取屏幕分辨率并根据大小显示结果_Php_Javascript_Jquery_If Statement - Fatal编程技术网

Php 获取屏幕分辨率并根据大小显示结果

Php 获取屏幕分辨率并根据大小显示结果,php,javascript,jquery,if-statement,Php,Javascript,Jquery,If Statement,我试图根据屏幕分辨率大小显示数据库的结果。上周我发布了一个关于如何获得宽度的问题,并在这里借助一些想法提出了这个jquery,但无法完成第二个方面,即根据大小显示结果: <script type="text/javascript"> $(document).ready(function() { var $window = $(window); function checkWidth() { var windowsize = $window.width(

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

<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>

$(文档).ready(函数(){
变量$window=$(window);
函数checkWidth(){
var windowsize=$window.width();
如果(窗口大小=1600){
//**这就是我需要定义$maxresults值的地方,但是如何定义呢**
}
}
//加载执行
检查宽度();
//绑定事件侦听器
$(窗口)。调整大小(选中宽度);
});
现在,这是第二部分:

<?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语句呢

*上次修订=部分工作(将所有结果设置为最大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向php脚本提交屏幕分辨率。然后使用分辨率确定数量并返回电影,例如json

大概是这样的:

**编辑

javascript:

$(document).ready(function() {'use strict';

   var screenResolution, request;

   //set screen resolution here
   screenResolution = 1024;

   request = $.ajax({
     url : "url_to_php_script",
     type : "POST",
     dataType : "json",
     contentType : 'application/x-www-form-urlencoded; charset=UTF-8',
     data : {
        "screenResolution" : screenResolution               
     }
  });
   request.fail(function() {
      alert("fail");
   });

   request.done(function(movies) {
      console.log(movies);
   });
});
php:
使用Ajax,这就是需要做的事情

<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>
您可以按如下方式计算$maxresults:

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;
或者,您可以按宽度对这些语句进行分组(因为我认为宽度不如高度重要,这意味着用户可以减少向下滚动):

如果($w=768)$maxresults=12;//1024x(768或更高)
如果($h>=600)$maxresults=8;//1024x(600~768)
else$maxresults=6;//1024x(599或以下)
}
如果($w=1024)$maxresults=14;//1280x(1024或更高)
如果($h>=960)$maxresults=12;//1280x(960~1024)
如果($h>=800)$maxresults=10;//1280x(800~960)
如果($h>=768)$maxresults=8;//1280x(768~800)
else$maxresults=6;//1280x(768或以下)
}
//等等
见: 修改

您用于填充maxresults的代码编写得非常糟糕,这就是它不起作用的原因。试试这个:

<?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;

只需通过de
$\u GET['windowsize']
传递答案来加载ajax,并使用通过“data”变量返回的结果(可以是插入DOM的HTML,也可以是json字符串或任何您想要的内容)

<script type="text/javascript">
$(document).ready(function() {
    var $window = $(window);
    function checkWidth() {
        var windowsize = $window.width();
        if (windowsize = 1600) {
            $.ajax('/path/to/page?windowsize='+encodeURIComponent(windowsize)).done(function(data){
                        // the stuff to do when the php is loaded, for example, document.getElementById('x').innerHTML=data;
                        });
        }
    }
    // Execute on load
    checkWidth();
    // Bind event listener
    $(window).resize(checkWidth);
});

</script>

$(文档).ready(函数(){
变量$window=$(window);
函数checkWidth(){
var windowsize=$window.width();
如果(窗口大小=1600){
$.ajax('/path/to/page?windowsize='+encodeURIComponent(windowsize)).done(函数(数据){
//加载php时要做的事情,例如document.getElementById('x').innerHTML=data;
});
}
}
//加载执行
检查宽度();
//绑定事件侦听器
$(窗口)。调整大小(选中宽度);
});
在php脚本中,您可以发布:

<?php
$windowsize = (int)$_GET['windowsize'];
if($windowsize >= 1200 && $windowsize < 1400)
    {
    echo "maxsize:200;minsize:300;";
    }
if($windowsize >= 1400 && $windowsize < 1600)
    {
    echo "maxsize:300;minsize:400;";
    }

在测试windows属性之后,您可以使用JSON获得结果…good ressource>我已经能够获得大小-我使用警报进行了测试-我只是不知道如何编写if语句来表示根据找到的大小显示这么多结果如果不太麻烦,您能给我一个示例吗?当然,请给我一分钟浏览器将下载所有屏幕大小的资源,这绝不是一件好事。取决于内容,我确信OP所说的是$maxresults变量,这只是一个数字,而不是一堆文本/图像。@hussman那些最大结果表示从数据库查询返回的结果,可能返回图像。等等,如果数据很小,这不是什么大问题,但并不理想。问题是我们不知道这里返回的数据的大小。@JJM您必须使用Ajax,这在单个页面请求上是不可能的,因为JavaScript在PHP完成处理后运行。或者,如果他们在此之前访问页面,您可以将其分辨率存储在cookie中并在使用ajax之前,试着抓住它。@Geeorge不,那些max results代表一个变量,比如$maxresults=21;问题不是我们不知道它的大小,问题是它只是一个变量,确切地说是一个整数。我对ajax知之甚少甚至一无所知-你能解释一下你在页面上定义的内容吗?加载php时,我只想显示MaxResults我添加了一些额外的代码。您可以在php输出中输入任何您想要的内容。javascript ajax变量(在我的示例中称为数据)只是一个字符串,其中包含php脚本输出的内容。如果查看php脚本上的源代码,您会看到字符串将包含的值。谢谢。我将尝试今天在这里介绍的所有想法—我也能让您的想法发挥作用—但我确实适应了这一点:$(document).ready(function(){var$window=$(window);函数checkWidth(){var windowsize=$window.width();if(windowsize>768){$.ajax({type:“POST”,url:“functions/movie2.php”,数据:{windowsize:encodeURIComponent(windowsize)},};}//加载时执行checkWidth();//绑定事件侦听器$(window).resize(checkWidth);});谢谢您的帮助!
<?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;
<script type="text/javascript">
$(document).ready(function() {
    var $window = $(window);
    function checkWidth() {
        var windowsize = $window.width();
        if (windowsize = 1600) {
            $.ajax('/path/to/page?windowsize='+encodeURIComponent(windowsize)).done(function(data){
                        // the stuff to do when the php is loaded, for example, document.getElementById('x').innerHTML=data;
                        });
        }
    }
    // Execute on load
    checkWidth();
    // Bind event listener
    $(window).resize(checkWidth);
});

</script>
<?php
$windowsize = (int)$_GET['windowsize'];
if($windowsize >= 1200 && $windowsize < 1400)
    {
    echo "maxsize:200;minsize:300;";
    }
if($windowsize >= 1400 && $windowsize < 1600)
    {
    echo "maxsize:300;minsize:400;";
    }
..........done(function(data) {
    $results = data.split(';');
    for(c=0;c<$results.length;c++)
        {
        $tmp = $results[c].split(':');
        if($tmp[0] == 'minsize')
            {
            minsize=parseInt($tmp[1]);
            }
        if($tmp[0] == 'maxsize')
            {
            maxsize=parseInt($tmp[1]);
            }
        });