Zuordnung von Daten aus einer Mysql-Tabelle zum passendem Tag
Hallo erstmal an alle,
Derzeit versuche ich einen Kalender zu erstellen, um es etwas übersichtlicher zu gestallten baue ich den Php-Code um. Auch um den Tagen Daten aus einer MySql-Tabelle zuordnen zu können.
Dies ist mein bisheriger Php-Code:
Ich bin über jeden Hinweis und jede Lösung dankbar!
Derzeit versuche ich einen Kalender zu erstellen, um es etwas übersichtlicher zu gestallten baue ich den Php-Code um. Auch um den Tagen Daten aus einer MySql-Tabelle zuordnen zu können.
Dies ist mein bisheriger Php-Code:
function february($username){
$date_year = getdate();
$year = $date_year['year'];
$days = 28;
$mnum = 2;
$i = 1;
$user = $username;
$work = $cal_dates->runcQuery("SELECT id, mitarbeiter, cal_day, cal_mon, cal_year, ma_wish FROM ma_wishes WHERE mitarbeiter=:uname AND cal_mon=$mnum AND cal_year=$year");
$work->execute(array(":uname"=>$user));
echo"<center>";
echo"<table id='month'>";
echo"<tr>";
while($workRow = ...) { $events[$workRow['cal_day'] /* == 1..31 */] = $row; }
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"</tr>";
echo"<tr>";
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"</tr>";
echo"<tr>";
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"</tr>";
echo"<tr>";
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
$i++;
echo"<td id='border'>". $i ."</td>";
echo"</tr>";
echo"<tr>";
echo"<td id='noborder'></td>";
echo"<td id='noborder'></td>";
echo"<td id='noborder'></td>";
echo"<td id='noborder'></td>";
echo"<td id='noborder'></td>";
echo"<td id='noborder'></td>";
echo"<td id='noborder'></td>";
echo"</tr>";
echo"</table>";
echo"</center>";
}
Ich bin über jeden Hinweis und jede Lösung dankbar!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 364400
Url: https://administrator.de/forum/zuordnung-von-daten-aus-einer-mysql-tabelle-zum-passendem-tag-364400.html
Ausgedruckt am: 03.04.2025 um 12:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo TheAlex,
du sag einmal... wie lautet überhaupt die Frage ?
Helfen könne wir nur wenn wir wissen was das Problem ist ;)
Allerdings sehe ich da mehrere Probleme in deinem Code.
z.B.
Vielleicht wäre es besser wenn du das erstmal als "Apothekenkalender" umsetzt, also als Liste von Oben(1.) nach Unten(28,29,30,31) ?
Oder zumindest erst den Kalender und dann die Inhalte bzw. nicht alles auf einmal ;)
Naja, aber wie gefragt: Wo hängst du/es denn gerade / Wo sollen/können wir dir helfen ?
~Arano
du sag einmal... wie lautet überhaupt die Frage ?
Helfen könne wir nur wenn wir wissen was das Problem ist ;)
Allerdings sehe ich da mehrere Probleme in deinem Code.
z.B.
- In Zeile 6 definiert du
$i=1
, in Zeile 14 erhöhst du i auf 2$i++
und in 15 gibst du i zum ersten mal aus, da ist i aber 2 ! Müsste für den Beginn des Monats ja aber 1 sein. - Ebenfalls Zeile 15. Ich denke du gehst hier davon aus, das der Monat immer mit MONTAG dem 1. beginnt, dem ist aber nicht so. Der 01.02.2018 war ein Donnerstag.
- Zähle ich 4 Tabellen-Zeilen die vermutlich die Wochen darstellen sollen. aber auch hier: der Februar hat 5 Wochen, DIESES Jahr - 02.2021 sind es "nur" 4 Wochen.
- Eine HTML-ID ist ein EINDEUTIGER Bezeichner, darf also nur ein EINZIGESMAL vergeben werden.
Vielleicht wäre es besser wenn du das erstmal als "Apothekenkalender" umsetzt, also als Liste von Oben(1.) nach Unten(28,29,30,31) ?
Oder zumindest erst den Kalender und dann die Inhalte bzw. nicht alles auf einmal ;)
Naja, aber wie gefragt: Wo hängst du/es denn gerade / Wo sollen/können wir dir helfen ?
~Arano
Hallo, najut dann ma los.
Im Prinzip musst du ja "nur" an der Stelle an der du
Allerdings wird dein Quelltext nun sehr sehr sehr lang. Und wenn du dann eine Kleinigkeit ändern möchtest, musst du ggf alle Stellen ablaufen.
Besser wäre es wohl du steckst das Ganze in eine neue Funktion
Diese könntest du dann z.B. auch von einer for-Schleife aufrufen lassen.
Und wenn du nun etwas ändern möchtest, muss du dies nur noch in der Funktion machen.
~Arano
echo"<td id='border'>". $i ."</td>"
$i
ausgibst auf das $event
-Array mit dem richtigem Index zugreifen - falls dieses nicht leer ist.echo"<td id='border'>". $i ."<br>";
if( isset($events[$i]) && !empty($events[$i]) ) // ist Index vorhanden UND enthält es Daten
{
// alle Daten ausgeben
foreach( $events[$i] as $arrEvent )
{
echo $arrEvent['ma_wish'].'<br>';
}
}
echo "</td>";
Allerdings wird dein Quelltext nun sehr sehr sehr lang. Und wenn du dann eine Kleinigkeit ändern möchtest, musst du ggf alle Stellen ablaufen.
Besser wäre es wohl du steckst das Ganze in eine neue Funktion
print_table_cell_with_data( $i, $events[$i])
Diese könntest du dann z.B. auch von einer for-Schleife aufrufen lassen.
// SOLLTE Anzahl"intLastDayOfMonth" Tabellenzellen erzeugen die alle 7x durch Tabellenzeilenende und -start getrennt sind
// Sprich 4-5 Zeilen mit je 7 Zellen, je nach Tagesanzahl pro Monat
for( $i=1, $i<$intLastDayOfMonth; $i++ )
{
print_table_cell_with_data( $i, $events[$i] );
if( 0==($i%7) )
{
echo '</tr><tr>';
}
}
~Arano
Hey.
Also zuerst wird ein Backup gemacht, wie immer.
Dann erstellst du eine neue Funktion:
und ersetzt, schätzungsweise, die Zeile 14 - 82 mit der for-Schleife:
So oder so ähnlich könnte das funktionieren.
~arano
Also zuerst wird ein Backup gemacht, wie immer.
Dann erstellst du eine neue Funktion:
function print_table_cell_with_data( $i, &$refArrEvents ) // $refArrEvents ist "nur" eine Referenz(&)/Verknüpfung auf das originale Array
{
echo"<td id='border'>". $i ."<br>";
if( isset($refArrEvents[$i]) && !empty($refArrEvents[$i]) ) // ist Index vorhanden UND enthält es Daten
{
// alle Daten ausgeben
foreach( $refArrEvents[$i] as $refArrEvent )
{
echo $refArrEvent['ma_wish'].'<br>';
}
}
echo "</td>";
return NULL;
}
$intLastDayOfMonth = 28; // kann man sicha uch berechnen lassen ;)
for( $i=1, $i<=$intLastDayOfMonth; $i++ ) // FEHLER KORRIGIERT ( < und <= )
{
print_table_cell_with_data( $i, $events );
if( 0==($i%7) )
{
echo '</tr><tr>';
}
}
So oder so ähnlich könnte das funktionieren.
~arano
Hallöchen
Ah HA !
Das ist doch mal eine richtige Frage zu einem Problem, die hättest du am besten gleich zu Anfang gestellt.
Ich habe das nämlich nicht als Problem für dich erkannt und darum übergangen.
Nun, da du jetzt den nächsten Beitrag erstellt hast und dieses dort auch behandelt wird, lass uns doch dort weiter machen: Problem wenn kein mehrere Eintrag Einträge für Monat vorhanden
~Arano
Zitat von @TheAlex:
Jedoch bin ich mir immernoch nicht sicher was ich mit dieser zeile genau machen soll:
Jedoch bin ich mir immernoch nicht sicher was ich mit dieser zeile genau machen soll:
while($workRow = ...) { $events[$workRow['cal_day'] /* == 1..31 */] = $row; }
Ah HA !
Das ist doch mal eine richtige Frage zu einem Problem, die hättest du am besten gleich zu Anfang gestellt.
Ich habe das nämlich nicht als Problem für dich erkannt und darum übergangen.
Nun, da du jetzt den nächsten Beitrag erstellt hast und dieses dort auch behandelt wird, lass uns doch dort weiter machen: Problem wenn kein mehrere Eintrag Einträge für Monat vorhanden
~Arano