Категоризация данных MySQL в отдельных таблицах HTML? - PullRequest
1 голос
/ 09 марта 2011

У меня есть запрос к базе данных, который возвращает ItemID, ItemName, CategoryID и CategoryName.Я пытаюсь сгруппировать свои результаты в отдельные html-таблицы по их CategoryName, чтобы конечный результат выглядел примерно так:

 ________________________________
|____________CategoryName________|
| ItemName |                     |
|__________|                     |
| ItemName |                     |
|__________|                     |
| ItemName |                     |
|__________|_____________________|
 ________________________________
|____________CategoryName________|
| ItemName |                     |
|__________|                     |
| ItemName |                     |
|__________|                     |
| ItemName |                     |
|__________|_____________________|

В настоящее время я могу вывести свои данные в одну таблицу, но я не уверен, как поступитьостальные.Кажется, у меня больше навыков ascii, чем у php: /

Ответы [ 3 ]

0 голосов
/ 09 марта 2011

HTML отключен, но это должно помочь вам начать:

<?php

$query = 'SELECT CategoryID, CategoryName, ItemID, ItemName
FROM tableName
ORDER BY CategoryID';

$result = mysql_query($query);
if (!$result || mysql_num_rows($result) == 0) {
    echo "No rows found";
    exit;
}

$lastCatID = 0; //or some other invalid category ID

while ($row = mysql_fetch_assoc($result)) {
    if($lastCatID != $row['CategoryID']) {
        //starting a new category
        if($lastCatID != 0) {
            //close up previous table
            echo '</table>';
        }

        //start a new table
        echo '<table><th><td colspan="2">Category '
                . $row['CategoryName'] .'</td></th>';
        $lastCatID = $row['CategoryID'];
    }

    echo '<tr><td>' . $row['ItemName'] . '</td><td></td></tr>';
}

if($lastCatID != 0) {
    //close up the final table
    echo '</table>';
}

mysql_free_result($result);
?>
0 голосов
/ 09 марта 2011

Мне нравится работать с foreach лучше - вот так:

$query = "SELECT CategoryID, CategoryName, ItemID, ItemName
FROM tableName
ORDER BY CategoryID";

$result = mysql_query($query);
if (!$result || mysql_num_rows($result) == 0) {
    echo "No rows found";
    exit;
}

$rows = mysql_fetch_assoc($result);

// create an array with the data structure closest to the HTML 
foreach( $rows as $row){
    $cats_data[$row['CategoryID']]['CategoryName'] = $row['categoryName'] ;
    $cats_data[$row['CategoryID']]['Items'][] = $row['ItemName'] ;
}

// Iterate through each category
foreach ( $cats_data as $category ) {
     echo '<table>';

     // echo out the table header
     echo '<tr><td>Item List for '.$category['CategoryName'].'</td></tr>' ;

     // Iterate through all the items in eaceh category
     foreach( $category['items'] as $item ) {
           echo '<tr><td>'.$item.'</td></tr>';
     }

     echo '</table>';
}

// cleanup
mysql_free_result($result);

мне намного проще :) 1005 *

0 голосов
/ 09 марта 2011

Сортируйте ваши данные по CategoryName и затем начните цикл. В цикле напишите начальный HTML для первой таблицы и начните выводить строку за строкой, но перед каждой строкой проверяйте CategoryName - если он изменился, закройте текущую таблицу и начните новую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...