Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

putting database results in a 5x1 table

0 views
Skip to first unread message

Eddie Biscomb

unread,
Sep 26, 2005, 9:38:48 PM9/26/05
to
I have a db of tens of thousands of entries. It's not too hard to pull
all the entries and build a table that displays them one at a time, but
in my case, that will be a huge waste of space. What I want to do is
put one record in each of the columns. I thinks it's possible to do
because I have seen very elaborate thumbnail gallery scripts to do this.
I just want to be able to put two or three strings of text from each
record into each row, and a checkbox. Here's sample of what I mean:

<table width="76%" border="1" cellspacing="1" cellpadding="1">
<tr>
<td>$record1Line1<br>$record1$Line2<br>
<input type="checkbox" name="$record1checkbox" value="checkbox"></td>
<td>$record2Line1<br>$record2$Line2<br>
<input type="checkbox" name="$record2checkbox" value="checkbox"></td>
<td>$record3Line1<br>$record3$Line2<br>
<input type="checkbox" name="$record3checkbox" value="checkbox"></td>
<td>$record4Line1<br>$record4$Line2<br>
<input type="checkbox" name="$record3checkbox" value="checkbox"></td>
<td>$record5Line1<br>$record5$Line2<br>
<input type="checkbox" name="$record5checkbox" value="checkbox"></td>
</tr>
</table>

I want to pull about 200 records at a time from the db and display as
described above. How can I tell php to take five records from my result
set and display above, then loop through the result set until I'm done?

Thanks much for any guidance you can offer.

Ed

Justin Koivisto

unread,
Sep 26, 2005, 11:02:15 PM9/26/05
to
Eddie Biscomb wrote:

Set $numRows to how many records you have retrieved total...

for($i=0;$i<$numRows;$i=$i+5){
echo '<tr>';
for($j=$i;$j<($i+5);$j++){
$line1='record'.$j.'Line1';
$line2='record'.$j.'Line2';
$checkbox='record'.$j.'checkbox';
echo '<td>',${$line1},'<br>',${$line2},'<br>',
${$checkbox},'</td>';
}
echo '</tr>',"\n";
}

Try it - maybe I'm just too tired, but it looks ok from here (not tested
of course)... That is assuming that you actually have the variable names
set up as you had indicated in that block of HTML...

I would be more inclined to have the SQL return 3 columns per row so I
could just use something like: $row[0], $row[1], $row[2] for the
variables...

--
Justin Koivisto, ZCE - jus...@koivi.com
http://koivi.com

chrislive

unread,
Sep 27, 2005, 3:46:42 AM9/27/05
to
another idea even though its a bit messy would be...

if(($count_td == "1")OR($count_td == "")){ echo "<tr>"; }

echo "<td>$content</td>";

if($count_td == "5"){ echo "</tr>"; $count_td = "1"; }else{
$count_td++; }

Marcin Dobrucki

unread,
Sep 27, 2005, 4:34:11 AM9/27/05
to
Eddie Biscomb wrote:
> I have a db of tens of thousands of entries. It's not too hard to pull
...

> I want to pull about 200 records at a time from the db and display as
> described above. How can I tell php to take five records from my result
> set and display above, then loop through the result set until I'm done?

This will stretch the last column to fill the missing space.

<?php
require_once ("HTML/Table.php");
$sample_data = array ("john", "fred", "bob", "willy", "angie",
"frank", "betty", "george", "wilma", "dexter",
"jack", "ziggy", "flo", "shrek", "gork", "nobody");

function build(&$input, $cols = 5) {
$t = new HTML_Table(array("border" => 1));
$t->setAutoGrow(true);

$array_size = count($input);
$line = 0;

for ($offset = 0; $offset < $array_size; $offset = $offset + $cols) {
$row = array_splice($input, 0, $cols);
$row_size = count($row);
$t->addRow($row);
if ($row_size < 5) {
$t->setCellAttributes($line, $row_size - 1,
array("colspan" => 5 - $row_size +1));
}
$line++;
}
return $t;
}

$res =& build($sample_data);
$res->display();
?>

You can also remove the lines that handle the "stretch", and just add
the result of the splice. The non-existant cells will be handled by
setAutoGrow then.

/m

0 new messages