anfänger-problem kalender-monate verlinken

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

  • anfänger-problem kalender-monate verlinken

    hi! ich habe mir bei

    http://www.cascade.org.uk/software/php/calendar/

    einen kalender-baukasten heruntergeladen, den man selbst um einige module erweitern kann. das modul, das ich zusätzlich benötige, ist das verlinken zwischen einzelnen monatstabellen.

    die anleitung dazu gibt es bei

    http://www.cascade.org.uk/software/p...navigation.php

    leider ist diese beschreibung für einen anfänger wie mich nicht nachvollziehbar, da nicht klar genug formuliert.

    kann mir bitte jemand dabei helfen, die verlinken-funktion in den vorhandenen quelltext einzubauen? der komplette code inklusive verlinken-modul wäre echt sehr nett, ich versuche es schon seit einer stunde ohne erfolg... wenn man sich mit php auskennt, dauert das sicher nur ne minute .

    vielen dank schon mal & grüße,
    555*

  • #2
    Scriptgesuch?!?

    Und Tschüß!!! Ach was für ein Spaß *VERSCHIEB*

    Kommentar


    • #3
      Das Ergebnis des Thread: http://www.php-resource.de/forum/sho...light=calendar
      PHP-Code:
      <? // calender.php ?>
      <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
      $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");
      }

      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";
      }
      ?>
      PHP-Code:
      <?
      // termindetail.php
      mysql_connect("localhost", "", "") or die("could not connect"); // Connect zur DB
      mysql_select_db("test") or die("db falsch"); // Datenbank auswählen

      if (!isset($_REQUEST[year]) || !isset($_REQUEST[month]) || !isset($_REQUEST[day])) {
          die ("Variablen sind nicht gesetzt");
      }
          
      if (strlen($_REQUEST[month]) == 1) {
          $_REQUEST[month] = "0".$_REQUEST[month];
      }

      $varDat = "$_REQUEST[year]"."-"."$_REQUEST[month]"."-"."$_REQUEST[day]";

      $select = "SELECT * FROM termine WHERE DATE_FORMAT(termStart,'%Y-%m-%d') = '$varDat' ORDER BY termStart";

      $found = mysql_query($select);
          
      while ($row = mysql_fetch_array($found)) {
          print "Termin: $row[termStart] bis $row[termEnd]<br>\n";
          print "&nbsp;&nbsp;&nbsp;<b>$row[termSubject]</b><br>\n";
          print "&nbsp;&nbsp;&nbsp;$row[termDetail]<br>\n";
      }
          
      mysql_free_result($found);

      ?>
      In Verbindung mit dieser MySQL Tabelle für Termine:
      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-12-03 12:20:00", "2002-12-03 16:20:00", "Freunde treffen", "Jetzt geht es los", "", now()); 
      insert into termine values (NULL, "2002-12-13 11:00:00", "2002-12-14 12:00:00", "Mittagessen", "Vorbereitungen", "", now());

      Kommentar


      • #4
        vielen dank für den code! das mit der datenbank wäre dann nämlich mein nächstes großes problem gewesen...

        es funktioniert jetzt alles bis auf die links, wenn ein termin vergeben ist. wenn ich klicke, bekomme ich die meldung "variablen sind nicht gesetzt".

        kannst du mir noch kurz erklären, was ich dagegen mache?

        vielen dank,
        555*
        Zuletzt geändert von 555*soul; 15.12.2002, 16:05.

        Kommentar


        • #5
          mach mal vor die zeile 47 und vor die zeile 52 jeweils ein echo mysql_error(); und sieh mal, was du angezeigt bekommst.

          Kommentar


          • #6
            ich hab den fehler mit den beiden zeilen gefunden, es war ein einfacher tippfehler im namen der datenbank... es wurde aber eben nicht angezeigt, dass er die db nicht connecten konnte, deshalb hab ichs nicht sofort bemerkt...

            vielen dank für deine hilfe!

            ein kleines problem habe ich aber trotzdem noch: wenn ich auf einen belegten termin klicke, bekomme ich die meldung "variablen sind nicht gesetzt". müsste ein problem mit der terminedetail.php sein... kannst du mir bitte nochmal nen tip geben?

            vielen dank,
            555*

            Kommentar


            • #7
              1.) Das ist ja schonmal wunderbar!

              2.) Ich kenne das Programm leider nicht, weswegen ich da nichts zu sagen kann. Ist es möglich, dass du einen Link wie kalender.php?monat=dec haben musst? Und das diese Variable nicht übergeben wird?

              Kommentar


              • #8
                so gut kenne ich mich leider nicht aus ...
                aber das problem müsste hier sein:

                if (!isset($_REQUEST[year]) || !isset($_REQUEST[month]) || !isset($_REQUEST[day])) {
                die ("Variablen sind nicht gesetzt");
                }

                555*

                Kommentar


                • #9
                  Und was steht in der Adresszeile, wenn du die Seite aufrufst?

                  Kommentar


                  • #10
                    vielleicht hilft das weiter:
                    wenn ich auf den jeweiligen datums-link klicke, steht in der adressleiste folgendes:

                    http://localhost/termindetail.php?ye...onth=12&day=30

                    es müsste also schon übergeben werden...

                    Kommentar


                    • #11
                      Und trotzdem der Fehler?

                      Kannst mal versuchen aus dem _REQUEST ein _GET zu machen. Glaube nicht dass es was bringt, aber mach mal

                      Kommentar


                      • #12
                        und bei einem mouseover wird auch die bezeichnung des vergebenen termins angezeigt, also z.b. wie in mysql eingegeben "freunde treffen" usw.
                        er kann also schon auf die datenbank zugreifen...

                        die _GET methode bringt leider auch keinen erfolg...
                        Zuletzt geändert von 555*soul; 15.12.2002, 16:26.

                        Kommentar


                        • #13
                          Das heißt also, dass die Links korrekt sind. Bleibt nur, dass die Detailseite die Vars nicht erkennt

                          Kommentar


                          • #14
                            hier ist mal ein teil aus der calendar.php.
                            er übergibt den link. mir kommt dieses "eregi" etwas verdächtig vor... glaubst du, da liegt der fehler? was soll das überhaupt sein?
                            555*

                            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>";

                            Kommentar


                            • #15
                              Wenn:
                              $_REQUEST[year]
                              $_REQUEST[month]
                              $_REQUEST[day]

                              und
                              $_GET[year]
                              $_GET[month]
                              $_GET[day]

                              nicht funktioniert, dann versuche es mit
                              $year
                              $month
                              $day

                              Dann hast vermutlich eine alte verstaubte php Version

                              Kommentar

                              Lädt...
                              X