2013-08-02 53 views
0

我試圖在HTML表中顯示某個類別的數據庫中的所有產品。不過,我不知道如何限制表格只有三列。將PHP數組轉換爲HTML表

這裏是我的代碼:

<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> 

我等着顯示PRODID,prodtitle和圖像都在同一個「細胞」,但只有三列(每行3個產品)。

我該怎麼做?

+1

嘗試'category'而不是'catagory'。它不會解決你的問題,但它會給你最終的課堂報告中額外的分數(眨眼) –

+0

@Fred - 哈謝謝!然而,任何想法如何我可以做我需要什麼? – Shane

+0

提示:SELECT *'和'SELECT cola,colb,colc'有什麼區別? –

回答

2
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 

注意$我現在是從1開始,並循環而NUM_ROWS的<=,不<

+0

Yayy !!謝謝!! – Shane

1

這看起來不太好。

if ($i % 5 == 0 || $i == 0) { 

我覺得應該是

if ($i % 3 == 0 || $i == 0) { 

否則新<tr>當您關閉舊的不會被打開。

在此基礎上進行擴展,您可以使這一切變得更加簡單。

echo "<table><tr>"; // Open the first row 
for ($i ..... etc.) { 

    -- SNIP -- 

    if ($i % 3 == 0) { 
     echo "</tr><tr>"; // imediately open new row 
    } 
} 
echo "</tr></table>"; // Close last row as well as table 
+0

更改了這個,第一行顯示一列,第二行2列,第三行1列? – Shane

1
<table> 
<?php  
    $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"); 

    $catagory = mysql_real_escape_string($_GET['q']); // prevent SQL injections 

    if(empty($catagory)) { 
     die('You need to enter a catagory'); 
    } 

    $result = mysql_query("SELECT * FROM products WHERE catagory = '$catagory';") or die(mysql_error()); 
    // a general error might have occurred, 
    // may or may not be related to not entering a catagory 

    $rows = mysql_num_rows($result); // cache the number for performance 

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

     $prodname = $row['prodname']; 
     $prodID = $row['prodID']; 
     if ($i % 3 === 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) { 
      echo "</tr>"; 
     } 
    } 

    if($i % 3 > 0) { 
     // last row was not full 
     echo '</tr>'; 
    } 
?> 
</table>