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