2013-08-02 4 views
0

HTML 테이블에 특정 카테고리가있는 데이터베이스의 모든 제품을 표시하려고합니다. 그러나 테이블을 3 열로 제한하는 방법을 잘 모르겠습니다. 나는 모두 같은 "전지"에 PRODID, prodtitle 및 이미지를 표시하지만 세 개의 열 (행 당 세 가지 제품)을 가지고 기다리고HTML 배열로 PHP 배열

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

:

여기 내 코드입니다.

어떻게하면됩니까?

+1

'catagory'대신'category'를 사용해보십시오. 문제를 해결할 수는 없지만 최종 학급 보고서 (윙크)에 여분의 점수를 줄 것입니다 –

+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 

참고 $ i가 지금은 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>