在我的 csv 文件(“food.csv”)中,数据以 -ITEM、DESC、QTY、RATE、TYPE 的顺序存储。当我使用数组查找项目代码时,整个结果都在一页中。我需要的是结果应限制为每页 5 个案例以及“NEXT/BACK”。任何人都可以帮助我吗?否则请建议任何其他选择。 PHP 文件如下。
<?php
$handle = fopen("food.csv","r")or die("file dont exist");
$output = ' ';
while (!feof($handle )){
$data = fgetcsv($handle, 4096, ",");
if($data[0] ==100){
$output .= sprintf( "<b>Fruit Name: %s. </b><br>", $data[1]);
$output .= sprintf( "Quantity Avaliable: %d Kgs @ %d USD each. <br>", $data[2], $data[3]);
$output .= sprintf( "Item code: %d (Stock: %s) <br><hr><br>", $data[4],$dara[0]);
}
}
echo $output;
fclose($handle);
?>
整个结果(12 个案例)都在一个页面中,例如:
Fruit Name: MANGO Quantity Available: 10 Kgs @ 500 USD each. Item code: 100 (Stock: OLD)
Fruit Name: APPALE Quantity Available: 12 Kgs @ 300 USD each. Item code: 100 (Stock: NEW)
Fruit Name: MANGO Quantity Available: 5 Kgs @ 650 USD each. Item code: 100 (Stock: NEW)
最佳答案
基本上你想要一个代表页面的变量,然后计算开始值和结束值。然后只输出在这些范围之间的日期。请原谅代码,我对 PHP 有点生疏。
<?php
$handle = fopen("food.csv","r")or die("file dont exist");
$output = ' ';
$numPerPage = 5;
$page = $_GET['page'];
$count = 0;
$start = $page * $numPerPage;
$end = ($page + 1) * $numPerPage;
while (!feof($handle )){
$data = fgetcsv($handle, 4096, ",");
if($data[0] ==100 && $count < $end && $count >= $start){
$output .= sprintf( "<b>Fruit Name: %s. </b><br>", $data[1]);
$output .= sprintf( "Quantity Avaliable: %d Kgs @ %d USD each. <br>", $data[2], $data[3]);
$output .= sprintf( "Item code: %d (Stock: %s) <br><hr><br>", $data[4],$data[0]);
if($count == $numPerPage) {
if($page != 0) {
$output .= '<a href="?page="' . ($page - 1) . '">BACK</a> ';
}
if(!feof($handle)) {
$output .= ' <a href="?page="' . ($page + 1) . '">NEXT</a>';
}
}
$count++
}
}
echo $output;
fclose($handle);
?>
现在无法测试。如果您遇到问题,请告诉我。
关于php - 在我的 PHP 页面上限制我的 .csv 文件结果所需的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22032141/