Porządkowanie pobranych danych z bazy

0

Witam wszystkich użytkowników forum.
Mam mały problem i proszę o pomoc, przy czym chce podkreślić że jestem amatorem.
Mam kod który pobiera dane z bazy :

$sql = "SELECT * FROM serwis WHERE ID = 1";
$result = mysqli_query($conn, $sql);
$queryResult = mysqli_num_rows($result);
if($queryResult > 0){
echo "<table><tr>";
while ($row = mysqli_fetch_assoc($result)){
$DataSerwis = $row["DataSerwis"];
$PrzebiegSerwis = $row["PrzebiegSerwis"];
echo "<td><z1>Data Serwisu</z1> &nbsp $DataSerwis, <z1>Przebieg</z1> &nbsp $PrzebiegSerwis</td>";
}}
echo "</tr></table>";

Wynikiem tego (konkretnego) zapytania jest 8 "rezultatów" które wyświetlane są na stronie w następujący sposób :
<table>
<tr>
<td>"data serwisu1, "przebieg serwisu1"</td>
<td>"data serwisu2, "przebieg serwisu2"</td>
<td>"data serwisu3, "przebieg serwisu3"</td>
<td>"data serwisu4, "przebieg serwisu4"</td>
<td>"data serwisu5, "przebieg serwisu5"</td>
<td>"data serwisu6, "przebieg serwisu6"</td>
<td>"data serwisu7, "przebieg serwisu7"</td>
<td>"data serwisu8, "przebieg serwisu8"</td>
</tr>
</table>
Jak powinien wyglądać kod który w rezultacie wyświetlałby dane w takiej formie :
<table>
<tr>
<td>"data serwisu1, "przebieg serwisu1"</td>
<td>"data serwisu2, "przebieg serwisu2"</td>
<td>"data serwisu3, "przebieg serwisu3"</td>
<td>"data serwisu4, "przebieg serwisu4"</td>
<td>"data serwisu5, "przebieg serwisu5"</td>
</tr>
<tr>
<td>"data serwisu6, "przebieg serwisu6"</td>
<td>"data serwisu7, "przebieg serwisu7"</td>
<td>"data serwisu8, "przebieg serwisu8"</td>
</tr>"
</table>"
Chodzi o to aby dane były wyświetlane - po 5 - w jednej linii a następnie robiony był kolejny wiersz.

Może to zapytanie jest "prostackie" i wielu może drwić z braku podstawowej wiedzy, jednak podkreślam że nie jestem "pro" a cała pracy ma służyć tylko mi.

0

Hej,

Prosta sprawa, trzeba dodać zmienną która liczy ile wydrukowano już rekordów. jeżeli jest 5, to wtedy zamykasz TR i otwierasz na nowo i tak znowu.

Zaznaczam że PHP to nie mój język więc pisane w notatniku ale powinno nakierować Cię to do finalnego rozwiązania.

$sql = "SELECT * FROM serwis WHERE ID = 1";
$result = mysqli_query($conn, $sql);
$queryResult = mysqli_num_rows($result);
if($queryResult > 0){
$count = 0;
echo "<table><tr>";
while ($row = mysqli_fetch_assoc($result)){
    $count = $count + 1; //zwiekszamy licznik 1 wydruk linii

    if ($count = 6) { //5 linii wydrukowanych, zamykamy tr i otwieramy nowy
        echo "</tr><tr>";
        $count = 0;
    }

$DataSerwis = $row["DataSerwis"];
$PrzebiegSerwis = $row["PrzebiegSerwis"];
echo "<td><z1>Data Serwisu</z1> &nbsp $DataSerwis, <z1>Przebieg</z1> &nbsp $PrzebiegSerwis</td>";
}}
echo "</tr></table>";

1

@Damian Korczowski: To nie jest dobry pomysł ... po to się robi paginację aby nie targać z bazy wszystkich rekordów naraz lepiej użyć

LIMIT x, y 

w zapytaniu gdzie będziemy przekazywać ile rekordów chcemy pobrać i z jakim offsetem
https://www.guru99.com/limit.html

Przy 8 rekordach to nie jest problem i można targnąć całość ale jak będzie 1 mln rekordów to wtedy problem zacznie się pojawiać.

0

@Damian Korczowski:
Przy takim kodzie wyniki wyświetlane są jeden pod drugim.
I faktycznie nie będę miał problemu z nadmiarem rekordów .

Sprawdziłem jak zachowuje się zmienna $count - stale ma wartość 0.

$sql = "SELECT * FROM serwis WHERE IDpojazd = 1";
$result = mysqli_query($conn, $sql);
$queryResult = mysqli_num_rows($result);
if($queryResult > 0)
{
$count = 0;
echo "<table><tr>";
while ($row = mysqli_fetch_assoc($result))
{
if ($count == 5)
{
echo "</tr><tr>";
$count = 0;
}
else
{
$count = $count + 1;
$DataSerwis = $row["DataSerwis"];
$PrzebiegSerwis = $row["PrzebiegSerwis"];
echo "<td><z1>Data Serwisu</z1> &nbsp $DataSerwis <z1>Przebieg</z1> &nbsp $PrzebiegSerwis</td>";
}
}

}
echo "</tr></table>";
Tak jest dobrze.

Dzięki na naprowadzenie

1

@Cardo: Ahh ten PHP ;-) źle przypisałem porównanie + trochę sformatowałem kod aby lepiej sie czytał:

<?php

$count = 0;
$sql = "SELECT * FROM serwis WHERE ID = 1";
$result = mysqli_query($conn, $sql);
$queryResult = mysqli_num_rows($result);

if($queryResult > 0){
    echo "<table><tr>";

    while ($row = mysqli_fetch_assoc($result)){
        $count = $count + 1; //zwiekszamy licznik 1 wydruk linii

        if ($count == 6) { //5 linii wydrukowanych, zamykamy tr i otwieramy nowy
            echo "</tr><tr>";
            $count = 0;
        }

        $DataSerwis = $row["DataSerwis"];
        $PrzebiegSerwis = $row["PrzebiegSerwis"];
        echo "<td><z1>Data Serwisu</z1> &nbsp $DataSerwis, <z1>Przebieg</z1> &nbsp $PrzebiegSerwis</td>";
    }

}
echo "</tr></table>";

?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1