Как получить данные из базы данных и отобразить диапазон строк таблицы в php

Я хочу отображать динамические данные в диапазоне строк таблицы HTML, я извлекаю данные из базы данных, все данные поступают, но мне нужны эти динамические данные в формате таблицы HTML, ниже я указал свой формат HTML и мой php-код, пожалуйста, проверьте и помогите я новичок в PHP.

В приведенном ниже формате мне нужно, как сделать:

cycle   event        dateassigned       datecompleted

        inventory     21-3-2022         22-3-2022
1       inspection    21-3-2022         22-3-2022
        retest        21-3-2022         22-3-2022
        repairtest    21-3-2022         22-3-2022

        inventory     22-3-2022         22-3-2022
2       inspection    22-3-2022         22-3-2022
        retest        22-3-2022         22-3-2022  
        repairtest    22-3-2022         22-3-2022

Запрос:

 $query = "select bm.bridge_id, bm.status, bm.transaction_datetime,bm.review,bm.cycle,bm.event from bridge_details bm where bm.bridge_id = '$bridge_id'";
    
                        
                        $res = mysqli_query($maindb_handle, $query) or die(__FUNCTION__." Query Failed ".  "<br>($maindb_handle)<br>MySQL Error[".mysqli_error($maindb_handle)."]");
    
    
                        $row = mysqli_fetch_assoc($res);



    if ($row['bridge_id'] == '') {
                    ?>
                            <div align = "center"><font color = "red">Bridge Doesn't Existst - <?=$bridge_id?> </font></div>
                    <?php   } else { ?>
                        <table border = "2" align = "center" width = "80%">
                            <tr>
                                <th style = "line-height:15px; font-size:15px; color:#984806; font-family:Arial Rounded MT Bold;"><b>Cycle</b></th>
                                <th style = "line-height:15px; font-size:15px; color:#984806; font-family:Arial Rounded MT Bold;"><b>Type</b></th>
                                <th style = "line-height:15px; font-size:15px; color:#984806; font-family:Arial Rounded MT Bold;"><b>Date Assined</b></th>
                                <th style = "line-height:15px; font-size:15px; color:#984806; font-family:Arial Rounded MT Bold;"><b>Date Completed</b></th>
                                
                            </tr>
    
    <?php
    
                        echo '<tr>';
                        for ($i = 0; $i <=1; $i++){
                          echo '<td rowspan = "4">'.$row['cycle'].'</td>';
                          echo '<td>'.$row['event'].'</td>';
                          echo '<td>'.$row['transaction_datetime'].'</td>';
                          echo '<td>'.$row['review'].'</td>';
                        }
                        echo '</tr>';
    
                        
    
                        ?> 
    </table>
    <?php } ?>

 

В чем именно проблема? Пожалуйста, опишите предполагаемое поведение вашего кода.

kmoser 22.03.2022 05:36

var_dump($data) внутри вашего while, чтобы проверить, что возвращается, а затем эхо в соответствии с возвращенным столбцом.

Aqib Javed 22.03.2022 06:09

Обратите внимание, что данный запрос SELECT широко открыт для SQL-инъекций. Посмотрите подготовленные заявления, чтобы избежать взлома

Nico Haase 22.03.2022 08:20
Предупреждение: Вы широко открыты для SQL-инъекции и должны использовать параметризованный подготовленные заявления вместо создания запросов вручную. Они предоставляются ЗОП или MySQLi. Никогда не доверяйте никаким данным! Даже если ваши запросы выполняются только доверенными пользователями, вы все еще рискуете повредить свои данные. Бежать недостаточно!
Dharman 22.03.2022 10:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

вам нужно вернуть массив из базы данных в переменную $data

$handler = new mysqli($hostname, $username, $password, $database);

$bridge_id = 1;

$query = "select bm.bridge_id, bm.status, bm.transaction_datetime,bm.review,bm.cycle,bm.event from bridge_details bm ";
$result = $handler->query($query, MYSQLI_STORE_RESULT);

$data = array();

//rows
if ($result !== FALSE) {
    $i = 0;
    while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $data[$i] = $row;
        $i++;
    }
    $result->close();
} else {
    trigger_error('Error: ' . $handler->error . '<br />Error No: ' . $handler->errno . '<br />' . $query);
    exit();
}

далее вам нужно переопределить массив

<?php 
    $rows =[];   
    foreach($data as $k =>$v){
        $rows[$v['cycle']][] = $v; 
    }
 ?>

и в цикле выведите этот массив

    
    <?php
        foreach($rows as $n =>$val){
            foreach($val as $nom =>$value){
                echo '<tr>';
                    if ($nom == 0){
                        echo '<td rowspan = "4">'.$n.'</td>';
                    }
                    echo '<td>'.$value['event'].'</td>';
                    echo '<td>'.$value['transaction_datetime'].'</td>';
                    echo '<td>'.$value['review'].'</td>';
                echo '</tr>';
            }
        }
    
    ?> 

Привет, Pavel12398.....Применил, но не работает....

Raja 22.03.2022 05:56

@Raja «Не работает» нам не помогает. Пожалуйста, будьте конкретны: что именно происходит и чем это отличается от ваших ожиданий?

kmoser 22.03.2022 17:15

Привет, Pavel12398.....Спасибо, работает нормально. Теперь мне нужна еще одна вещь, какой бы ни был идентификатор моста, который отображает данные значения, но мне нужно, чтобы 4 события отображались все время, а другие переменные данные отсутствуют --NA-- отобразит, как это сделать? пожалуйста...

Raja 24.03.2022 12:51

замените свой цикл for на этот. вы помещали все свои tds в один tr. Это проблема.

for ($i = 0; $i <=1; $i++){
                   echo '<tr>';
                  echo '<td rowspan = "4">'.$row['cycle'].'</td>';
                  echo '<td>'.$row['event'].'</td>';
                  echo '<td>'.$row['transaction_datetime'].'</td>';
                  echo '<td>'.$row['review'].'</td>';
                 echo '</tr>';

                }           

Привет, JustCode.... Выше я дал формат таблицы, который я хочу, пожалуйста, проверьте мой код...

Raja 22.03.2022 05:57

Другие вопросы по теме