开发者

repeat data presented on table from file

So I am reading from a text file which has product information I have four tables for the different computers computer 1 shows table 1 which is read from file1, computer 2 shows table 2 which is read from file 2, etc etc. BUT for some reason computer 3&4 show information from table 2 and also 3&4 i havent got a clue whats going on hope my code can give a better view.

Table 1

    <?php
    error_reporting(E_ALL ^ E_NOTICE);
    $row = 0;
    $sortby ='';
    $sortkey='';

echo '<h1><span class="sortby"></span></h1>
<table cellspacing="5" summary="QA Tables">
<tr>
<th>Products</th>
<th>Types</th>
<th>Keys</th>
<th>Date & Time Added</th>
</tr>';

$fp = fopen('key_QA_N1.txt','r');
if (!$fp) {echo 'ERROR: Unable to open file.</table></body></html>'; exit;}

while (!feof($fp)) {
    $line = fgets($fp,1024); //use 2048 if very long lines
    $row++;
    list ($products,$types, $keys, $date) = explode('|', $line);
    if ($sortby == 'Products') $sortkey = strtolower($products);
    if ($sortby == 'Types') $sortkey = strtolower($types);
    if ($sortby == 'Keys') $sortkey = strtolower($keys);
    if ($sortby == 'Date & Time Added') $sortkey = strtolower($date);
       $col[$row] = array($sortkey, $products, $types, $keys, $date);
}

fclose($fp);

$arrays = count($col) - 1;

$loop = 0;
while ($loop < $arrays) {
    $loop++;
    echo '
<tr>
<td>'.$col[$loop][1].'</td>
<td>'.$col[$loop][2].'</td>
<td>'.$col[$loop][3].'</td>
<td>'.$col[$loop][4].'</td>
</tr>';
}

echo '
</table>
 '
?>

Table 2

<?php
    error_reporting(E_ALL ^ E_NOTICE);
    $row = 0;
    $sortby ='';
    $sortkey='';

echo '<h1><span class="sortby"></span></h1>
<table cellspacing="5" summary="QA Tables">
<tr>
<th>Products</th>
<th>Types</th>
<th>Keys</th>
<th>Date & Time Added</th>
</tr>';

$fp = fopen('key_QA_N2.txt','r');
if (!$fp) {echo 'ERROR: Unable to open file.</table></body></html>'; exit;}

while (!feof($fp)) {
    $line = fgets($fp,1024); //use 2048 if very long lines
    $row++;
    list ($products,$types, $keys, $date) = explode('|', $line);
    if ($sortby == 'Products') $sortkey = strtolower($products);
    if ($sortby == 'Types') $sortkey = strtolower($types);
    if ($sortby == 'Keys') $sortkey = strtolower($keys);
    if ($sortby == 'Date & Time Added') $sortkey = strtolower($date);
      $col[$row] = array($sortkey, $products, $types, $keys, $date);
}

fclose($fp);

$arrays = count($col) - 1;

$loop = 0;
while ($loop < $arrays) {
    $loop++;
    echo '
<tr>
<td>'.$col[$loop][1].'</td>
<td>'.$col[$loop][2].'</td>
<td>'.$col[$loop][3].'</td>
<td>'.$col[$loop][4].'</td>
</tr>';
}

echo '
</table>
 '
?>

Table 3

<?php
    error_reporting(E_ALL ^ E_NOTICE);
    $row = 0;
    $sortby ='';
    $sortkey='';

echo '<h1><span class="sortby"></span></h1>
<table cellspacing="5" summary="QA Tables">
<tr>
<th>Products</th>
<th>Types</th>
<th>Keys</th>
<th>Date & Time Added</th>
</tr>';

$fp = fopen('key_QA_N3.txt','r');
if (!$fp) {echo 'ERROR: Unable to open file.</table></body></html>'; exit;}

while (!feof($fp)) {
    $line1 = fgets($fp,1024); //use 2048 if very long lines
    $row++;
    list ($products1,$types1, $keys1, $date1) = explode('|', $line1);
    if ($sortby == 'Products') $sortkey = strtolower($products1);
    if ($sortby == 'Types') $sortkey = strtolower($types1);
    if ($sortby == 'Keys') $sortkey = strtolower($keys1);
    if ($sortby == 'Date & Time Added') $sortkey = strtolower($date1);
     $col[$row] = array($sortkey, $products1, $types1, $keys1, $date1);
}

