On Fri, Sep 26, 2008 at 4:43 PM, Thodoris <tgol@xxxxxxxxxx> wrote: > > On Fri, Sep 26, 2008 at 2:41 PM, Robert Cummings <robert@xxxxxxxxxxxxx> > wrote: > > > On Fri, 2008-09-26 at 21:23 +0300, Thodoris wrote: > > > On Fri, 2008-09-26 at 13:50 -0400, admin@xxxxxxxxxxxxxxxxxxx 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. > > 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 > > > > > When I need to do something like this I always use this base code that > I just edit. I wrote it a few years ago and haven't really changed it > so it works for what I need. > > > <?php > $results = 17; // how many cells do we actually have data for? [put > your record count here] > $cols = 8; // desired column width of the table > $total = $cols * ceil($results / $cols); // total cells to create > $rows = ceil($total / $cols); // total rows to create > $position = 0; // current position > echo "<br>results: ", $results; > echo "<br>cols: ", $cols; > echo "<br>total: ", $total; > ?> > > <table border="1"> > > <?php for ($row=0; $row < $rows; ++$row): ?> > > <tr> > > <?php for ($col=0; $col < $cols; ++$col): ?> > > <?php if ($results > $position): ?> > <td> > <?php > // call your fetch record code here > echo 'Col: '. $col .'<br>'; > echo 'Row: '. $row .'<br>'; > echo 'Position: '. $position .'<br>'; > ?> > </td> > <?php else: ?> > <td> > empty cell > </td> > <?php endif; ?> > > <?php ++$position; ?> > > <?php endfor; ?> > > </tr> > > <?php endfor; ?> > > </table> > > > As posted before Eric rows is the problem not columns... > Oh sorry I didn't read it close enough. If $data is already an array this would be really easy with array_chunk. Otherwise you just need to add an extra layer around your main table loop. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php