Forum Moderators: open

Message Too Old, No Replies

Getting query results into a multicolumn table

         

cookie2

7:53 pm on May 1, 2006 (gmt 0)

10+ Year Member



I am pulling the results of a mysql query from my database and want to print the results into a two column table. I know how to get the results into a single column table just fine using:

while($row = mysql_fetch_array($result)) {
print "<table border=2><tr><th>" . $row[name];
print "<tr><td>";
print mysql_field_name($result, 0) . ": " . $row[ID]."<br>";
print mysql_field_name($result, 1) . ": " . $row[name]."<br>";
print mysql_field_name($result, 2) . ": " . $row[address]."<br>";
print mysql_field_name($result, 3) . ": " . $row[city]."<br>";
print mysql_field_name($result, 4) . ": " . $row[telephone]."<br>";
print "</td></tr>";
print "</table>\n";
print "<br><br>";
}

and it works fine. But my efforts to get the results into a two column setup have become frustrating. My latest attempt was:

while($row = mysql_fetch_array($result)) {
print "<table border=2 width='90%'>";
print "<tr>";
print "<td>";
print "<b>" . $row[name] . "</b><br>";
print mysql_field_name($result, 0) . ": " . $row[ID]."<br>";
print mysql_field_name($result, 1) . ": " . $row[name]."<br>";
print mysql_field_name($result, 2) . ": " . $row[address]."<br>";
print mysql_field_name($result, 3) . ": " . $row[city]."<br>";
print mysql_field_name($result, 4) . ": " . $row[telephone]."<br>";
print "</td>";
print "<td>";
print mysql_field_name($result, 0) . ": " . $row[ID]."<br>";
print mysql_field_name($result, 1) . ": " . $row[name]."<br>";
print mysql_field_name($result, 2) . ": " . $row[address]."<br>";
print mysql_field_name($result, 3) . ": " . $row[city]."<br>";
print mysql_field_name($result, 4) . ": " . $row[telephone]."<br>";
print "</td>";
print "</tr>";
print "</table>\n";
print "<br><br>";
}

This puts the same data from a single result in both <td> fields though. I want it to put data from the first result in the left <td> and data from the second result in the right side, then a new <tr> with result 3 on the left and result 4 on the right and continue on from there until the end.

I tried a for($i = 0; $i < $rows; $i++) statement but couldn't get that to work either.

What am I overlooking on this to make it work as I need it to?

cookie2

8:28 pm on May 1, 2006 (gmt 0)

10+ Year Member



Sorry for posting prematurely. Right after I posted this, I found a workable answer on Google that I had been looking for all day. For those that may need it, here's what I am now using:

columns = 2;
for($i = 0; $i < $num_rows; $i++) {
$row = mysql_fetch_array($result);
if($i % $columns == 0) {
//if there is no remainder, we want to start a new row
print "<TR>\n";
}
print "<TD width='50%'>";
print "<b>" . $row[name] . "</b><br>";
print mysql_field_name($result, 0) . ": " . $row[ID]."<br>";
print mysql_field_name($result, 1) . ": " . $row[name]."<br>";
print mysql_field_name($result, 2) . ": " . $row[address]."<br>";
print mysql_field_name($result, 3) . ": " . $row[city]."<br>";
print mysql_field_name($result, 4) . ": " . $row[telephone]."<br>";

if(($i % $columns) == ($columns - 1) ¦¦ ($i + 1) == $num_rows) {
//if there is a remainder of 1, end the row
//or if there is nothing left in our result set, end the row
print "</TR>\n";
}
}
print "</table>\n";