ti-enxame.com

Como imprimir um conjunto de resultados de linha única como uma tabela html?

Estou executando uma consulta ao banco de dados como esta:

$db = JFactory::getDbo();
$user = JFactory::getUser();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__table_name'));
$query->where($db->quoteName('username') . " = ". $db->quote($user->username));
$db->setQuery($query);

$result = $db->loadResult();

$row = $db->loadrow();
print_r($row); </pre>

A saída que eu recebo é mais ou menos assim:

Matriz ([0] => nome_do_usuário [1] => val_of_col1 [2] => val_of_col2 [3] => val_of_col3)

Como convertê-lo em um tabela HTML?

3
saibbyweb

Tente o seguinte:

$rows = $db->loadrow();

echo '<table>';
echo '<tr>';  
   foreach($rows as $row) {
       // display your results here
   }
echo '</tr>';
echo '</table>';

Primeiro você faz eco da estrutura da tabela base e exibe seus resultados

10
Lodder

Apenas para esclarecer um possível equívoco sobre o script na pergunta ...

$result = $db->loadResult(); não tem um papel ativo/necessário a desempenhar no processo. $result Não é usado depois de declarado e não "configura" loadRow().

Quanto ao eco de cada valor de coluna, vou recomendar implode() como o método mais conciso. Ao fazer isso, não importará se você criar seu conjunto de resultados de loadRow() ou loadAssoc() porque implode() ignorará as teclas. O que importa são as colunas que você escreve na sua cláusula SELECT - isso determinará exatamente quais colunas serão apresentadas. É improvável que você deseje exibir TODAS as colunas, portanto * Deve ser trocado por declarações literais de coluna (como uma sequência separada por vírgula ou uma matriz de sequências). O trecho a seguir funcionará perfeitamente, mesmo se você selecionar apenas uma única coluna (e gerar um conjunto de resultados unidimensional).

$db->loadRow() com implode():

if (!$row = $db->loadRow()) {  // declare and check
    echo "No Row Found";
} else {
    echo '<table>';
        echo '<tr>';
            echo '<td>' , implode('</td><td>', $row) , '</td>';
        echo '</tr>';
    echo '</table>';
}

Se você deseja exibir uma linha de títulos de coluna, use loadAssoc() para gerar o conjunto de resultados. Se você deseja ajustar um ou mais títulos de coluna a serem impressos na tela, use um "alias de coluna", quando apropriado, na cláusula SELECT da sua consulta.

if (!$row = $db->loadAssoc()) {  // declare and check
    echo "No Row Found";
} else {
    echo '<table>';
        echo '<tr>';
            echo '<th>' , implode('</th><th>', array_keys($row)) , '</th>';
        echo '</tr>';
        echo '<tr>';
            echo '<td>' , implode('</td><td>', $row) , '</td>';
        echo '</tr>';
    echo '</table>';
}
0
mickmackusa