On Fri, 2008-09-26 at 14:41 -0400, Robert Cummings wrote:
> On Fri, 2008-09-26 at 21:23 +0300, Thodoris wrote:
> > > On Fri, 2008-09-26 at 13:50 -0400, [EMAIL PROTECTED] wrote:
> > >
> > >> Might I suggest you count the fields and divide it by the cols you want
> > >> to display?
> > >> Example
> > >> $forest = mysql_query("SELECT * FROM your_table");
> > >> $gump = mysql_num_fields($forest);
> > >>
> > >>
> >
> > First of all the problem is with the rows not the columns. The problem
> > is that I want to divide the rows into equal (or anything close to
> > that) chunks and put every chunk in a separate table.
> >
> > There I said it :-) .
> >
> > >> Because I know my table contains 15 rows I can do this.
> > >> $tulip = floor($gump /5);
> > >>
> > >
> > >
> >
> > You can count the rows (not the cols) in the result set but you can't
> > base your algorithm on that only.
> >
> > The problem is that if for e.g. you have 91 rows and you want to divide
> > it into 3 you will have three chunks of 30 like this:
> >
> > 30, 30, 31
> >
> > > You have a bug if you have 16 rows.
> > >
> >
> > In my case I really don't care in what table the extra row goes.
>
> The solution is pretty easy, I just don't have time right now to write
> it for you. Either way, I would approach the problem inverseley to your
> current solution. Instead of traversing the rows and performing internal
> calculations, I'd calculate the tables and rows needed and then traverse
> that information and in the innermost loop traverse the result set using
> the next() function.
<?php
$cells = array( 'First', 'Second' );
$items = array( array( 'one', 'two' ), array( 'one', 'two' ),
array( 'one', 'two' ), array( 'one', 'two' ), array( 'one', 'two' ), arr
$numTables = 3;
$items = array_chunk( $items, ceil( count( $items ) / $numTables ) );
$html = '';
foreach( $items as $tableItems )
{
if( $tableItems )
{
$html .= '<table><tr>';
foreach( $cells as $cell )
{
$html .= '<td>'.$cell.'</td>';
}
$html .= '</tr>';
foreach( $tableItems as $rowItems )
{
$html .= '<tr>';
foreach( $rowItems as $item )
{
$html .= '<td>'.$item.'</td>';
}
$html .= '</tr>';
}
$html .= '</table>';
}
}
?>
I changed my mind on how I wanted to do it. Either way... simple
enough :) Adapt to fit your own scenario.
Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php