FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » table appears with empty rows, and row data appears before table. Code seems ok. What is going on?
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: table appears with empty rows, and row data appears before table. Code seems ok. What is going on? [message #178172 is a reply to message #178168] Thu, 17 May 2012 11:27 Go to previous messageGo to previous message
IRC is currently offline  IRC
Messages: 6
Registered: April 2012
Karma:
Junior Member
On May 16, 9:23 pm, Denis McMahon <denismfmcma...@gmail.com> wrote:
> On Wed, 16 May 2012 07:37:22 -0700, ku...@pobox.com wrote:
>> I have code which displays a HTML <table>. The data in the rows comes is
>> read from a file. But the row data is appearing (minus the <tr></tr>
>> tags) on the web page before the table. The table displays with empty
>> rows below what was supposed to be the row data.
>
>> In other words this php...
>
>> echo "<table>\n<thead>\n<tr><th>number</th><th>date</th><th>First
>> Name</th><th>Last
>> Name</th><th>state</th><th>country</th><th>remarks</th></tr>\n</thead >
> \n<tbody>\n";
>
>> try {
>
>>    $fileh = fopen("data/petition-051512.csv", "r");
>
>>    while ($text = fgets($fileh)) {
>
>>         $tok = strtok($text, ",");
>
>>         while ($tok !== FALSE) {
>
>>              echo "<tr>" . $tok . "</tr>\n";
>
>>              $tok = strtok(",");
>>         }
>>    }
>>    echo "</tbody></table>\n";
>>    return;
>
>> produces html that looks like one big mass of text, consisting of the
>> 560 rows of data, minus any table tags, followed by a table with 560
>> empty rows.
>
>> I can't figure this out.
>
> The content of each "$tok" is being wrapped by a "tr" element. A "tr"
> element in html can not contain content directly, just table cell
> elements (td or th usually). So your browser finds text in an illegal
> place, and places it before the table (other browsers might do other
> things with it).
>
> Try on of the following:
>
> while ( $arr = fgetcsv( $fileh ) ) {
>   echo "<tr>";
>   for ( $tok in $arr )
>     echo "<td>$tok</td>"
>   echo "</tr>";
>
> }
>
> or
>
>>    while ($text = fgets($fileh)) {
>
>           echo "<tr>\n";>         $tok = strtok($text, ",");
>>         while ($tok !== FALSE) {
>>              echo "<td>" . $tok . "</td>\n";
>>              $tok = strtok(",");
>>         }
>
>           echo "</tr>\n";
>
>>    }
>
> Note also that your code will split a csv field that contains a comma in
> text, eg for the following two csv fields:
>
> "this is text, and text, and text","this,is,more,text"
>
> Your code will generate 7 table cells from the two csv fields.
>
> This may be what you want, or it may not. Your code will also include the
> " marks in the output, which might not be what you want?
>
> Rgds
>
> Denis McMahon


You don't even need to include '\n', its doesn't make any sense
putting outside '</td>\n', if you are using table structure.

Please try this:
try {
$fileh = fopen("data/petition-051512.csv", "r");
while ($text = fgets($fileh)) {
$tok = strtok($text, ",");
echo '<tr>';
while ($tok !== FALSE) {
echo "<td>" . $tok . "</td>";
$tok = strtok(",");
}
echo '</tr>';
}
echo "</tbody></table>\n";
return;
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Solution Manuals & Test Banks Updated 2012
Next Topic: update mysql without manually tying SET statements
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Fri Nov 22 09:36:12 GMT 2024

Total time taken to generate the page: 0.04492 seconds