2013-08-02 49 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>