Michael Grigsby
Michael Grigsby

Reputation: 12163

Spliting PHP/MySQL data into 3 columns

I need to create 3 HTML columns in PHP with data returned from MySQL. I would like the data split evenly between all 3 columns... How would I go about doing this?

Upvotes: 3

Views: 5131

Answers (3)

wiitohzjeh
wiitohzjeh

Reputation: 347

A small detail, if return more entries than the "fetch_row" use "break", based on the answer from @Robbie: Spliting mysql data in 3 columns error -3-columns-error

Upvotes: 0

arcyqwerty
arcyqwerty

Reputation: 10685

You could try doing something like this:

$result = mysql_query("SELECT value FROM table");
$i = 0;
echo '<table><tr>';
while ($row = mysql_fetch_row($result)){
  echo '<td>' . $row[0] . '</td>';
  if ($i++ == 2) echo '</tr><tr>'
}
echo '</tr></table>';

note this table has the values ordered like

1 2 3 
4 5 6
7 8 9

If you wanted it vertically like

1 4 7
2 5 8
3 6 9

Then you should do something like

$result = mysql_query("SELECT value FROM table");
$data = Array();

while ($row = mysql_fetch_row($result)) $data[] = $row;

for ($i = 0; $i < count($data) / 3; $i++){

  echo '<table><tr>';

  for ($j = 0; $j < 3; $j++){
    echo '<td>' . $data[ $i + $j * 3] . '</td>';
  }

  echo '</tr><tr>'
}
echo '</tr></table>';

Upvotes: 8

DNadel
DNadel

Reputation: 485

You can create an HTML table and then use a PHP foreach loop to loop through the MySQL result set and put each field in its own table. At the end of each record returned by the MySQL query, end the table row and start a new one.

Upvotes: 0

Related Questions