This is the way I would do it: split your CSV into an array.
Then traverse the array, saving any data and incrementing
a counter for any empty element. Finally set up some
conditional statements with the counter to output the table
the way you want. Still with me? Here is some sample
code I threw together. You may have to play with it to
get it working the way you want... but it should at least give
you a starting point.
<HTML><BODY><Table Border=1>
<?php
$fp = fopen("file.csv",r);
while (!feof ($fp)) {
$buffer = fgets($fp, 4096);
$linearr = explode(",",$buffer);
$outarr = "";
echo "<TR>\n";
$colspan=0;
for($j=0; $j < count($linearr); $j++) {
if ($linearr[$j] == "") {
$colspan++;
} else {
$outarr[] = chop($linearr[$j]);
}
}
if ($colspan == 0) {
echo "<TD>$outarr[0]</TD>\n";
} else {
if(count($outarr) == 0)
echo "<TD Colspan=$colspan></TD>\n";
else
echo "<TD Colspan=$colspan>$outarr[0]</TD>\n";
}
for($j=1; $j < count($outarr); $j++) {
echo "<TD>$outarr[$j]</TD>\n";
}
echo "</TR>\n";
}
?>
</Table></Body></HTML>
Sheridan Saint-Michel
Website Administrator
FoxJet, an ITW Company
www.foxjet.com
----- Original Message -----
From: Peter Torraca <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, August 14, 2001 11:02 AM
Subject: [PHP] smart table construction from array
> Hello All --
>
> I have a csv file that I need to parse into a table. Getting the
> file open and into stuffed into an array is not really a problem, but
> I want PHP to adapt the table structure to the data on the fly. For
> example, some data (from the hgitner.com stamp buying list):
>
> 26,used,3¢ Washington Dull Red type II,$1.00 ,-,-
> "Fine + OG Hinged 232-40, 285-90, 294-99, 323-7 wanted. Call or
ship!",,,,,
> 534A,single,"2¢ Washington, type VI (imperf, offset)",$20.00 ,$12.00
,$6.00
> 534B,single,"2¢ Washington, type Va (imperf, offset)",Needed Urgently!,,
>
>
> I can easily get line 1 and 3 can easily into:
>
> <td>26</td><td>3¢ Washington Dull Red type
> II</td><td>$1.00</td><td>-</td><td>-</td>
>
> but line 2 and 4 are my problem. I want PHP to take line 2 and see
> that there is only one cell of data in the and four blanks in the
> array and thus create:
>
> <td colspan=5>Fine + OG Hinged 232-40, 285-90, 294-99, 323-7 wanted.
> Call or ship!</td>
>
> PHP should see that line 4 ends in two blanks and thus should output:
>
> <td>34B</td><td>single </td><td>2¢ Washington, type Va (imperf,
> offset) </td><td colspan=3>Needed Urgently!"
>
> but I'm having some real trouble figuring out the logic/control
> structures to do this. If there is a class out there that does this,
> I'd be happy to hear of it. But I suspect my inexperience is the
> real problem: I'm really hoping that someone can explain the logic of
> how this might be done.
>
> thanks in advance.
>
> peter
>
> --
> Peter Torraca
> [EMAIL PROTECTED]
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]