J'effectue une requête de base de données comme celle-ci:
$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>
La sortie que je reçois ressemble un peu à ceci:
Tableau ([0] => any_username [1] => val_of_col1 [2] => val_of_col2 [3] => val_of_col3)
Comment le convertir en tableau HTML?
Essaye ça:
$rows = $db->loadrow();
echo '<table>';
echo '<tr>';
foreach($rows as $row) {
// display your results here
}
echo '</tr>';
echo '</table>';
Vous commencez par faire écho à la structure de la table de base, puis affichez vos résultats
Juste pour éclaircir une idée fausse possible sur le script dans la question ...
$result = $db->loadResult();
n'a pas de rôle actif/nécessaire à jouer dans le processus. $result
N'est pas utilisé après sa déclaration et il ne "configure" pas loadRow()
.
En ce qui concerne la résolution de chaque valeur de colonne, je vous recommande la méthode la plus concise: implode()
. Ce faisant, peu importe si vous construisez votre jeu de résultats à partir de loadRow()
ou loadAssoc()
, car implode()
ignorera les clés. Ce qui importe, ce sont les colonnes que vous écrivez dans votre clause SELECT - cela dictera exactement quelles colonnes sont présentées. Il est peu probable que vous souhaitiez afficher TOUTES les colonnes. Par conséquent, *
Doit être remplacé par des déclarations de colonne littérales (sous forme de chaîne séparée par des virgules ou d'un tableau de chaînes). L'extrait à suivre fonctionnera parfaitement même si vous ne sélectionnez qu'une seule colonne (et générez un ensemble de résultats unidimensionnel).
$db->loadRow()
avec 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 vous souhaitez afficher une ligne d'en-têtes de colonne, utilisez loadAssoc()
pour générer le jeu de résultats. Si vous souhaitez ajuster un ou plusieurs en-têtes de colonne à imprimer à l'écran, utilisez un "alias de colonne" le cas échéant dans la clause SELECT de votre requête.
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>';
}