@hand Dein Kalender-Script

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

  • @hand Dein Kalender-Script

    Hey Master doppel Stern hand,

    Wie kann ich dein Kalender-Script so erweitern das mir die Tage mit Terminen farbig angezeigt werden. Und Ich das Kalender-Script mit der MySQL-Datenbank verbinden kann. Soll heißen das ich die Termine in eine Datenbank eintrage und mir das Script die Tage markiert mit Terminen und diese auch anklickbar und auch die termine ausgibt?

    PHP-Code:
    <style type="text/css">
    TD, TH {
         FONT-FAMILY: Arial, Verdana, Trebuchet MS, Helvetica;
         FONT-SIZE: 8pt;
         FONT-WEIGHT: none;
         COLOR: black;
        BACKGROUND-COLOR: #FBFBFD;
    }

    .alt {BACKGROUND-COLOR: #E7E7F1;}
    .basic {COLOR: white; BACKGROUND-COLOR: #606096;}
    .top {COLOR: black; BACKGROUND-COLOR: #A3A3CB;}
    .white {BACKGROUND-COLOR: #FFFFFF;}
    .blank {BACKGROUND-COLOR: white;}
    </style>

    <?
    $link_url    = "";
    $selector    = 1;
    $highlight    = 1;

    //    Get todays date if we didn't get one
    if (($year == "") || ($month == "") || ($day == "")) {
        $year = date("Y");
        $month = date("n");
        $day = date("d");
    }

    //    Get info for Calendar generation
    $daysmonth = date("t",mktime(0,0,0,$month,$day,$year));
    $firstday = date("w",mktime(0,0,0,$month,1,$year));
    $padmonth = date("m",mktime(0,0,0,$month,$day,$year));
    $padday = date("d",mktime(0,0,0,$month,$day,$year));

    //    Customize according to $calendar_format
    if ($firstday == 0) {
        $firstday = 7;
    }
    $date = "$padday.$padmonth.$year";
    $dayletter = array(1 => "Mo", 2 => "Di", 3 => "Mi", 4 => "Do", 5 => "Fr", 6 => "Sa", 7 => "So");
    $daymod = 0;
    ?>
    <table border="0" cellspacing="0" cellpadding="0" width="150">
        <tr>
        <td class=basic>
        <table width="150" border="0" cellspacing="1" cellpadding="3">
            <tr>
            <th class=top colspan=7> <font color="#000000"><b><? echo $date;?></b></font></th>
            </tr>
            <tr>
    <?
    for($daynumber = 1; $daynumber < 8; $daynumber++) {
        echo "<td><font size='1'>$dayletter[$daynumber]</font></td>";
    }
    ?>
            </tr>
            <tr>
    <?
    for ($i = 1; $i < $daysmonth + $firstday + $daymod; $i++) {
        $a = $i - $firstday + 1 - $daymod;
        $day = $i - $firstday + 1 - $daymod;
        if (strlen($a) == 1) {
            $a = "0$a";
        }
        if (($i < $firstday) || ($a == "00")) { 
            $text = "";
            $colour = "white";
            $size = 10;
            echo "<td class=white> </td>";
            $k++;
        } else {
            if (($padday == $a) && ($highlight)) {
                if (($i%7) == $daymod) {
                    $text = "$a";
                    $colour = "class=top";
                } else {
                    $text = "$a";
                    $colour = "class=top";
                    $size = 12;
                }
            } else {
                if (($i%7) == $daymod) {
                    $text = "$a";
                    $colour = "class=alt";
                    $size = 10;
                } else {
                    $text = "$a";
                    $colour = "";
                    $size = 10;
                }
            }
            echo "<td $colour><font size='1'>$text</font></td>";
        }

        if (($i%7) == 0) {
            echo "</TR><TR>\n";
        }
    }

    if (($i%7) != 1) {
        echo "</TD>\n";
    }
        
    $colspan = 36 - $i;
    if ($colspan < 1) {
        $colspan = $colspan + 7;
    }
    for ($i = 0; $i < $colspan; $i++) {
        echo "<td class=white> </td>";
    }

    echo "</tr><tr>";

    // Print the selector
    if ($selector) {
        if ($month == 1) {
            $pyear = $year - 1;
            $pmonth = 12;
        } else {
            $pyear = $year;
            $pmonth = $month - 1;
        }

        if ($month == 12) {
            $nyear = $year + 1;
            $nmonth = 1;
        } else {
            $nyear = $year;
            $nmonth = $month + 1;
        }
        
        $year = date("Y");
        $month = date("n");
        $day = date("j");
        echo "<TD colspan=7 class=white><center><FONT SIZE=-2><A HREF='$link_url?year=$pyear&month=$pmonth&day=1'>backw</A> | <A HREF='$link_url?year=$year&month=$month&day=$day'>today</A> | <A HREF='$link_url?year=$nyear&month=$nmonth&day=1'>forw</A></FONT></TD>\n";
    }

    ?>
    *winks*
    Gilbert
    ------------------------------------------------
    Hilfe für eine Vielzahl von Problemen!!!
    http://www.1st-rootserver.de/

  • #2
    He Du Zauberer, hast ja eine nette CSS zusammengezaubert.

    Also einen Tag markieren funzt ja mal schon
    ... calendar.php?year=2002&month=08&day=13

    Das "Basisdatum" year month würde ich mal so belassen. Über dieses wird die Basisanzeige gewählt, also August 2002.

    Die Termintage dieses Monats werden in ein Array day[] gestellt. Es sind nur jene day[] Einträge gestattet deren Jahr und Monat mit year bzw. month übereinstimmen - is eh logisch. Jetzt müßte dieser Array über eine Schleife abgearbeitet werden.

    z.B.:

    day[0] = "3";
    day[1] = "17";
    day[2] = "4";
    day[3] = "17";
    ....

    Alle Tages-Termine die über die Schleife abgearbeitet werden werden entsprechend farblich verändert, eventuell auch ein Link hinterlegt.

    Ist schon einiges zu tun, denke ich.

    Zuletzt geändert von hand; 15.08.2002, 00:16.

    Kommentar


    • #3
      PHP-Code:
      <style type="text/css">
      TD, TH {
           FONT-FAMILY: Arial, Verdana, Trebuchet MS, Helvetica;
           FONT-SIZE: 8pt;
           FONT-WEIGHT: none;
           COLOR: black;
          BACKGROUND-COLOR: #FBFBFD;
      }

      .alt {BACKGROUND-COLOR: #E7E7F1;}
      .basic {COLOR: white; BACKGROUND-COLOR: #606096;}
      .top {COLOR: black; BACKGROUND-COLOR: #A3A3CB;}
      .white {BACKGROUND-COLOR: #FFFFFF;}
      .blank {BACKGROUND-COLOR: white;}
      </style>

      <?

      $tag[] = "01"; // Hier die Tage definiert, die angezeigt werden sollen
      $tag[] = "02"; // kommen dann später aus der DB
      $tag[] = "03";
      $tag[] = "04";
      $tag[] = "12";

      $link_url    = "";
      $selector    = 1;
      $highlight    = 1;

      //    Get todays date if we didn't get one
      if (($year == "") || ($month == "") || ($day == "")) {
          $year = date("Y");
          $month = date("n");
          $day = date("d");
      }

      //    Get info for Calendar generation
      $daysmonth = date("t",mktime(0,0,0,$month,$day,$year));
      $firstday = date("w",mktime(0,0,0,$month,1,$year));
      $padmonth = date("m",mktime(0,0,0,$month,$day,$year));
      $padday = date("d",mktime(0,0,0,$month,$day,$year));

      //    Customize according to $calendar_format
      if ($firstday == 0) {
          $firstday = 7;
      }
      $date = "$padday.$padmonth.$year";
      $dayletter = array(1 => "Mo", 2 => "Di", 3 => "Mi", 4 => "Do", 5 => "Fr", 6 => "Sa", 7 => "So");
      $daymod = 0;
      ?>
      <table border="0" cellspacing="0" cellpadding="0" width="150">
          <tr>
          <td class=basic>
          <table width="150" border="0" cellspacing="1" cellpadding="3">
              <tr>
              <th class=top colspan=7> <font color="#000000"><b><? echo $date;?></b></font></th>
              </tr>
              <tr>
      <?
      for($daynumber = 1; $daynumber < 8; $daynumber++) {
          echo "<td><font size='1'>$dayletter[$daynumber]</font></td>";
      }
      ?>
              </tr>
              <tr>
      <?
      for ($i = 1; $i < $daysmonth + $firstday + $daymod; $i++) {
          $a = $i - $firstday + 1 - $daymod;
          $day = $i - $firstday + 1 - $daymod;
          if (strlen($a) == 1) {
              $a = "0$a";
          }
          if (($i < $firstday) || ($a == "00")) { 
              $text = "";
              $colour = "white";
              $size = 10;
              echo "<td class=white> </td>";
              $k++;
          } else {
              foreach ($tag as $padday) {
                  if (($padday == $a) && ($highlight)) {
                      if (($i%7) == $daymod) {
                          $text = "$a";
                          $colour = "class=top";
                          break;
                      } else {
                          $text = "$a";
                          $colour = "class=top";
                          $size = 12;
                          break;
                      }
                  } else {
                      if (($i%7) == $daymod) {
                          $text = "$a";
                          $colour = "class=alt";
                          $size = 10;
                      } else {
                          $text = "$a";
                          $colour = "";
                          $size = 10;
                      }
                  }
              }
              if (eregi("class=top",$colour)) {
                  echo "<td $colour><font size='1'><a href='???'>$text</a></font></td>"; // Hier der Link
              } else {
                  echo "<td $colour><font size='1'>$text</font></td>";
              }
          }

          if (($i%7) == 0) {
              echo "</TR><TR>\n";
          }
      }

      if (($i%7) != 1) {
          echo "</TD>\n";
      }
          
      $colspan = 36 - $i;
      if ($colspan < 1) {
          $colspan = $colspan + 7;
      }
      for ($i = 0; $i < $colspan; $i++) {
          echo "<td class=white> </td>";
      }

      echo "</tr><tr>";

      // Print the selector
      if ($selector) {
          if ($month == 1) {
              $pyear = $year - 1;
              $pmonth = 12;
          } else {
              $pyear = $year;
              $pmonth = $month - 1;
          }

          if ($month == 12) {
              $nyear = $year + 1;
              $nmonth = 1;
          } else {
              $nyear = $year;
              $nmonth = $month + 1;
          }
          
          $year = date("Y");
          $month = date("n");
          $day = date("j");
          echo "<TD colspan=7 class=white><center><FONT SIZE=-2><A HREF='$link_url?year=$pyear&month=$pmonth&day=1'>backw</A> | <A HREF='$link_url?year=$year&month=$month&day=$day'>today</A> | <A HREF='$link_url?year=$nyear&month=$nmonth&day=1'>forw</A></FONT></TD>\n";
      }

      ?>
      Zuletzt geändert von hand; 15.08.2002, 00:53.

      Kommentar


      • #4
        Wie mach ich jetzt am besten die Datenbankstruktur?
        pro Monat eine Tabelle und dann bloss die Termine eintragen die ich brauche.?
        *winks*
        Gilbert
        ------------------------------------------------
        Hilfe für eine Vielzahl von Problemen!!!
        http://www.1st-rootserver.de/

        Kommentar


        • #5
          Anstatt der fixen Zuordnung wie
          $tag[] = "01"; // Hier die Tage definiert, die angezeigt werden sollen
          $tag[] = "02"; // kommen dann später aus der DB
          $tag[] = "03";
          $tag[] = "04";
          $tag[] = "12";
          etc.

          machst einen select * from datenbank where jahrausdatum=$year and monatausdatum=$month order by datum

          Das Ergebnis durchschleifen
          $tag[] = row[tagausdatum]

          usf.

          Kommentar


          • #6
            Halt STOP!!!

            Ich wollte eigentlich wissen wie ich die Tabellen-Struktur am besten mache.
            geschreiben von mir
            Wie mach ich jetzt am besten die Datenbankstruktur?
            pro Monat eine Tabelle und dann bloss die Termine eintragen die ich brauche?
            Ich habe mir jetzt folgende Tabellen angelegt:
            01_januar
            02_februar
            03_maerz
            usw.

            Bzw. einen Tabelle für alles:
            termine

            Welche der Versionen ist besser?
            *winks*
            Gilbert
            ------------------------------------------------
            Hilfe für eine Vielzahl von Problemen!!!
            http://www.1st-rootserver.de/

            Kommentar


            • #7
              Eine Tabelle ist besser
              Code:
              CREATE TABLE termine (
                termId	int(11) NOT NULL auto_increment,
                termStart	datetime NOT NULL default '0000-00-00 00:00:00',
                termEnd	datetime NOT NULL default '0000-00-00 00:00:00',
                termSubject	varchar(100) NOT NULL default '',
                termDetail	text,
                termLink	varchar(100) NOT NULL default '',
                termUpdate	datetime NOT NULL default '0000-00-00 00:00:00',
                PRIMARY KEY  (termid),
                KEY termId (termId)
              ) TYPE=MyISAM;
              
              insert into termine values (NULL, "2002-08-03 12:20:00", "2002-08-03 16:20:00", "Freunde treffen", "Jetzt geht es los", "", now()); 
              insert into termine values (NULL, "2002-08-13 11:00:00", "2002-08-14 12:00:00", "Mittagessen", "Vorbereitungen", "", now());
              termUpdate ... Zeitpunkt der letzten Änderung
              Zuletzt geändert von hand; 15.08.2002, 14:12.

              Kommentar


              • #8
                Original geschrieben von hand
                select * from datenbank where jahrausdatum=$year and monatausdatum=$month order by datum
                Den select verstehe ich aber noch nicht ganz.
                Beginnent ab der Where Klausel. Im bezug auf dei Tabelle.
                *winks*
                Gilbert
                ------------------------------------------------
                Hilfe für eine Vielzahl von Problemen!!!
                http://www.1st-rootserver.de/

                Kommentar


                • #9
                  PHP-Code:
                  <style type="text/css">
                  TD, TH {
                       FONT-FAMILY: Arial, Verdana, Trebuchet MS, Helvetica;
                       FONT-SIZE: 8pt;
                       FONT-WEIGHT: none;
                       COLOR: black;
                      BACKGROUND-COLOR: #FBFBFD;
                  }

                  .alt {BACKGROUND-COLOR: #E7E7F1;}
                  .basic {COLOR: white; BACKGROUND-COLOR: #606096;}
                  .top {COLOR: black; BACKGROUND-COLOR: #A3A3CB;}
                  .white {BACKGROUND-COLOR: #FFFFFF;}
                  .blank {BACKGROUND-COLOR: white;}

                  A:link, A:visited, A:active {
                      COLOR: #000020;
                      TEXT-DECORATION: underline;
                  }
                  A:hover {
                      COLOR: #FF4400;
                  }
                  </style>

                  <?
                  //    Get todays date if we didn't get one
                  if (($year == "") || ($month == "") || ($day == "")) {
                      $year = date("Y");
                      $month = date("n");
                      $day = date("d");
                  }

                  mysql_connect("localhost", "", "") or die("could not connect"); // Connect zur DB
                  mysql_select_db("test"); // Datenbank auswählen

                  $select = "SELECT DATE_FORMAT(termStart,'%d') as SqlTag, termSubject
                                      FROM termine
                                      WHERE
                                          DATE_FORMAT(termStart,'%Y') = $year AND
                                          DATE_FORMAT(termStart,'%m') = $month
                                      ORDER BY termStart
                                      ";
                  $found = mysql_query($select);
                      
                  while ($row = mysql_fetch_array($found)) {
                      $tag[] = $row[SqlTag];
                      $subj[] = $row[termSubject];
                  }
                      
                  mysql_free_result($found);

                  $link_url    = "";
                  $selector    = 1;
                  $highlight    = 1;

                  //    Get info for Calendar generation
                  $daysmonth = date("t",mktime(0,0,0,$month,$day,$year));
                  $firstday = date("w",mktime(0,0,0,$month,1,$year));
                  $padmonth = date("m",mktime(0,0,0,$month,$day,$year));
                  $padday = date("d",mktime(0,0,0,$month,$day,$year));

                  //    Customize according to $calendar_format
                  if ($firstday == 0) {
                      $firstday = 7;
                  }
                  $date = "$padday.$padmonth.$year";
                  $dayletter = array(1 => "Mo", 2 => "Di", 3 => "Mi", 4 => "Do", 5 => "Fr", 6 => "Sa", 7 => "So");
                  $daymod = 0;
                  ?>
                  <table border="0" cellspacing="0" cellpadding="0" width="150">
                      <tr>
                      <td class=basic>
                      <table width="150" border="0" cellspacing="1" cellpadding="3">
                          <tr>
                          <th class=top colspan=7> <font color="#000000"><b><? echo $date;?></b></font></th>
                          </tr>
                          <tr>
                  <?
                  for($daynumber = 1; $daynumber < 8; $daynumber++) {
                      echo "<td><font size='1'>$dayletter[$daynumber]</font></td>";
                  }
                  ?>
                          </tr>
                          <tr>
                  <?
                  for ($i = 1; $i < $daysmonth + $firstday + $daymod; $i++) {
                      $a = $i - $firstday + 1 - $daymod;
                      $day = $i - $firstday + 1 - $daymod;
                      if (strlen($a) == 1) {
                          $a = "0$a";
                      }
                      if (($i < $firstday) || ($a == "00")) { 
                          $text = "";
                          $colour = "white";
                          $size = 10;
                          echo "<td class=white> </td>";
                          $k++;
                      } else {
                          $index = 0;
                          $title = "";
                          foreach ($tag as $padday) {
                              if (($padday == $a) && ($highlight)) {
                                  $title = $subj[$index];
                                  if (($i%7) == $daymod) {
                                      $text = "$a";
                                      $colour = "class=top";
                                      break;
                                  } else {
                                      $text = "$a";
                                      $colour = "class=top";
                                      $size = 12;
                                      break;
                                  }
                              } else {
                                  if (($i%7) == $daymod) {
                                      $text = "$a";
                                      $colour = "class=alt";
                                      $size = 10;
                                  } else {
                                      $text = "$a";
                                      $colour = "";
                                      $size = 10;
                                  }
                              }
                          $index++;
                          }
                          if (eregi("class=top",$colour)) {
                              echo "<td $colour><font size='1'><a href='termindetail.php?year=$year&month=$month&day=$text' title='$title'>$text</a></font></td>"; // Hier der Link
                          } else {
                              echo "<td $colour><font size='1'>$text</font></td>";
                          }        
                      }

                      if (($i%7) == 0) {
                          echo "</TR><TR>\n";
                      }
                  }

                  if (($i%7) != 1) {
                      echo "</TD>\n";
                  }
                      
                  $colspan = 36 - $i;
                  if ($colspan < 1) {
                      $colspan = $colspan + 7;
                  }
                  for ($i = 0; $i < $colspan; $i++) {
                      echo "<td class=white> </td>";
                  }

                  echo "</tr><tr>";

                  // Print the selector
                  if ($selector) {
                      if ($month == 1) {
                          $pyear = $year - 1;
                          $pmonth = 12;
                      } else {
                          $pyear = $year;
                          $pmonth = $month - 1;
                      }

                      if ($month == 12) {
                          $nyear = $year + 1;
                          $nmonth = 1;
                      } else {
                          $nyear = $year;
                          $nmonth = $month + 1;
                      }
                      
                      $year = date("Y");
                      $month = date("n");
                      $day = date("j");
                      echo "<TD colspan=7 class=white><center><FONT SIZE=-2><A HREF='$link_url?year=$pyear&month=$pmonth&day=1'>backw</A> | <A HREF='$link_url?year=$year&month=$month&day=$day'>today</A> | <A HREF='$link_url?year=$nyear&month=$nmonth&day=1'>forw</A></FONT></TD>\n";
                  }
                  ?>
                  Wenn Du mit der Mouse auf den Terminlink fährst wird der Termin auch schon angezeigt.
                  Aber jetzt mußt alleine zurecht kommen

                  Kommentar


                  • #10
                    @hand
                    Den Rest mit der Ausgabe bekomme ich schon hin.

                    Aber wieso ist jetzt das Feld für den Heutigen Tag weg?
                    Kann man es auch so um stellen das die Termin Tage andersfarbig dargestellt werden?
                    *winks*
                    Gilbert
                    ------------------------------------------------
                    Hilfe für eine Vielzahl von Problemen!!!
                    http://www.1st-rootserver.de/

                    Kommentar


                    • #11
                      Den Link auf termindetail.php hab ich Dir ja schon gelegt.

                      Andere Farbe?
                      .top {COLOR: black; BACKGROUND-COLOR: red;}

                      Weil kein Termin für den heutigen Tag vorhanden ist, ist das Feld für den Heutigen Tag weg. Kannst es ja wieder reinmachen. Nach dem Array Aufbau via SQL
                      $tag[] =$day;
                      Danach aber bitte den Arry sortieren, das Skript erwartet aufsteigende Reihenfolge der Tage.

                      Kommentar


                      • #12
                        So richtig?
                        PHP-Code:
                        //    Get info for Calendar generation
                        $daysmonth date("t",mktime(0,0,0,$month,$day,$year));
                        $firstday date("w",mktime(0,0,0,$month,1,$year));
                        $padmonth date("m",mktime(0,0,0,$month,$day,$year));
                        $padday date("d",mktime(0,0,0,$month,$day,$year));

                        $tag[] = $padday
                        asort ($tag); 
                        Das mit der Tagesmarkierung sollte ja nur für den einen heutigen Tag gelten. Die Termine können ja so bleiben.
                        Zuletzt geändert von Wotan; 15.08.2002, 15:37.
                        *winks*
                        Gilbert
                        ------------------------------------------------
                        Hilfe für eine Vielzahl von Problemen!!!
                        http://www.1st-rootserver.de/

                        Kommentar


                        • #13
                          Its mir erst garnicht auf gefallen, aber wenn der Monat keinen termin hat gibts ne Fehlermeldung:
                          Warning: Invalid argument supplied for foreach() in C:\wampp2036\htdocs\kalender\index.php on line 106

                          PHP-Code:
                              if (($i $firstday) || ($a == "00")) {
                                  
                          $text "";
                                  
                          $colour "white";
                                  
                          $size 10;
                                  echo 
                          "<td class=white> </td>";
                                  
                          $k++;
                              } else {
                                  
                          $index 0;
                                  
                          $title "";
                                  foreach (
                          $tag as $padday) {// Zeile 106
                                      
                          if (($padday == $a) && ($highlight)) {
                                          
                          $title $subj[$index];
                                          if ((
                          $i%7) == $daymod) {
                                              
                          $text "$a";
                                              
                          $colour "class=top";
                                              break;
                                          }else {
                                              
                          $text "$a";
                                              
                          $colour "class=top";
                                              
                          $size 12;
                                              break;
                                          }
                                      } else {
                                          if ((
                          $i%7) == $daymod) {
                                              
                          $text "$a";
                                              
                          $colour "class=alt";
                                              
                          $size 10;
                                          } else {
                                              
                          $text "$a";
                                              
                          $colour "";
                                              
                          $size 10;
                                          }
                                      }
                                  
                          $index++;
                                  } 
                          Das mit dem heuteigen Datum hab ich wieder raus genommen, weil er mir immer den 1. des Monats beim umblättern markiert hat.
                          *winks*
                          Gilbert
                          ------------------------------------------------
                          Hilfe für eine Vielzahl von Problemen!!!
                          http://www.1st-rootserver.de/

                          Kommentar


                          • #14
                            Stimmt., mir auch nicht -> Workaround:
                            PHP-Code:
                            <?
                            //    Get todays date if we didn't get one
                            $tag[] = "00"; // Trag das hier da ganz am Anfang des PHP Teiles im Skript ein
                            $subj[] = "";  // Trag das hier da ganz am Anfang des PHP Teiles im Skript ein
                            if (($year == "") || ($month == "") || ($day == "")) {
                                $year = date("Y");
                                $month = date("n");
                                $day = date("d");
                            }
                            Zuletzt geändert von hand; 15.08.2002, 18:00.

                            Kommentar


                            • #15
                              Interssant

                              ich finde eure Arbeit hier enorm interessant. Ich bin total neueinsteiger in PHP und Mysql. Könntet ihr ev. das ganze Script (den ganzen fertigen Kalender) zur Verfügung stellen. Das würde ich sehr nett finden...

                              Cu und lieben Gruss

                              Kommentar

                              Lädt...
                              X