PHP + Mysql Kalender - auslese fehler
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
array
bedingung
beginn
code
date
datum
dezember
fehler
first
grad
hintergrundfarbe
jahr
last
monat
schleife
sonntag
tag
termin
wochentag
-
Hallo, habe hier einen kleinen EventKalender, jedoch mit einem kleinen tag/fehler">fehler.
Tage werden zwar richtig ausgegeben, jedoch nur jeder ersten Tag mit einem Termin, alle anderen Termine werden Ignoriert..
Hab ich einen auslese fehler drin? ..
<?php $monat = date('n'); $jahr = date('Y'); $heute = date('d'); $first = date("w", mktime(0, 0, 0, $monat, 1, $jahr)); $last = date("t", mktime(0 ,0 , 0, $monat, 1, $jahr)); $monate = Array("", "Januar", "Februar", "März","April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); $wochentage = Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"); if($first == 0) { $first = 7; } echo '<table width="198" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#0092df"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center" class="tc_white"><a href="#" class="tc_white"><b>«</b></a></td> <td width="50%" align="center" class="tc_white"><b>'.$monate[$monat].' '.$jahr.'</b></td> <td align="center" class="tc_white"><a href="#" class="tc_white"><b>»</b></a></td> </tr> </table></td> </tr> <tr> <td><table width="100%" border="0" cellspacing="0" cellpadding="0">'; echo "<tr>"; echo "<th align=\"center\" title=\"Montag\" class=\"kalender-day\">Mo</th>"; echo "<th align=\"center\" title=\"Dienstag\" class=\"kalender-day\">Di</th>"; echo "<th align=\"center\" title=\"Mittwoch\" class=\"kalender-day\">Mi</th>"; echo "<th align=\"center\" title=\"Donnerstag\" class=\"kalender-day\">Do</th>"; echo "<th align=\"center\" title=\"Freitag\" class=\"kalender-day\">Fr</th>"; echo "<th align=\"center\" title=\"Samstag\" class=\"kalender-we kalender-day\">Sa</th>"; echo "<th align=\"center\" title=\"Sonntag\" class=\"kalender-we kalender-day\">So</th>"; echo "</tr><tr>"; for ($j=1; $j < $first; $j++) { echo "<td>"; } if(strlen($monat) == 1) { $sql_m = "0".$monat; } else { $sql_m = $monat; } $abfrage = mysql_query("SELECT * FROM cms_events WHERE datum BETWEEN '".$jahr."-".$sql_m."-01' AND '".$jahr."-".$sql_m."-31'"); $total = mysql_num_rows($abfrage); //echo $total; for ($i=1; $i <= $last; $i++) { $x = $wochentage[date("w", mktime(0 , 0, 0, $monat, $i, $jahr))]; if($total >= 1) { if(strlen($i) == 1) { $sql_i = "0".$i; } else { $sql_i = $i; } $row = mysql_fetch_assoc($abfrage); $event_date = $jahr."-".$sql_m."-".$sql_i; //$event_date2 = "2010-06-23"; //echo $row['datum']."<|>"; if ($event_date == $row['datum']) { $show_event = "<a href=\"".$row['datum']."\" align=\"center\">".$i."</a>"; if ($i == $heute) { echo "<td align=\"center\" class=\"kalender-today\">".$show_event."</td>"; } else { echo "<td align=\"center\" class=\"kalender-border kalender-event\">".$show_event."</td>"; } } else { if ($i == $heute) { echo "<td align=\"center\"class=\"kalender-border kalender-today\">".$i."</td>"; } else { echo "<td align=\"center\" class=\"kalender-border\">".$i."</td>"; } } } else { if ($i == $heute) { echo "<td align=\"center\" class=\"kalender-border kalender-today\">".$i."</td>"; } else { echo "<td align=\"center\" class=\"kalender-border\">".$i."</td>"; } } if($x == "So") { echo "</tr><tr>"; } } echo '</table></td></tr></table>'; ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hi daniel!
ganz zu beginn hast du eine if abfrage " if ( $first == 0 ) ... "
ich denke du solltest vorher $first zuerst mal deklarieren .. sonst kann er garnicht die bedingung richtig überprüfen ?!
zb sag doch einfach $first == 0 ... und dann dein ganzes skript .. "$monat = date () " .. .etc
hm ? =)
ich muss grad mal zum studiensekretariat .. vllt schau ichs mir danach mal an :)
grüße von daniel an daniel ! :D -
Hallo ;)
also ich habe $first deklarieren.
$first = date("w", mktime(0, 0, 0, $monat, 1, $jahr));
da wird ja der erste tag des monats ermittelt..
kann es bei der mysql schleife ein fehler sein? -
ok .. dickes sorry !! .. hab ich wirklich übersehen ..
hm aber wieso hast du dann diese if abfrage drin ? die springt doch garnicht an!
ich hab mal vor der abfrage "if $first == 0... " mal ein echo $first gesetzt und es ergab 2 .. also geht deine bedingung niemals in erfüllung .. und ein else hast du nicht drin oder ?
dann hab ich grad mal VOR dieser eben bedingung $first = 0; gesetzt und dann ergab dein kalender kein sinn mehr .. probiers mal aus .. ;)
ich hätte es eh anders gemacht .. ich überleg mir grad was ...
grüße daniel =) -
$first ist der wochentag als zahl, damit ich weiß wo er anfangen soll mit der eins... ist $first = 0 soll er ihn auf 7 setzen, wegen Sonntag.
problem gefunden..
habs in eine array gespeichert.. ;D
meine frage jetzt nur zusätzlich, wie kann ich die hintergrund farbe von den wochentage, samstag & sonntag ändern? sprich, das die eine andere backgroundcolor bekommen...
ps: danke daniel!
Beitrag zuletzt geändert: 24.6.2010 13:28:00 von daniel -
Du könntest in der For-Schleife dein $i mit dem Modulo-Operator % auf gerade und ungerade prüfen. Je nachdem ob gerade oder ungerade kannst du eine CSS-Klasse hinzufügen:
if ($i % 2 == 0) { // $i ist gerade // definiere eine CSS-Klasse oder speichere den Farbcode in eine Variable, die du später verwendest } else { // $i ist ungerade // definiere eine CSS-Klasse oder speichere den Farbcode in eine Variable, die du später verwendest }
Beitrag zuletzt geändert: 24.6.2010 14:26:16 von wagnerm -
super, konnte es mit $x ermitteln.. habe einfach eine if($x == "So") gemacht und und habe dann eine classe hinzugefügt.. und fertig! super! danke ;D
-
Achso, da habe ich die Fragestellung falsch verstanden. Ich dachte du möchtest die Hintergrundfarbe der Zeilen abwechselnd darstellen...
Aber du hast ja die Lösung dann schließlich selbst gefunden.
Beitrag zuletzt geändert: 25.6.2010 11:15:25 von wagnerm -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage