it-swarm-es.tech

¿Cómo imprimir un conjunto de resultados de una sola fila como una tabla html?

Estoy realizando una consulta de base de datos 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>

El resultado que obtengo se parece a esto:

Matriz ([0] => any_username [1] => val_of_col1 [2] => val_of_col2 [3] => val_of_col3)

¿Cómo convertirlo en un tabla HTML?

3
saibbyweb

Prueba esto:

$rows = $db->loadrow();

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

Primero hace eco de la estructura de la tabla base y luego muestra sus resultados

10
Lodder

Solo para aclarar una posible idea errónea sobre el script en la pregunta ...

$result = $db->loadResult(); no tiene un rol activo/necesario para jugar en el proceso. $result No se usa después de que se declara y no se "configura" loadRow().

En cuanto a cómo hacer eco de cada valor de columna, recomendaré implode() como el método más conciso. Al hacerlo, no importará si construye su conjunto de resultados desde loadRow() o loadAssoc() porque implode() ignorará las teclas. Lo que sí importa son las columnas que escriba en su cláusula SELECT: esto determinará exactamente qué columnas se presentan. Es poco probable que desee mostrar TODAS las columnas, por lo que * Debería cambiarse por declaraciones de columna literales (ya sea como una cadena separada por comas o como una matriz de cadenas). El fragmento a seguir funcionará perfectamente incluso si solo selecciona una sola columna (y genera un conjunto de resultados unidimensional).

$db->loadRow() con 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>';
}

Si desea mostrar una fila de encabezados de columna, use loadAssoc() para generar el conjunto de resultados. Si desea ajustar uno o más encabezados de columna para imprimirlos en la pantalla, use un "alias de columna" cuando corresponda en la cláusula SELECT de su 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