tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
665
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Oct 2005
    Ort
    Nottuln
    Beiträge
    1.282
    Hey,

    ich habe mir ein Kleines Kalenderscript zusammengebastelt, was den aktuellen Tag, das Wochenende und aus der DB ausgelesene Termine einfärbt.
    Leider markiert er aber immer nur einen Termin.

    Was muss ich machen?

    PHP-Code:
    <?php
        $zeit                
    time();
        
    $jahr                date("Y"$zeit); // ermitteln des Jahres
        
    $mon                date("n"$zeit); // ermitteln des Monats
        
    $akt                date("d"$zeit); // ermitteln des aktuellen Tages
        
    $last                date("t"mktime(000$mon1$jahr)); // ermitteln des letzten Tages des Monats

        
    $gig                mysql_query("SELECT * FROM gigs WHERE `monat`=$mon ORDER BY id DESC");
        
    $g                    mysql_fetch_array($gig);
        
        
    // Arrays für Monate und Wochentage
        
    $mo = Array(""
                                
    "Januar"
                                
    "Februar"
                                
    "März",
                                
    "April"
                                
    "Mai"
                                
    "Juni"
                                
    "Juli"
                                
    "August"
                                
    "September"
                                
    "Oktober"
                                
    "November"
                                
    "Dezember");
                                
        
    $wd = Array("So"
                                
    "Mo"
                                
    "Di"
                                
    "Mi",
                                
    "Do"
                                
    "Fr"
                                
    "Sa"
                                
    "So");

        
    // ermitteln des Wochentages für den ersten Tages des Monats
        
    $first_wd    date("w"mktime(000$mon1$jahr));
        
        if (
    $first_wd == 0$first_wd=7// Korrektur für den Sonntag

        //erstellung der tabelle
        
    echo "<p />";
        echo 
    "<table border=\"0\" class=\"news_h5\">";
            echo 
    "<tr>";
                
                
    //aktuellen monats-namen ausgeben
                
    echo "<td align=\"center\" colspan=\"7\"><u><b>".$mo[$mon].$jahr</b></u></td>";
            echo 
    "</tr>";
            
            echo 
    "<tr>";
                echo 
    "<td><b>Mo</b></td>";
                echo 
    "<td><b>Di</b></td>";
                echo 
    "<td><b>Mi</b></td>";
                echo 
    "<td><b>Do</b></td>";
                echo 
    "<td><b>Fr</b></td>";
                echo 
    "<td><b>Sa</b></td>";
                echo 
    "<td><b>So</b></td>";
            echo 
    "</tr>";
            
            
            
    // Leere Zellen ausgeben, bis zum ersten Tag des Monats
            
    echo "<tr>";
                for (
    $j 1$j $first_wd$j++) 
                    { 
                        echo 
    "<td> "
                    }
                
                for (
    $i=1$i<=$last$i++)
                    {
                        
                        
    // ermitteln des Wochentages
                        
    $x $wd[date("w"mktime(0,0,0,$mon,$i,$jahr))];
                        
                        
    // definition des Standard-Style
                        
    $bo="d0";
                        
    $link    $i;
                        
                        
    // Einfärbung des Sonntages
                        
    if (($x == "So") OR ($x == "Sa"))
                            { 
                                
    $bo "gig_legend_sun";
                                
    $link    $i;
                            }
                            
                      
    // Einfärbung des aktuellen Tages
                        
    if ($i == $akt
                            { 
                                
    $bo "gig_legend_day"
                                
    $link    $i;
                            }
                            
                        
    //einfärbung des monats
                        //gig tag rausholen
                        
    $gig_day $g['tag'];
                        
                        if (
    $i == $gig_day)
                            {
                                
    $bo "gig_legend_gig";
                                
    $link    "<a href=\"?section=giglesen&id=".$g['id']."\" class=\"kalender_link\" title=\"Details: ".$g['titel']."\">$i</a>";
                            }
                            
                echo 
    "<td class=\"".$bo."\" align=\"center\">$link</td>";
                
                    if (
    $x == "So"
                        echo 
    "</tr>\n<tr>"// Am Sonntag endet die jeweilige Zeile
                    
    }
            echo 
    "</tr></table>";
            
            echo 
    "<p />";
    ?>
    Die werte in meiner DB sehen so aus:
    Beispiel:
    Tag: 03
    Monat: 11
    Jahr: 2006

    ICh muss doch die Werte inner Schleife ausgeben lassen oder? Also die Termine.

    Aber wie?

    David
     

  2. #2
    FipsTheThief FipsTheThief ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Leipzig
    Beiträge
    589
    Das lässt sich leicht erklären. der Befehl mysql_fetch_array() liest eine Zeile aus der Datenbank in ein Array ein.
    Somit hast auch immer nur das erste Datum. Du müsstest das quasi alles nur in eine while Schleife verpacken und fertig.

    PHP-Code:
    <?php
        $zeit                
    time();
        
    $jahr                date("Y"$zeit); // ermitteln des Jahres
        
    $mon                date("n"$zeit); // ermitteln des Monats
        
    $akt                date("d"$zeit); // ermitteln des aktuellen Tages
        
    $last                date("t"mktime(000$mon1$jahr)); // ermitteln des letzten Tages des Monats

        // Arrays für Monate und Wochentage
        
    $mo = Array(""
                                
    "Januar"
                                
    "Februar"
                                
    "März",
                                
    "April"
                                
    "Mai"
                                
    "Juni"
                                
    "Juli"
                                
    "August"
                                
    "September"
                                
    "Oktober"
                                
    "November"
                                
    "Dezember");
                                
        
    $wd = Array("So"
                                
    "Mo"
                                
    "Di"
                                
    "Mi",
                                
    "Do"
                                
    "Fr"
                                
    "Sa"
                                
    "So");

        
    // ermitteln des Wochentages für den ersten Tages des Monats
        
    $first_wd    date("w"mktime(000$mon1$jahr));
        
        if (
    $first_wd == 0$first_wd=7// Korrektur für den Sonntag

        //erstellung der tabelle
        
    echo "<p />";
        echo 
    "<table border=\"0\" class=\"news_h5\">";
            echo 
    "<tr>";
                
                
    //aktuellen monats-namen ausgeben
                
    echo "<td align=\"center\" colspan=\"7\"><u><b>".$mo[$mon].$jahr</b></u></td>";
            echo 
    "</tr>";
            
            echo 
    "<tr>";
                echo 
    "<td><b>Mo</b></td>";
                echo 
    "<td><b>Di</b></td>";
                echo 
    "<td><b>Mi</b></td>";
                echo 
    "<td><b>Do</b></td>";
                echo 
    "<td><b>Fr</b></td>";
                echo 
    "<td><b>Sa</b></td>";
                echo 
    "<td><b>So</b></td>";
            echo 
    "</tr>";
            
            
            
    // Leere Zellen ausgeben, bis zum ersten Tag des Monats
            
    echo "<tr>";
                for (
    $j 1$j $first_wd$j++) 
                    { 
                        echo 
    "<td> "
                    }
                    
                
    $gig  mysql_query("SELECT * FROM gigs WHERE `monat`=$mon ORDER BY id DESC");
                while(
    $g mysql_fetch_array($gig) ) {
                    for (
    $i=1$i<=$last$i++)
                        {
                            
    // ermitteln des Wochentages
                            
    $x $wd[date("w"mktime(0,0,0,$mon,$i,$jahr))];
                            
                            
    // definition des Standard-Style
                            
    $bo="d0";
                            
    $link    $i;
                            
                            
    // Einfärbung des Sonntages
                            
    if (($x == "So") OR ($x == "Sa"))
                                { 
                                    
    $bo "gig_legend_sun";
                                    
    $link    $i;
                                }
                                
                          
    // Einfärbung des aktuellen Tages
                            
    if ($i == $akt
                                { 
                                    
    $bo "gig_legend_day"
                                    
    $link    $i;
                                }
                                
                            
    //einfärbung des monats
                            //gig tag rausholen
                            
    $gig_day $g['tag'];
                            
                            if (
    $i == $gig_day)
                                {
                                    
    $bo "gig_legend_gig";
                                    
    $link    "<a href=\"?section=giglesen&id=".$g['id']."\" class=\"kalender_link\" title=\"Details: ".$g['titel']."\">$i</a>";
                                }
                                
                    echo 
    "<td class=\"".$bo."\" align=\"center\">$link</td>";
                    
                        if (
    $x == "So"
                            echo 
    "</tr>\n<tr>"// Am Sonntag endet die jeweilige Zeile
                        
    }
                }
            echo 
    "</tr></table>";
            
            echo 
    "<p />";
    ?>
    Sollte so klappen hoffe ich.
     

  3. #3
    Registriert seit
    Oct 2005
    Ort
    Nottuln
    Beiträge
    1.282
    Hey,

    jetzt wiederholt er den Kalender aber 3 mal... Halt so oft, nachdem wie viele einträge inner db sind
     

  4. #4
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Du koenntest zum Beispiel den kompletten Kalender aufbauen und dann fuer jeden Tag pruefen ob es einen Eintrag in der Datenbank gibt.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  5. #5
    Registriert seit
    Oct 2005
    Ort
    Nottuln
    Beiträge
    1.282
    Und wie sollte ich das anstellen?

    David
     

  6. #6
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Also waehrend Du den Kalender ausgibst weisst Du ja fuer jeden Tag den Du gerade ausgibst das Datum, entsprechend kannst Du ja in der Datenbank nachsehen ob fuer eben diesen Tag etwas eingetragen ist und dies dann eben ausgeben.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  7. #7
    Registriert seit
    Oct 2005
    Ort
    Nottuln
    Beiträge
    1.282
    JO fett

    Hätt ich auch selber drauf kommen könn

    naja...

    thx
     

Ähnliche Themen

  1. Benötige Hilfe bei Kalender
    Von alphaone im Forum PHP
    Antworten: 2
    Letzter Beitrag: 09.11.09, 12:25
  2. PHP Kalender mit MySQL Datenbank
    Von Silentdevil im Forum PHP
    Antworten: 2
    Letzter Beitrag: 26.10.08, 14:15
  3. PHP Kalender Wochenansicht *HILFE* :(
    Von Chilled86 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 31.05.07, 16:49
  4. Hilfe! Probleme mit Kalender...
    Von webmaster76 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 23.03.05, 12:36
  5. Kalender in einer Access Datenbank erstellen
    Von mjm-systemhaus im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 27.02.05, 13:09