it-swarm.dev

Come stampare un set di risultati a riga singola come tabella html?

Sto eseguendo una query di database come questa:

$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>

L'output che ottengo è in qualche modo simile a questo:

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

Come convertirlo in tabella HTML?

3
saibbyweb

Prova questo:

$rows = $db->loadrow();

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

Prima fai eco alla struttura della tabella di base e poi visualizzi i risultati

10
Lodder

Giusto per chiarire un possibile malinteso sulla sceneggiatura nella domanda ...

$result = $db->loadResult(); non ha un ruolo attivo/necessario da svolgere nel processo. $result Non viene utilizzato dopo che è stato dichiarato e non "imposta" loadRow().

Per quanto riguarda come riecheggiare ogni valore di colonna, raccomanderò implode() come il metodo più conciso. In tal modo, non importa se si crea il set di risultati da loadRow() o loadAssoc() perché implode() ignorerà i tasti. Ciò che conta sono le colonne che scrivi nella clausola SELECT - questo determinerà esattamente quali colonne sono presentate. È improbabile che tu voglia visualizzare TUTTE le colonne, quindi * Dovrebbe essere scambiato per dichiarazioni letterali di colonna (come una stringa separata da virgola o una matrice di stringhe). Lo snippet da seguire funzionerà perfettamente anche se selezioni solo una singola colonna (e generi un set di risultati unidimensionale).

$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>';
}

Se si desidera visualizzare una riga di intestazioni di colonna, utilizzare loadAssoc() per generare il set di risultati. Se si desidera regolare una o più intestazioni di colonna da stampare sullo schermo, utilizzare un "alias di colonna" ove appropriato nella clausola SELECT della query.

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