it-swarm.com.de

Wie drucke ich eine einzeilige Ergebnismenge als HTML-Tabelle?

Ich führe eine Datenbankabfrage wie folgt aus:

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

Die Ausgabe, die ich erhalte, sieht ungefähr so ​​aus:

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

Wie konvertiere ich es in eine HTML-Tabelle?

3
saibbyweb

Versuche dies:

$rows = $db->loadrow();

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

Sie geben zuerst die Basistabellenstruktur aus und zeigen dann Ihre Ergebnisse an

10
Lodder

Nur um ein mögliches Missverständnis über das Skript in der Frage aufzuklären ...

$result = $db->loadResult(); hat keine aktive/notwendige Rolle zu spielen. $result Wird nicht verwendet, nachdem es deklariert wurde, und es "richtet" loadRow() nicht ein.

Ich empfehle implode() als die prägnanteste Methode, wie jeder Spaltenwert ausgegeben wird. Dabei spielt es keine Rolle, ob Sie Ihre Ergebnismenge aus loadRow() oder loadAssoc() erstellen, da implode() die Tasten ignoriert. Was zählt, sind die Spalten, die Sie in Ihre SELECT-Klausel schreiben - dies bestimmt genau, welche Spalten dargestellt werden. Es ist unwahrscheinlich, dass Sie ALLE Spalten anzeigen möchten, daher sollte * Gegen wörtliche Spaltendeklarationen ausgetauscht werden (entweder als durch Kommas getrennte Zeichenfolge oder als Array von Zeichenfolgen). Das folgende Snippet funktioniert auch dann einwandfrei, wenn Sie nur eine einzelne Spalte auswählen (und eine eindimensionale Ergebnismenge generieren).

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

Wenn Sie eine Reihe von Spaltenüberschriften anzeigen möchten, verwenden Sie loadAssoc(), um die Ergebnismenge zu generieren. Wenn Sie eine oder mehrere Spaltenüberschriften anpassen möchten, die auf dem Bildschirm gedruckt werden sollen, verwenden Sie gegebenenfalls einen "Spaltenalias" in der SELECT-Klausel Ihrer Abfrage.

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