Шаг 1: вот функция, которая возвращает набор результатов

public function getLogById($reg_id) {

        $stmt = $this->conn->prepare("SELECT * FROM tracking_log WHERE registration_id = ? LIMIT 5");
        $stmt->bind_param("s", $reg_id);

        if ($stmt->execute()) {

            $result = $stmt->get_result()->fetch_all();
            $stmt->close();
            return $result;
        }
        else {

            return false;
        }


    }

Шаг 2: Здесь я вызываю эту функцию

if(isset($_SESSION['registration_id'])){

    $id = $_SESSION['registration_id'];

    $result = $logs->getLogById($id);

    echo "<table>";

    foreach($tracking_result as $result)
                      {
                          foreach($result as $key => $value)

                          {
                              //echo "<li>$key : $value</li>";
                              echo "<tr class=\"active\" role=\"row\">";
                              echo "<td>Here I want to Display colum-1 of my DB-Table</td>";
                              echo "<td>"Here I want to Display colum-3 of my DB-Table"</td>";
                              echo "<td>Here I want to Display colum-4 of my DB-Table</td>";
                              echo "</tr>";

                          }
                      }
    echo "<\table>";
}

Когда я print_r($result); показывает мой результат вот так

1

35124

2017-04-12 00:00:00

30.102261

-81.711777

2

35124

2017-04-10 00:00:00

30.102261

-81.711457

3

35124

2017-04-11 00:00:00

30.063936

-81.711307

4

35124

2017-04-12 00:00:00

30.102451

-81.711957

5

35124

2017-08-12 00:00:00

30.102261

-81.795777

Пожалуйста, помогите мне решить эту проблему.

php
0
user810265 24 Апр 2017 в 21:32

2 ответа

Лучший ответ

Вам нужен только один цикл foreach. И вы должны перебрать свою базу данных $result.

В зависимости от стиля выборки вы можете получить доступ к столбцам, используя $row['some_column_name'] или $row[0] в цикле foreach.

foreach($result as $row) {

    echo "<tr class=\"active\" role=\"row\">";
    echo "<td>".$row[0]."</td>";
    echo "<td>".$row[1]."</td>";
    echo "<td>".$row[2]."</td>";
    echo "<td>".$row[3]."</td>";
    echo "</tr";

}
0
Yolo 25 Апр 2017 в 00:09

Я вижу некоторые осадки здесь. Первое, что я не понял, почему вы это ставите, это ваш цикл за $tracking_result. Второе - это неправильная строка "<td>"Here I want to Display colum-3 of my DB-Table"</td>".

Как бы то ни было, первое, что вам нужно сделать, это создать пустой пример HTML без какого-либо взаимодействия с PHP, просто чтобы посмотреть, чего вы хотите достичь. Например:

<table>
    <tr>
        <th>Header 1</th>
        <th>Header 2</th>
        <th>Header 3</th>
    <tr/>
    <tr>
        <td>Row 1 Value 1</td>
        <td>Row 1 Value 2</td>
        <td>Row 1 Value 3</td>
    <tr/>
    <tr>
        <td>Row 2 Value 1</td>
        <td>Row 2 Value 2</td>
        <td>Row 2 Value 3</td>
    <tr/>
    <tr>
        <td>Row 3 Value 1</td>
        <td>Row 3 Value 2</td>
        <td>Row 3 Value 3</td>
    <tr/>
</table>

Это простая таблица HTML. Если вы хотите заполнить его известными данными и известными заголовками, вам просто нужно сосредоточиться на ваших строках следующим образом:

<table>
    <tr>
        <th>Header 1</th>
        <th>Header 2</th>
        <th>Header 3</th>
    <tr/>
    <?php foreach($results as $row) { ?>
    <tr>
        <td><?php echo $row['value1']; ?></td>
        <td><?php echo $row['value2']; ?></</td>
        <td><?php echo $row['value3']; ?></</td>
    <tr/>
    <?php } ?>
</table>

Но если вы хотите заполнить его неизвестными данными или заголовками, мы начнем что-то более сложное. Соблюдая правило, вы можете достичь этого:

Переменная $ result должна быть индексированным массивом String.

Это означает, что мы можем получить наши значения ключей как наши читаемые заголовки. Есть полезная функция PHP, которая может помочь нам: array_keys. С этим мы можем получить эти заголовки как новый массив. Круто, верно? Но это работает только если у нас есть хотя бы одна строка в $results. Если это просто пустой массив, мы ничего не получили. Поэтому нам нужно проверить это перед началом.

<?php
    $isEmpty = empty($results);
    if($isEmpty) {
        echo "I'm sorry, we got nothing. :(";
    } else {
        $headers = array_keys($results[0]); // I'm assuming that all of them have the same indexes.
?>
<table>
    <tr>
        <?php foreach($headers as $header) { ?>
        <th><?php echo $header; ?></th>
        <?php } ?>
    <tr/>
    <?php foreach($results as $row) { ?>
    <tr>
        <?php foreach($headers as $header) { ?>
        <td><?php echo $row[$header]; ?></td>
        <?php } ?>
    <tr/>
    <?php } ?>
</table>
<?php
    }
?>

Я действительно не рекомендую использовать что-то настолько общее, но это все.

0
Community 20 Июн 2020 в 09:12
43595344