PHP MySQL таблица, многоразовая - PullRequest
0 голосов
/ 21 января 2012

Есть ли лучший способ для отображения данных из таблицы MySQL вместо создания таблицы, а затем заголовков с жестким кодом и полей в таблице?

Псевдокод того, что я сейчас делаю, это

<table>
<tr>
  <th>I am </th><th> harcoded</th>
</tr>
mysql loop through data
for all fields 
while($row = mysql_fetch_assoc($result)){
  <tr>
   <td>data
   </td>
   <td>data
   </td>
  </tr>
}
</table>

Ответы [ 2 ]

1 голос
/ 21 января 2012

Я обычно делаю что-то вроде этого:

$header_done = false;
while($rs = mysql_fetch_assoc($result))
{
    if (!$header_done)
    {
        echo "<tr>";
        foreach ($rs as $k=>$v)
        {
            echo "<td>" . htmlspecialchars ($k) . "</td>";
        }
        $header_done = true;
        echo "</tr>";
    }

    // etc...

}

обновление: вот функция, которую я написал несколько лет назад, которую я иногда использую

function EZ_TBL ( $all_rows, $first_row_headers=TRUE )
{

$tr = array ();

if ( $first_row_headers )
{  
    $td = array ();
    foreach ( $all_rows[0] as $k=>$v )
    {  
        if ( $k == 'sort_order' ) continue;
        $td[] = strtoupper ( $k ); 
    }  

    $tr[] = '<td class="header_row">' . implode ( '</td><td class="header_row">', $td ) . '</td>';
}  

usort ( $all_rows, 'sort_by_sort_order' ); 

foreach ( $all_rows as $row )
{  
    $td = array ();
    foreach ( $row as $k=>$v )
    {  
        if ( $k == 'sort_order' ) continue;

        if ( $k == 'url' )
        {  
            $td[] = '<a href="' . $v . '">' . $v . '</a>';  
        } else {
            $td[] = $v; 
        }  
    }  
    $tr[] = '<td>' . implode ( "</td>\n<td>", $td ) . '</td>';
}  

return '<table><tr>' . implode ( "</tr>\n<tr>", $tr ) . '</tr></table>';
}
1 голос
/ 21 января 2012

Вы можете создать заголовок таблицы, используя mysql_list_fields ()

РЕДАКТИРОВАТЬ: функция устарела, но она показывает пример того, как это сделать, выполнив запрос.

...