Как отобразить все записи столбца БД в HTML, не указав столбец вручную? - PullRequest
0 голосов
/ 03 марта 2020

Я хочу извлечь все записи из таблицы PostgreSQL БД и отобразить эти данные, используя таблицу в HTML без указания имени столбца. У меня много таблиц со многими столбцами, поэтому я хочу, чтобы мой запрос в HTML был максимально отзывчивым.

Используя этот код ниже, я могу запрашивать данные из моей базы данных и распечатывать данные в браузере, но я должен указать, какой столбец я хочу отобразить.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8"> 
<title>Map</title>
</head>

<body onload="init()">
<h1>Map</h1>

<div>
<?php
$conn = pg_connect("host=localhost port=5432 dbname=visualization user=postgres password=*******");
$result = pg_query($conn,"SELECT * FROM myTable");
echo "<table>";
while($row=pg_fetch_assoc($result)){
    echo "<tr>";
    echo "<td align='center' width='200'>" . $row['lon'] . "</td>";  // set col manually
    echo "<td align='center' width='200'>" . $row['lat'] . "</td>";  // set col manually
    echo "</tr>";
}
echo "</table>";
pg_close($conn);
?>
</div>
</body>
</html>

Вот результат:

enter image description here

Я отображаю только 2 столбца, потому что я указал столбец вручную. Я хочу отобразить все столбцы в таблице с ее записями без указания вручную (до 100 столбцов). Как этого добиться?

Ответы [ 3 ]

1 голос
/ 03 марта 2020

Попробуйте:

while($row=pg_fetch_assoc($result)){
    echo "<tr>";
    $maxColumnDisplay = 100;
    foreach($row as $col){
        if(!$maxColumnDisplay--) break;
        echo "<td align='center' width='200'>" . $col . "</td>";
    }
    echo "</tr>";
}
1 голос
/ 03 марта 2020

Попробуйте это:

function printTable(&$result) //result set
{
    /**  Set up Table and Headers **/
    $fieldinfo = $result->fetch_fields();
    echo '<table class="sqldump">' . "\n";
    echo '<tr class="header">' . "\n";
    foreach ($fieldinfo as $fieldval) {
        echo "<td>".$fieldval->name."</td>\n";
    }
    echo "</tr>\n";

    /** dump rows **/
    while($row = $result->fetch_assoc()) {
        echo "<tr>";
        foreach ($row as $column) {
            echo "<td>".$column."</td>\n";
        }
        echo "</tr>";
    }
    echo "</table>\n";

    /**  gc  **/
    $result->free();
}
1 голос
/ 03 марта 2020

Поскольку ваши столбцы находятся в массиве, вы можете просто foreach() над строкой. Отображение столбцов должно быть достаточно хорошим или оставлено как значения по умолчанию, чтобы дисплей выглядел разумно ...

while($row=pg_fetch_assoc($result)){
    echo "<tr>";
    foreach ( $row as $key => $value )  {
        echo "<td align='center' width='200'>" . $value . "</td>";
    }
    echo "</tr>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...