2014-04-29 56 views
0

我是新來的PHP,我不知道我做錯了什麼。我試圖列出txt文件中的所有記錄。但是,我的代碼只顯示第一行。我怎樣才能讓代碼顯示文件中的所有記錄?php只讀列表的第一行

$count = 0; 
$soldOut = 0; 
$eventFile = fopen("performances.txt", "r"); 
$event = fgets($eventFile); 

while (feof($eventFile)); 
{ 
    list ($dateEvent, $performer, $ticketprice, $status) = explode(":", $event); 
    if($status == "Yes") 
    { 
     $status = "Tickets are still available"; 
     $count = $status +1; 
    } 
    else 
    { 
     $status = "***SOLD OUT***"; 
     $soldOut = $status +1; 
    } 

    print("<tr><td>$dateEvent </td>"); 
    print("<td>$performer </td>"); 
    print("<td>$ticketprice </td>"); 
    print("<td>$status</td></tr>"); 
    $event = fgets($eventFile); 
} 

回答

1

,請注意docs,你會發現,你的循環應該是:

while(!feof($eventFile)) { 
    $event = fgets($eventFile); // THIS is where you get the current line 
    // do stuff here 
} 
+1

downvote的任何特定原因?一般我在點擊Downvote按鈕之前發表評論... –

0

可以讀取文件這種方式。你可以找到更多關於這個http://us1.php.net/function.file-get-contents

<?php 
$data = file_get_contents("performances.txt",FILE_USE_INCLUDE_PATH); //read the file 
$convert = explode(":", $data); //create array separate by new line 

for ($i=0;$i<count($convert);$i++) 
{ 
    echo $convert[$i].', '; //write value by index 
} 
?> 
0

循環截至http://www.php.net/manual/en/function.fgets.php

基本上指示,不斷循環,直到與fgets nolonger返回任何東西,然後檢查是否在終場前文件的結尾匹配。 我也建議你看看http://www.php.net/manual/en/function.stream-get-line.php 這些評論是爲了提升性能。

$count = $soldOut = 0; 
$eventFile = fopen("performances.txt", "r"); 
if ($eventFile) { 
    # Keep reading as long as fgets returns content 
    while (($event = fgets($eventFile)) !== false) { 
     list ($dateEvent, $performer, $ticketprice, $status) = explode(":", $event); 
     if($status == "Yes") { 
      $status = "Tickets are still available"; 
      ++$count; # increase count with one 
     } else { 
      $status = "***SOLD OUT***"; 
      ++$soldOut; # increase soldout with one 
     } 

     echo '<tr>', 
      '<td>',$dateEvent,'</td>', 
      '<td>',$performer,'</td>', 
      '<td>',$ticketprice,'</td>', 
      '<td>',$status,'</td>', 
     '</tr>'; 
    } 
    # something went wrong 
    if (!feof($eventFile)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 
    # remember to close them files 
    fclose($eventFile); 
} else { 
    # failed to open 
}