fclose($fp);

$arrays = count($col) - 1;

$loop = 0;
while ($loop < $arrays) {
    $loop++;
    echo '
<tr>
<td>'.$col[$loop][1].'</td>
<td>'.$col[$loop][2].'</td>
<td>'.$col[$loop][3].'</td>
<td>'.$col[$loop][4].'</td>
</tr>';
}

echo '
</table>
 '
?>

Table 4

<?php
    error_reporting(E_ALL ^ E_NOTICE);
    $row = 0;
    $sortby ='';
    $sortkey='';

echo '<h1><span class="sortby"></span></h1>
<table cellspacing="5" summary="QA Tables">
<tr>
<th>Products</th>
<th>Types</th>
<th>Keys</th>
<th>Date & Time Added</th>
</tr>';

$fp = fopen('key_QA_N4.txt','r');
if (!$fp) {echo 'ERROR: Unable to open file.</table></body></html>'; exit;}

while (!feof($fp)) {
    $line2 = fgets($fp,1024); //use 2048 if very long lines
    $row++;
    list ($products2,$types2, $keys2, $date2) = explode('|', $line2);
    if ($sortby == 'Products') $sortkey = strtolower($products2);
    if ($sortby == 'Types') $sortkey = strtolower($types2);
    if ($sortby == 'Keys') $sortkey = strtolower($keys2);
    if ($sortby == 'Date & Time Added') $sortkey = strtolower($date2);
       $col[$row] = array($sortkey, $products2, $types2, $keys2, $date2);
}

fclose($fp);

$arrays = count($col) - 1;

$loop = 0;
while ($loop < $arrays) {
    $loop++;
  开发者_StackOverflow社区  echo '
<tr>
<td>'.$col[$loop][1].'</td>
<td>'.$col[$loop][2].'</td>
<td>'.$col[$loop][3].'</td>
<td>'.$col[$loop][4].'</td>
</tr>';
}

echo '
</table>
 '
?>

Kind regards E.P


Try adding $col = array(); at the beginning of each section.


I'll wager that it is what Limpep suggested, but I'll suggest a better solution:

error_reporting(E_ALL ^ E_NOTICE);
// create a wrapper function to prevent duplicate code!
function displayQANFile( $fname, $sortby = '' )
{
    $col = array();
    // NOTE: $row, $loop, and $arrays are no longer needed.
    echo '<h1><span class="sortby"></span></h1>
    <table cellspacing="5" summary="QA Tables">
    <tr>
    <th>Products</th>
    <th>Types</th>
    <th>Keys</th>
    <th>Date & Time Added</th>
    </tr>';

    $fp = fopen($fname,'r');
    if (!$fp) {echo 'ERROR: Unable to open file ' . $fname . '.</table></body></html>'; exit;}

    while (!feof($fp)) {
        $line2 = fgets($fp,1024); //use 2048 if very long lines
        list ($products2,$types2, $keys2, $date2) = explode('|', $line2);
        if ($sortby == 'Products') $sortkey = strtolower($products2);
        if ($sortby == 'Types') $sortkey = strtolower($types2);
        if ($sortby == 'Keys') $sortkey = strtolower($keys2);
        if ($sortby == 'Date & Time Added') $sortkey = strtolower($date2);
        // did you mean to call array_sort on col at some point?
        $col[] = array($sortkey, $products2, $types2, $keys2, $date2);
    }
    fclose($fp);

    foreach($col as $row) {
        echo '
    <tr>
    <td>'.$row[1].'</td>
    <td>'.$row[2].'</td>
    <td>'.$row[3].'</td>
    <td>'.$row[4].'</td>
    </tr>';
    }

    echo '
    </table>
     ';
}
displayQANFile('key_QA_N1.txt');
displayQANFile('key_QA_N2.txt');
displayQANFile('key_QA_N3.txt');
displayQANFile('key_QA_N4.txt');

This way, you can be sure that you won't have a variable overwriting another and you can prevent all of that duplicated code...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