2 Stimmen

Zeilen in der Tabelle mit Datumsangaben auflisten

Ich bin gerade dabei, ein einfaches Abwesenheitsskript für Lehrer zur Verwaltung von Schülern zu erstellen.

Ich muss dieselbe Liste von Schülern in 5 Tabellen einpflegen. Eine Tabelle für jeden Tag der aktuellen Woche (montags bis freitags).

Zurzeit habe ich folgenden Code

Liste Studenten SQL-Abfrage:

SELECT s.student_id, s.student_firstname, s.student_lastname, 
 a.student_absence_startdate, a.student_absence_enddate, a.student_absence_type
FROM students s 
LEFT JOIN studentabsence a ON a.student_id = s.student_id
WHERE a.student_absence_startdate 
 IS NULL OR 
  '2012-06-20' 
   BETWEEN 
a.student_absence_startdate AND a.student_absence_enddate

Diese Abfrage wählt alle Schüler aus und verbindet eine andere Tabelle, die eine Verknüpfungstabelle ist, die die Abwesenheitsinformationen für Schüler enthält.

Ich fülle den Code 5 Mal wie folgt aus:

<?php
$data = array();
    while ($row = mysql_fetch_array($list_students)) {
    $data[] = $row;
    }
?>

<table>
  <?php
  foreach($data as $row){
    $class = "";
    if ($row['student_absence_type'] == 2) {$class = " style='background:#f00;'";}
    else if ($row['student_absence_type'] == 3) {$class = " style='background:#8A2BE2;'";}

        echo "<tr><td$class>";
        echo "<a class='ajaxlink' href='#' rel='pages/ajaxAbsence.php?student_id=".$row['student_id']."'>".$row['student_firstname']." ".$row['student_lastname']."</a>";
        echo "</td></tr>\n";
   }
   ?>
</table> <!-- Repeat -->

Meine Frage ist, wie ich die Datumsfunktionen verwalten soll.

Wie Sie in meiner SQL-Abfrage sehen können, habe ich die Daten fest kodiert. Ich möchte, dass automatisch das Datum der Tabelle ausgewählt wird, in der die Schüler aufgeführt sind.

zum Beispiel:

table > Monday (2012-07-23)
    the user John Doe has absence information in this span, based on the above query. Let's change the background of <td>
table > Tuesday (2012-07-24)
    the user John Doe has no absence information in this span. Just list him.
etc...

Ich erwarte nicht, dass Sie meinen Code schreiben. Ich bin nur neugierig, wie Sie denken. Ich bin ein ziemlicher Neuling in der Programmierung.

1voto

João Dias Punkte 1078

Der eklatanteste Fehler, den ich in Ihren Überlegungen finde, ist, dass Sie diese fünf Tabellen nicht brauchen. Sie werden am Ende Daten wiederholen und durcheinander bringen.

Nach dem, was ich gelesen habe, brauchen Sie verschiedene Tabellen.

Studenten

ID, Name, usw..

Klassen

class_id, name,

Lehrerinnen und Lehrer

Id_Lehrer, Name, usw.

TeachersInClass (damit Sie sehen können, welche Lehrer eine bestimmte Klasse unterrichtet haben)

id, id_Lehrer, id_Klasse

Abwesenheiten

id, id_student, id_class, Datum

Auf diese Weise erhalten Sie eine robustere Datenbank, und Sie können mit verschiedenen Assoziationen spielen, z. B. welche Lehrer in einem Jahr die meisten Fehlzeiten hatten usw. usw.

EDIT: Ich habe vergessen, Ihre "echte" Frage zu beantworten.

Sie können die PHP DateTime Klasse, um Ihre Daten zu manipulieren. Es ist einfach zu benutzen, und php.net hat eine Menge guter Beispiele, um Ihnen einen Start zu ermöglichen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X