在我的PHP页面上限制我的.csv文件结果所需的分页

时间:2014-02-26 04:57:11

标签: php csv

在我的csv文件(" food.csv")中,数据按-ITEM,DESC,QTY,RATE,TYPE的顺序存储。当我使用数组查找项目代码时,整个结果将在一个页面中。我需要的是结果应该限制在每页5个案例和"下一个/后退"。有人可以帮帮我吗?其他明智的建议任何其他选择请。 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个案例),如:

  

水果名称:MANGO   可用数量:10 Kgs @ 500 USD。   商品代码:100(库存:旧)

     

水果名称:APPALE   可用数量:12 Kgs @ 300 USD。   商品代码:100(库存:新)

     

水果名称:MANGO   可用数量:5 Kgs @ 650 USD。   商品代码:100(库存:新)

3 个答案:

答案 0 :(得分:1)

一种方法是跳到你需要的行

$fh = fopen('food.csv', 'r');
while ((feof($fh) === false) ){
  $i=1;
  $start = 5;
  $end = 10;
  while ((feof($fh) === false) && $i > $start && $i < $end){
    fgets($fh);
    $i++;
  }
  $line = fgets($fh);
  echo $line;
}
fclose($fh);

未经测试,但您明白了

答案 1 :(得分:1)

基本上你想要一个代表页面的变量,然后计算开始和结束值。然后只输出日期,如果它在这些范围之间。请原谅代码,我对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);
?>

现在无法测试。如果你遇到问题,请告诉我。

答案 2 :(得分:0)

<?php

    if ( ! empty($_FILES['file']['name']) ) {
        $f = fopen($_FILES['file']['tmp_name'],'r');

        $head = fgetcsv($f,0,',','"');
        $num_per_page = 50;

        $out = array(1 => '<table width="100%" cellspacing="0" cellpadding="1"><tr><th>'. join('</th><th>',$head) .'</th></tr>');
        $k = count($out);

        $i = 0;
        $p = 1;
        $z = -1;
        while( $arr = fgetcsv($f,0,',','"') ) {
            $arr = array_pad($arr,$k,'');
            if ( $i >= $num_per_page ) {
                $i = 0;
                $out[$p] = $out[$p] .'</table>';
                $out[$p] = $out[$p] .'<div style="text-align: right;">';
                if ( $p > 1 ) {
                    $out[$p] = $out[$p] .'<a href="?p='. ($p -1 ) .'">&lt; Previous</a> &nbsp;&nbsp;&nbsp;';
                }
                $out[$p] = $out[$p] .'<a href="?p='. ($p +1 ) .'">Next &gt;</a>';
                $out[$p] = $out[$p] .'</div>';

                $p++;
                $out[$p] = '<table width="100%" cellspacing="0" cellpadding="1"><tr><th>'. join('</th><th>',$head) .'</th></tr>';
            }
            $z *= -1;
            $out[$p] = $out[$p] .'<tr '. ( $z > 0 ? 'class="odd"' : '' ) .'><td>'. join('</td><td>',$arr) .'</td></tr>';
            $i++;
        }
        if ( $i > 0 ) {
            $out[$p] = $out[$p] .'</table>';
        }
        if ( $p > 1 ) {
            $out[$p] = $out[$p] .'<div style="text-align: right;">';
            $out[$p] = $out[$p] .'<a href="?p='. ($p -1 ) .'">&lt; Previous</a> &nbsp;&nbsp;&nbsp;';
            $out[$p] = $out[$p] .'</div>';
        }

        echo '<pre>'. htmlspecialchars('<?php' ."\n"
            .'$arr = '. var_export($out,true) .'; $p = 1; if ( ! empty($_GET[\'p\']) ) $p = intval($_GET[\'p\']); if ( ! array_key_exists($p,$arr) ) $p = 1; echo $arr[$p];'
            . "\n". '?>'
        );

    } else {
?>
    <form method="post" enctype="multipart/form-data">
        CSV File<input type="file" name="file" /> <input type="submit" value="Submit" />
    </form>
<?php
    }

?>