База данных по столбцам - PullRequest
0 голосов
/ 24 августа 2018
SZ   | name | Date      | back_number
1234 | John | 18.8.2018 | 5512345
2391 | Bels | 18.8.2018 | 6685800
3498 | ESON | 18.8.2018 | 6685800
4531 | me   | 18.8.2018 | 5512345
4531 | me   | 18.8.2018 | 8812345
4531 | me   | 18.8.2018 | 8812345

это мои данные из моей базы данных.

Мне нужно получить вывод после обработки SQL и PHP.

Мне нужно отфильтровать по back_number.Мне нужно отобразить записи в таблице по столбцу back_number.И каждый стол должен быть новым.В каждой таблице мне нужно назначить столько записей, сколько записей back_number.

table:

back_number - 5512345
-
SZ - 1234 | name - John | Date 18.8.2018
SZ - 4531 | name - me | Date 18.8.2018

next table

back_number - 6685800
-
SZ - 2391 | name - Bels | Date 18.8.2018
SZ - 3498 | name - ESON | Date 18.8.2018

and next table

back_number - 8812345
-
SZ - 4531 | name - me | Date 18.8.2018
SZ - 4531 | name - me | Date 18.8.2018

фактический код:

$sql = "SELECT * FROM my_DB GROUP BY back_number "; 

<?php

        foreach ($back_number as $row) {
          if( $row['back_number '] != null ){

                ?>
            <article>
                <div class="header header_green_grad">
                    <?php 
echo "back_number - " . $row['back_number '];

          ?>
                </div>
                <table>
                    <tr>
                        <?php
              echo "<td>" . $row['SZ'] . "</td>";
                        echo "<td>" . $row['back_number '] . "</td>";
                        echo "<td>" . date('d.m.Y', strtotime($row['date'])) . "</td>";
                        echo "<td>" . $row['name'] . "</td>";
            ?>
                    </tr>
                </table>
            </article>

У меня есть где-то, чтобы добавить больше foreach или что делать.Я не знаю совет.

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Как сказал @sticky, вы не можете использовать group by, он не возвращает группы строк отдельно.Он возвращает только один для каждой группы ...

Еще один способ сделать это -

$sql = "select distinct(back_number) from FROM my_db";
$back_numbers = mysqli_query($Conn, $sql);

Теперь,

foreach ($back_numbers as $back_number){
   $mysql = "select * from FROM my_db where back_number =".$back_number;
   $rows = mysqli_query($Conn, $mysql);  
   foreach($rows as $row){
       echo $row;
   }
} 

Ps одно преимущество здесьчто вы можете создать новую таблицу для каждого back_number внутри первого цикла и сохранить в ней строку $.

0 голосов
/ 25 августа 2018

Прежде всего, не GROUP BY, ORDER BY.

SELECT *
       FROM my_db
       ORDER BY back_number;

Тогда вы можете перебрать результат. Если когда-либо back_number изменится, напечатайте свой заголовок Затем или напечатайте строку.

Несколько набросков для этого:

$current_back_number = "";
foreach ($rows as $row) {
  if ($row["back_number"] != $current_back_number) {
    // print header
    $current_back_number = $row["back_number"];
  }
  // print row
}

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

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