Shane Shane - 1 month ago 10
HTML Question

PHP array into HTML table

I am trying to show all products in a database with a certain category in a HTML table. However I'm not sure how to limit the table to three columns only.

Here is my code:

<table>
<?php
$catagory=$_GET["q"];


$con = mysql_connect("localhost","cl49-XXX","XXX");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("cl49-XXX", $con)or die( "Unable to select database");


$result=mysql_query("SELECT * FROM products WHERE catagory = '$catagory' ")or die('You need enter a catagory ' );

for ($i = 0; $i < mysql_num_rows($result); $i++)
{
$row = mysql_fetch_array($result);

$prodname = $row['prodname'];
$prodID = $row['prodID'];
if ($i % 5 == 0 || $i == 0) {
echo "<tr>";
}
echo "
<td>
<b>$prodname </b><br />
Product ID: $prodID<br />
<img src='/userpics/$prodID.jpg' height='200' width='200'>
</td>";

if ($i % 3 == 0 || $i == (mysql_num_rows($result)-1)) {
echo "</tr>";
}
}
?>
<table>


I am waiting to show prodID, prodtitle and image all in the same "cell" but only have three columns (three products per row).

How do I do this?

Answer
echo "<tr>"; // first row beginning
for ($i = 1; $i <= mysql_num_rows($result); $i++)
{
    $row = mysql_fetch_array($result);

    $prodname = $row['prodname'];
    $prodID = $row['prodID'];

    echo "
    <td>
        <b>$prodname </b><br />
        Product ID: $prodID<br />
        <img src='/userpics/$prodID.jpg' height='200' width='200'>
    </td>";

    if ($i % 3 == 0) {
        echo "</tr> <tr>"; // it's time no move to next row
    }
}
echo "</tr>"; // last row ending

Note that $i is now starting from 1 and it loops while <= of num_rows, not <.