MySQL для отображения значений HTML для того же столбца значения - PullRequest
0 голосов
/ 09 июня 2018

У меня проблемы с получением правильного вывода.У меня есть такая таблица:

table

Я использую следующий код PHP для создания таблицы:

<?php 
include_once("includes/dbh.inc.php");
if(isset($_POST["r_id"])){
    $output = '';

    $query = "SELECT * FROM relatorioc WHERE datas = '".$_POST["r_id"]."'";
    $res = mysqli_query($conn, $query);

    $output .='
    <div class="table-responsive">
        <table class="table table-bordered">';

        while($row = mysqli_fetch_array($res)){                
            $output .= '
                `<tr>
                    <td>'.$row['linha'].'</td>
                    <td>'.$row['user'].'</td>
                    <td>'.$row['prob'].'</td>
                    <td>'.$row['res'].'</td>
                    <td>'.$row['timep'].'</td>
                    <td>'.$row['timei'].'</td>
                </tr>';
        }
        $output .= "</table></div>";
        echo $output;    
}

Ответы [ 3 ]

0 голосов
/ 10 июня 2018

сначала сделайте запрос, сгруппировав результаты в соответствии с вашими потребностями, чтобы сделать это ->:

select * from relatorioc datas = '". $ _ POST [" r_id "]."' "; group by 'linha' with it will provide the necessary data to the following query ->: $ query = "SELECT * FROM relatoryc WHERE datas = '". $ _ POST ["r_id"]. "'" and linha = 'previous result';
0 голосов
/ 10 июня 2018

Прежде чем я отвечу на ваш вопрос, важно знать о вашей очевидной дыре в безопасности в вашем коде, которая является SQL-инъекцией : вы не экранируете ввод перед вводом в SQL-запрос.($_POST["r_id"])

Теперь по вашему вопросу все, что я сделал, это сделал массив, и в цикле while я вводил строки, сгруппированные по "linha", а затем выводил, используя два foreach.Я также избежал ввода для вас, в запросе SQL.(mysqli_real_escape_string)

if (isset($_POST["r_id"])) {
    $output = '';

    $query = "SELECT * FROM relatorioc WHERE datas = '" . mysqli_real_escape_string($conn, $_POST["r_id"]) . "'";
    $res = mysqli_query($conn, $query);

    $data = [];

    while ($row = mysqli_fetch_array($res)) {
        $data[$row['linha']][] = $row;
    }

    $output .= '';

    foreach ($data as $linha => $items) {
        $output .= '<p>' . $linha . '</p>';
        $output .= '
        <div class="table-responsive">
            <table class="table table-bordered">';

        foreach ($items as $row) {
            $output .= '
            <tr>
                <td>' . $row['linha'] . '</td>
                <td>' . $row['user'] . '</td>
                <td>' . $row['prob'] . '</td>
                <td>' . $row['res'] . '</td>
                <td>' . $row['timep'] . '</td>
                <td>' . $row['timei'] . '</td>
            </tr>';
        }

        $output .= '</table></div>';
    }

    echo $output;
}
0 голосов
/ 09 июня 2018

Вам нужно сделать первый запрос 'group by', а перед тем, как сделать другой с col, сгруппированным, если у вас нет большого опыта работы с Mysql, возможны и другие более сложные запросы.

(группируйте по 'linha' впервый запрос и перед другим с помощью where (first resul are = 'linha' value)

select * from relatorioc datas = '". $ _ POST [" r_id "]."' "; сгруппировать по" linha "перед: $ query = "SELECT * FROM relatorioc WHERE datas = '". $ _ POST ["r_id"]. "'" и linha = 'предыдущий результат';

Это простое решение для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...