2012-04-16 4 views
2

je table avec product_category et son compte plus de 20 catégories et je veux les afficher sous forme de tableau comme image ci-dessousAffichage en format de table de MySQL

enter image description here

J'aime placer des catégories dans 5 td alors comment je peux être fixé vers tr dans un table

Ci-dessous est le code j'ai essayé, mais ce ne donnant pas la sortie désirée

Et être faible est l'image qui pourrait être la solution que je avais besoin

enter image description here

Ci-dessous le code

<table> 
<?php 

$fquery5 = mysql_query("select Cat_ID, Cat_Name from product_category where Active_Flag=1");  

    $count1 = mysql_num_rows($fquery5); 

    $hor_length = 5; 
    $ver_length = $count1/$hor_length; 

    $data1 = mysql_fetch_row($fquery5); 

    for ($i = 0; $i <= $ver_length; $i++) { 
     echo "<tr>"; 
      for ($j = $i + $hor_length; $j <= $count1; $j++) { 
        echo "<td>"; 
         echo "Id : " . $data1[0] . " = " . $data1[1]; 
        echo "</td>"; 
      } 
     echo "</tr>"; 
    } 

?> 
</table> 

image de sortie Ajouté a répondu par @DaveRandom

enter image description here

+0

Si les articles sont triés par ordre alfabetacally de haut en bas comme dans l'exemple? – Leven

+0

pas radomly ou de comme il est de base de données .. Je vais essayer les deux solutions – Rafee

+1

@Leven Vous juste ajouter un 'ORDER BY' à la requête SQL afin de le faire, de toute façon ... – DaveRandom

Répondre

3

Essayez ceci (FIXES):

<?php 

    // Number of columns 
    $hor_length = 5; 

    // Do the query, get the number of rows in the result 
    $fquery5 = mysql_query(" 
    SELECT Cat_ID, Cat_Name 
    FROM product_category 
    WHERE Active_Flag = 1 
    ");  
    $numrows = mysql_num_rows($fquery5); 

    // Start of table 
    echo "<table>\n<tr>\n"; 

    // Loop the results with a counter 
    for ($i = 1; $row = mysql_fetch_row($fquery5); $i++) { 
    // Every iteration echos a cell 
    echo "<td>Id : " . $row[0] . " = " . $row[1] . "</td>\n"; 
    // If we're at the end of a row, echo a row break, unless it is the last result 
    if (!($i % $hor_length) && $i < $numrows) { 
     echo "</tr>\n<tr>\n"; 
    } 
    } 

    // Right-pad the end row with empty cells 
    for ($i--; $i % $hor_length; $i++) { 
    echo "<td></td>\n"; 
    } 

    // Echo the end of the table 
    echo "</tr>\n</table>"; 

Voir un working example (créé manuellement le tableau de données puisque je ne peux pas interroger une base de données à partir CodePad)

+1

son donnant une erreur 'Undefined variable: numrows in' et son affiché le même premier' product_category' 15 fois dans le même 'tr' – Rafee

+0

Je viens de faire quelques corrections, essayez la version actuelle – DaveRandom

+0

Oui, nous l'avons eu mais, d'abord' product_category' liste adjacente est l'omission ou le formulaire de départ suivant 'tr' et j'ai ajouté cette image en question – Rafee