zdarzenia dnia - display

0

Czołem,

Potrzebuję stworzyć widok dnia gdzie po lewej stronie z góry do dołu wypisać godziny np co pół h a obok task zawierający się w przedziale od do. Pytania:

  1. Czy użyć datetime czy osobno pola z datą i godziną?
  2. Dosłownie utknąłem bo nie potrafię tego wyświetlić, prośba o nawet pseudo kod? Czy tabelka czy boxy?
0
  1. jak uważasz - to twój projekt
  2. jak uważasz - to twój projekt
    Tu nie ma lepiej gorzej, można to zrealizować na wiele sposobów. Co do pierwszego to jeśli to mają być sztywne przedziały to chyba raczej sam tekst, np. 08:00 - 08:30 itd. Co do drugiego jeśli taski mogą zajmować więcej niż jeden przedział to z tabelą będzie trudniej taki task pokazać jako jednolicie zamalowane pole - trzeba będzie go dzielić na komórki. Najlepiej to odpal sobie np. kalendarz googla i zobacz jak oni to rozwiązali
1

Pytanie czy osobne pole na date i godzine jest Ci do czegoś potrzebne. Moim zdaniem nie, bo w mysql bardzo łatwo można wyciągnąć każdy komponent z datetime używająć funkcjij minute, hour itd.
Dodatkowo PDO ma taki fajny bajer jak PDO::FETCH_GROUP, który Ci poszatkuje twoją tablicę co pół godziny. Wystarczy, że do swojego zapytania dołożysz taką kolumnę:

SELECT
  -- TA KOLUMNA KONIECZNIE MUSI BYĆ PIERWSZA, BO TEGO WYMAGA PDO::FETCH_GROUP
  CONCAT(
      hour(start_date), 
      IF(minute(start_date) BETWEEN 0 AND 30, ':00', ':30')
  ) AS timespan
  -- reszta pól
FROM events;

Teraz magia PDO:

$stmt = $connection->prepare("...");
$stmt->execute();

$result = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);

// To jest twój rezultat (zauważ, że nie musisz robić dodatkowego foreacha, zeby sobie to samemu pociąć):
$result = [
    '9:00' => [
        ['id' => 1, 'start_date' => '9:00'],
        ['id' => 2, 'start_date' => '9:15'],
        ['id' => 3, 'start_date' => '9:25'],
    ],

    '9:30' => [
        ['id' => 4, 'start_date' => '9:35'],
        ['id' => 5, 'start_date' => '9:45'],
        ['id' => 6, 'start_date' => '9:50'],
    ],

    '10:00' => [

    ]
];


$next = array_keys($result);

foreach ($result as $spanStart => $events) {
    $spanEnd = next($next);

    echo "Wydarzenia w przedziale " . $spanStart . " - " . $spanEnd . "<br>";

    foreach ($events as $event) {
        echo $event["id"] . " " . $event["start_date"] . "<br>";
    }
}

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