размещение результатов из mysql в ту же строку

У меня есть одна таблица mysql с несколькими столбцами.
Используя php, я хотел бы показать результаты в таблице html.
до сих пор так хорошо, но я хотел бы показать name_of_insurance и сумму в одной строке, но в разных колумах в зависимости от month_of_payment.

mysql / php код:

<html>
<head>
<title>Monatsübersicht</title>
<link href="design.css" type="text/css" rel="stylesheet">
</head>
<?php
include 'connect.php';
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = "SELECT name_of_insurance, amount, month_of_payment FROM insurance     where active = 'on'";
$result = mysqli_query($link, $sql);

if (mysqli_num_rows($result) > 0) {
// output data of each row
echo "<table><tr><th>Name</th><th>Jan</th><th>Feb</th><th>März</th><th>Apr</th><th>Mai</th><th>Jun</th><th>Jul</th><th>Aug</th><th>Sep</th><th>Okt</th><th>Nov</th><th>Dez</th></tr>";
 // output data of each row
 while($row = $result->fetch_assoc()) {
     echo "<tr><td>" . $row["name_of_insurance"]. "</td><td>" .     $row["amount"]. "</td></tr>";
 }
 echo "</table>";    
} else {
echo "0 results";
}
mysqli_close($link);

?>

</html> 

как я могу поместить результаты в разные столбцы, не имея более одного запроса или $result?

Спасибо заранее.
БРОМ
Флориан

2 ответа

  1. Предполагая, что значения столбца month_of_payment находятся в Jan, Feb, Märzetc. формат, решение вашей проблемы будет таким:

    Создайте массив месяца, содержащий все возможные значения месяца из столбца month_of_payment, как это:

    $monthArr = array('Jan', 'Feb', 'März', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez');
    

    Теперь в каждой итерации whileцикла создайте forцикл, чтобы проверить, какое $row["month_of_payment"]значение месяца попадает в и отобразить его в соответствующей ячейке таблицы, как это:

    while($row = $result->fetch_assoc()) {
        echo "<tr><td>" . $row["name_of_insurance"]. "</td>";
        for($i = 0; $i < $count; ++$i){
            echo "<td>";
            if($row["month_of_payment"] == $monthArr[$i]){
                echo $row["amount"];
            }
            echo "</td>";
        } 
        echo "</tr>";
    }
    

    Где $countчисло элементов / месяцев в $monthArrмассиве т. е. $count = count($monthArr);

    Вот полный код:

    <html>
    <head>
        <title>Monatsübersicht</title>
        <link href="design.css" type="text/css" rel="stylesheet">
    </head>
    <body>
    <?php
        include 'connect.php';
        // Check connection
        if($link === false){
        die("ERROR: Could not connect. " . mysqli_connect_error());
        }
        $sql = "SELECT name_of_insurance, amount, month_of_payment FROM insurance where active = 'on'";
        $result = mysqli_query($link, $sql);
    
        $monthArr = array('Jan', 'Feb', 'März', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez');
        $count = count($monthArr);
        if (mysqli_num_rows($result) > 0) {
            // output data of each row
            echo "<table><tr><th>Name</th><th>Jan</th><th>Feb</th><th>März</th><th>Apr</th><th>Mai</th><th>Jun</th><th>Jul</th><th>Aug</th><th>Sep</th><th>Okt</th><th>Nov</th><th>Dez</th></tr>";
            while($row = $result->fetch_assoc()) {
                echo "<tr><td>" . $row["name_of_insurance"]. "</td>";
                for($i = 0; $i < $count; ++$i){
                    echo "<td>";
                    if($row["month_of_payment"] == $monthArr[$i]){
                        echo $row["amount"];
                    }
                    echo "</td>";
                } 
                echo "</tr>";
            }
            echo "</table>";    
        } else {
            echo "0 results";
        }
        mysqli_close($link);
    ?>
    </body>
    </html>
    
  2. Спасибо Rajdeep Paul:
    Правильный ответ на мой вопрос ниже:

    <html>
    <head>
    <title>Monatsübersicht</title>
    <link href="design.css" type="text/css" rel="stylesheet">
    </head>
    <body>
    <?php
    include 'connect.php';
    // Check connection
    if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
    }
    $sql = "SELECT name_of_insurance, amount, month_of_payment FROM insurance where active = 'on'";
    $result = mysqli_query($link, $sql);
    
    $monthArr = array('jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec');
    $count = count($monthArr);
    if (mysqli_num_rows($result) > 0) {
        // output data of each row
        echo "<table><tr><th>Name</th><th>Jan</th><th>Feb</th><th>März</th><th>Apr</th><th>Mai</th><th>Jun</th><th>Jul</th><th>Aug</th><th>Sep</th><th>Okt</th><th>Nov</th><th>Dez</th></tr>";
        while($row = $result->fetch_assoc()) {
            echo "<tr><td>" . $row["name_of_insurance"]. "</td>";
            for($i = 0; $i < $count; ++$i){
                echo "<td>";
                if($row["month_of_payment"] == $monthArr[$i]){
                    echo $row["amount"];
                }
                echo "</td>";
            } 
            echo "</tr>";
        }
        echo "</table>";    
    } else {
        echo "0 results";
    }
    mysqli_close($link);
    ?>
    </body>
    </html>