Можно ли отсортировать все данные php в различные деления по дням недели? - PullRequest
0 голосов
/ 11 апреля 2020

Здравствуйте, я здесь с проблемой, я хочу получить данные из mysql с помощью php (сделал это :)), а затем, например, когда моя переменная $dia_semana равна воскресенью, он покажет все данные с воскресеньем в especifi c div с определенным идентификатором, а затем продолжается

вот мой php код:

<?php
function dia_da_semana() {
    $connect = mysqli_connect("", "", "", "");
    $sql ="SELECT temperature, humidity, data FROM sensor ORDER BY data DESC LIMIT 1";
    $result = mysqli_query($connect, $sql);
    setlocale(LC_TIME, "pt_PT"); // or LC_TIME

    while($row = mysqli_fetch_array($result)) {
        echo strftime("%A",$row['data']);
        echo "<h2>".$row['data']."</h2>";
        echo "<h4>".$row['temperature']."ºC</h4>";
        echo "<h4>".$row['humidity']."%</h4>";
    }
}

dia_da_semana();
?>

часть кода html, где я хочу для отправки:

<div class="7days">

    <?php
        include "loadgraph.php"
    ?>
    <div class="day1">

    </div>
    <div class="day2">

    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

это мой код, который полностью работает:

$WEEKDAYS = array(1 => "Sunday", 2 => "Monday", 3 => "Tuesday", 4 => "Wednesday", 5 => "Thursday", 6 => "Friday", 7 => "Saturday");
          $ResultsArray = array();

          while($row = mysqli_fetch_array($result)) {
              // create an array to hold the return values from your DB
              $date = $row['dia_semana']; //<--- coming from db holds date values
              $ResultsArray[$date][] = $row['temperature'];
          }
            echo "<table style='padding:5px;border-radius: 10px;border:solid 1px #000;vertical-align: text-top;'>";
            echo "<tr>";

            foreach ($WEEKDAYS as $key => $date) {
              echo "<th>".$date."</th>";
            }
                echo "</tr>";
              for ($x = 0; $x < 1; $x++){

                  echo "<tr>";
                   echo "<td>".$ResultsArray['Sunday'][$x]."</td>";
                   echo "<td>".$ResultsArray['Monday'][$x]."</td>";
                   echo "<td>".$ResultsArray['Tuesday'][$x]."</td>";
                   echo "<td>".$ResultsArray['Wednesday'][$x]."</td>";
                   echo "<td>".$ResultsArray['Thursday'][$x]."</td>";
                   echo "<td>".$ResultsArray['Friday'][$x]."</td>";
                   echo "<td>".$ResultsArray['Saturday'][$x]."</td>";
echo "</tr>";
              }








          echo "</table>";
0 голосов
/ 11 апреля 2020

Определите константу / массив для сравнения массива и задайте дни недели для начала в воскресенье, используя ключевые значения. Затем запустите foreach, используя эту константу / массив, чтобы отобразить данные таблицы для каждого присутствующего дня, начиная с воскресенья. Проверьте, находится ли значение в константе в возвращаемом массиве, и если это так, отобразите этот день и соответствующие ему значения из массива, которые также установлены на этот день.

define("WEEKDAYS", [1 => "Sunday", 2 => "Monday", 3 => "Tuesday", 4 => "Wednesday", 5 => "Thursday", 6 => "Friday", 7 => "Saturday"]);

$parseDays = array(
    'Frank' => 'Monday',
    'Jean' => 'Monday',
    'Mike' => 'Sunday',
    'Bob' => 'Tuesday',
    'Bill' => 'Friday',
    'Jack' => 'Sunday',
    'George' => 'Friday',
    'Dillon' => 'Wednesday'
);
$stmt = '<table>';
$stmt .= '<tr>';
foreach(WEEKDAYS as $key => $day){
    if(in_array($day, $parseDays)){
        if($day === $day){
            $stmt .= '<td style="padding:5px;border-radius: 10px;border:solid 1px #000;vertical-align: text-top;">'.$day.'<hr>';
            foreach($parseDays as $name => $days){
                if($days === $day){
                    $stmt .= '<br>'.$name;
                }
            }
            $stmt .= '</td>';
        }
    }       
}
$stmt .= '</tr>';

$stmt .= '</div>';
echo $stmt;

В СЛУЧАЕ ПОПРОБУЙТЕ СЛЕДУЮЩУЮ:

// make sure to define a constant that has the days to compare so we can start
// with Sunday and display in order of week from Sunday through the rest of 
// the week concurrently
define("WEEKDAYS", [1 => "Sunday", 2 => "Monday", 3 => "Tuesday", 4 => "Wednesday", 5 => "Thursday", 6 => "Friday", 7 => "Saturday"]);
while($row = mysqli_fetch_array($result)) { 
    // create an array to hold the return values from your DB
    $date[] = $row['dia_semana']; //<--- coming from db holds date values
}

// construct the table and display the days
$stmt = '<table>';
$stmt .= '<tr>';
//loop through the constant and get the days in order from Sunday concurrently
foreach(WEEKDAYS as $key => $day){
    // check if the $day value from constant is located in the $date array from db
    if(in_array($day, $date)){
        if($day === $day){
            $stmt .= '<td style="padding:5px;border-radius: 10px;border:solid 1px #000;vertical-align: text-top;">'.$day.'<hr>';
            // loop through db array and assign key/values
            foreach($date as $name => $days){
                // If value from db array is equal to value from constant, display it
                if($days === $day){
                    $stmt .= '<br>'. //enter name values here;
                }
            }
            $stmt .= '</td>';
        }
    }       
}
$stmt .= '</tr>';

$stmt .= '</div>';
echo $stmt;

ВЫХОД:

enter image description here

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