Re: Sepating MySQL result set into html tables

From: Date: Fri, 26 Sep 2008 20:43:06 +0000
Subject: Re: Sepating MySQL result set into html tables
References: 1 2 3 4 5  Groups: php.general 
Request: Send a blank email to php-general+get-281016@lists.php.net to get a copy of this message
On Fri, Sep 26, 2008 at 2:41 PM, Robert Cummings <robert@interjinn.com> wrote:
On Fri, 2008-09-26 at 21:23 +0300, Thodoris wrote:
    
On Fri, 2008-09-26 at 13:50 -0400, admin@buskirkgraphics.com 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...

« previous php.general (#281016) next »