Printing mysql_fetch_array results in multicolumn table

I’m not sure if this qualifies as a mysql or a php question so I’m
asking in both groups.

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 reults 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 and continue on from there
until the end.

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

This is the cheapest place to get magazines at awesome prices!
1 year of FHM for $7.99. Wow!
Get Your Free Credit Report.
Date: 02 May 2006 05:26:21
From: Schraalhans Keukenmeester
Subject: Re: Printing mysql_fetch_array results in multicolumn table

JackM wrote:
> I’m not sure if this qualifies as a mysql or a php question so I’m
> asking in both groups.
>
> 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 reults 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 and continue on from there
> until the end.
>
> What am I overlooking on this to make it work as I need it to?

Not completely sure what you want exactly, but there are some weird
constructs in both cases. You create a complete table for each db row it
seems. The table tages should be outside the loop I suppose.

It is no surprise in the second example you get the same data in both
columns, since that is what you ordered. If what you aim for is a table
looking like this:

ID <ID value for row x >
name <name value for row x >

[etc]

ID <ID value for row y >
name <name value for row y >

[etc]

then replace all the <td > </td> contents of the first column with
appropriate contents.

Sh.

Sigh. I like to think it’s just the Linux people who want to be on
the “leading edge” so bad they walk right off the precipice.
(Craig E. Groeschel)

Date: 01 May 2006 11:06:32
From: Peter H. Coffin
Subject: Re: Printing mysql_fetch_array results in multicolumn table

On Mon, 01 May 2006 11:19:39 -0400, JackM wrote:
> I’m not sure if this qualifies as a mysql or a php question so I’m
> asking in both groups.
>
> 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 reults 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>”;
if ($row = mysql_fetch_array($result)) {
> 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>”;
} else {
print ” “;
}
> 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 and continue on from there
> until the end.
>
> What am I overlooking on this to make it work as I need it to?

You need to fetch a new row from your results (and handle the condition
of there being no more results properly), as indicated above.


79. If my doomsday device happens to come with a reverse switch, as soon as it
has been employed it will be melted down and made into limited-edition
commemorative coins.
–Peter Anspach’s list of things to do as an Evil Overlord

Leave a Reply

Your email address will not be published. Required fields are marked *