Jahreskalender mit Terminen aus db

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Jahreskalender mit Terminen aus db

    Olla, versuche gerade einen Jahreskalender zu kreieren, was mir
    "eigentlich" auch gelungen ist.

    Das Script basiert auf diesem hier.

    Nun möchte ich allerdings noch, dass Tage, welche in der db
    gespeichert sind (Aktionen/Termine), in diesem Kalender farbig
    hervorgehoben werden, was mir leider nur so halb gelungen ist.
    Mein geistiger Horizont ist leider an seine Grenzen gestoßen. Ich
    weiß einfach nicht, wie ich die for-schleife, welche die Tage aus der
    db enthält, in die while-schleife einbauen soll, welche den Kalender
    generiert.

    Leider etwas unübersichtlich

    PHP-Code:
    <?

    $months=array("Januar","Februar","M&auml;rz","April",
    "Mai","Juni","Juli","August",
    "September","Oktober","November","Dezember");

    $qry = "SELECT datum FROM termine ORDER BY datum";
    $res = query($qry);
    while ($row = mysql_fetch_array($res)){
        $datum[] = $row['datum'];
    }
    $mon    = date('n');
    $yea    = date('Y');
    $now    = date('d');
    $wert = mysql_num_rows($res);
    foreach ($datum as $ndatum) {
        $j = 1;
        $dp_mon[] = date('n', $ndatum);
        $dp_yea[] = date('Y', $ndatum);
        $dp_now[] = date('d', $ndatum);
        $j++;
    }

    ?>
    <table cellspacing="0" cellpadding="0" border="0" width="100%">
        <tr>
        <td>
        <table cellspacing="0" cellpadding="0" border="0" width="100%">
    <?
    for    ($reihe=1;$reihe<=3;$reihe++){
        echo "<tr>";
        for ($spalte=1;$spalte<=4;$spalte++) {
            $this_month=($reihe-1)*4+$spalte;
            $erster=date("w",mktime(0,0,0,$this_month,1,$yea));
            $insgesamt=date("t",mktime(0,0,0,$this_month,1,$yea));
            if($erster==0){
                $erster=7;
            }
    ?>        
            <td valign="top" style="padding-top:10px;">
            <table...>
                <tr>
                    <td class="u r">Mo</td>
                    <td class="u r">Di</td>
                    <td class="u r">Mi</td>
                    <td class="u r">Do</td>
                    <td class="u r">Fr</td>
                    <td class="u r">Sa</td>
                    <td class="u r">So</td>        
                </tr>
                <tr>

    <?
            $i=1;
            while($i<$erster){
                echo "<td>&nbsp;</td>";
                $i++;
            }
            $i=1;
            while($i<=$insgesamt)    {
                $rest=($i+$erster-1)%7;            
                for ($j = 0; $j < $wert; $j++) {
                    if ($i == $dp_now[$j] && $this_month==$dp_mon[$j]) {
                        echo "<td style=\"background:#C6D3D3; align=\"center\">
    <span style=\"color:#2B477F;padding:2px;\">$i</span>";
                    }
                }
                if($i==$now && $this_month==$mon){
                echo "<td style=\"background:#2B477F;" align=\"center\">";
                }
                else{
                echo "<td style=\"font-color:#00cc00;\" align=center>";
                }
                if ($i==$now && $this_month==$mon){
                    echo "<span style=\"color:#ffffff;\">$i</span>";
                }
                else if($rest==6){
                    echo "<span style=\"color:#2B477F;\">$i</span>";
                }
                else if($rest==0){
                    echo "<span style=\"color:#2B477F;\">$i</span>";
                }
                else{
                    echo "".$i."";
                }
                echo "</td>\n";
                if($rest==0){
                    echo "</tr>\n<tr>\n";
                }
                $i++;
            }
            echo "</tr>";
            echo "</table>";
            echo "</td>";
        }
    }
    echo "</td>";
    echo "</tr>";
    echo "</table>";
    ?>
    Ich denke mal, dass es einen wesentlich einfacheren, bzw von
    Aufbau her schöneren Lösungsweg gibt. Falls jemand zu viel Zeit hat - nur keine Scheu

    Danke im voraus

    *edit*: Anschauen könnt ihr das ganze hier

    Damit...warum ist das so breit?
    Zuletzt geändert von thrawn; 30.07.2005, 22:42.

  • #2
    vielleicht könntest du mal die sinnlosen leerzeichen löschen, die den thread hier absolut unnötig in die breite ziehen! bitte unsere Regeln beachten und befolgen.

    Kommentar


    • #3
      Gesagt, getan. War nicht meine Absicht, das Teil so breit wirken zu lassen und wusste auch nicht, dass der sämtliche Leerzeichen hier wiedergibt.

      Ansonsten: Problem besteht leider immer noch.

      Kommentar

      Lädt...
      X