在我的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(库存:新)
答案 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 ) .'">< Previous</a> ';
}
$out[$p] = $out[$p] .'<a href="?p='. ($p +1 ) .'">Next ></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 ) .'">< Previous</a> ';
$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
}
?>