2013-08-02 2 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 и изображение все в том же «клетку», но только три колонок (три продукта в ряд).

Как это сделать?

+1

Попробуйте 'category' вместо' catagory'. Это не решит вашу проблему, но это даст вам дополнительные оценки в вашем заключительном отчете о классе (wink) –

+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> 
Смежные вопросы