-1

我是 PHP 新手。我有显示壁纸的 android 应用程序。以下 PHP 脚本在分页中返回从最新到最旧的数据。它工作正常,但问题是无论条件如何,它总是从最后开始收集行。例如,如果我想检索从最近到最旧的类别抽象的壁纸,它从最后一个 id 开始并忽略类别并给出不正确的结果。这就是我想要的。

  1. 根据某些类别获取壁纸
  2. 将结果存储在某个数组中
  3. 在给定页码中从该数组计算变量
  4. 发回结果

我希望你们已经明白我真正想要做什么。请帮我。

<?php

$conn = new mysqli('server', 'abc', '123', 'Walls');

if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

$page_number = $_POST["page_number"];
$item_count = 40;


$r = mysqli_query($conn, "SELECT * from wallpaper_info order by id desc 
limit 1;");
$row = mysqli_fetch_array($r);
$total = $row[0];


$page_limit = ($total/$item_count) - $page_number; 

$from = $page_limit * $item_count - ($item_count - 1);
$to = $page_limit * $item_count;

$response = array();
$status = array();

if($page_limit <= 0){

array_push($response,array('status'=>'end'));
echo json_encode($response);

}else{

array_push($response,array('status'=>'ok'));

//Working fine
$mysql_query = "select * from wallpaper_info where id BETWEEN $from AND $to 
order by id desc;";
//Not working
$mysql_query = "select * from wallpaper_info where id BETWEEN $from AND $to 
and category = 'Abstract' order by id desc;";

$results = mysqli_query($conn,$mysql_query);

$wallpapers = array();

while($row = mysqli_fetch_array($results)){

array_push($wallpapers,
array(

'id'=>$row[0],'name'=>$row[1],'category'=>$row[2],'thumb_url'=>$row[3],'img_ 
 url'=>$row[4],'size'=>$row[5],'downloads'=>$row[6],'views'=>$row[7]

));
}

array_push($response,array('wallpapers'=>$wallpapers));
echo json_encode($response);
mysqli_close($conn);
}

?>
4

1 回答 1

-1
$mysql_query = "SELECT * FROM `wallpaper_info`
                WHERE category = 'Abstract'
                ORDER BY id DESC
                LIMIT 10 OFFSET 0
                 ";

https://www.w3schools.com/sql/sql_top.asp有很好的例子

对于页码,您可以尝试以下操作:

<?php
$pagesize = 10;//LIMIT
$offset = 0;//OFFSET

//pdo query example.. 
$sql = "SELECT FOUND_ROWS();"
$totall_rows = $conn->query($sql)->fetchColumn(0);

$calc_pages = ceil($totall_rows / $pagesize);
$last_row_number = $pagesize + $offset - 1;

if ($last_row_number >= $totall_rows)
     $last_row_number = $totall_rows - 1;
if ($totall_rows > 0)
     $current_page = ceil(( $calc_pages * ($offset + 1)) / $totall_rows );
?>
<form method="GET" enctype="application/x-www-form-urlencoded" action="">
Page: 
<input type="submit" value="<?php echo "< ";echo($current_page - 1);?>">
<?php echo "<b>$current_page</b>/$calc_pages"; ?>
<input type="submit" value="<?php echo($current_page + 1); echo " >";?>">
</form>
<?php 

没有测试它,告诉如果不工作

于 2018-08-12T00:51:17.400 回答