PHP-Kalender

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

  • PHP-Kalender

    Hallo!

    Ich habe einen kleinen Eventkalender in PHP erstellt, der alle Tage, an denen ein Event stattfindet, rot markiert.
    Durch Anklicken werden die Events des jeweiligen Tages aufgelistet.

    Mein Problem ist jetzt: er zeigt bzw. markiert nur einen einzigen Tag pro Monat, obwohl es viel mehr Events gibt.
    Kann den Fehler in meinem Script einfach nicht finden.
    Möglicherweise liegt es an "in_array"?

    Wäre echt super wenn mir da jemand weiterhelfen könnte!

    PHP-Code:
    <?php

    /
    // Zellen für ein Kalendermonat 6 Zeilen mit 7 Zellen (insgesamt 42)
    define ("kalender_faecher""42");


    // DATUM SETZEN - wenn noch kein Pfeil gedrückt wurde, dann wird das Systemdatum
    // verwendet. Ansonsten wird das Jahr um 1 hinauf oder 1 hinunter gesetzt.

    if  (!isset($_GET[pfeil]))
        {
        
    // wenn ein Tag angeklickt wird, der nicht in dem aktuellen Monat ist, 
        // wird das jeweilige Monat übergeben
     
        
    if (isset ($_GET[monat]))
        {
        
    $jahr=$_GET[jahr];
        
    $monat=$_GET[monat];
        }
        else {
    $datum getdate();
        
    $monat $datum["mon"];
        
    $jahr $datum["year"];
        }
        }
        else{
              
    $jahr $_GET[jahr];     
              if(
    $_GET[pfeil]=="zurueck")
                {
    $monat $_GET[monat];
                
    $monat $monat 1;
                }
                else
                {
                
    $monat $_GET[monat];
                
    $monat $monat 1;
                } 
                
            }

    // ZUERUECK - VOR - Sprung aufs vorige oder aufs nächste Jahr
        
    if ($monat>12)   {
                               
    $monat=1;
                               
    $jahr=$jahr+1
                               }
                if (
    $monat<1)  {
                               
    $monat=12;
                               
    $jahr=$jahr-1
                               }
     

    // Berechnung von Monat und Jahr davor
    $monat_davor $monat 1;
    $jahr_davor $jahr -1;



    $tage_pro_monat cal_days_in_month(CAL_GREGORIAN$monat,$jahr);


    //bei der if Schleife wird auch geprüft, ob der Vormonat in einem anderen Jahr liegt

    if ($monat_davor == "0" 
    {    
       
    $tage_monat_davor cal_days_in_month(CAL_GREGORIAN12,$jahr_davor);
    }else
       {
          
    $tage_monat_davor cal_days_in_month(CAL_GREGORIAN$monat_davor,$jahr);    
       }
    //else ende

    $anfangstag date('w'mktime (0,0,0,$monat,1,$jahr)); //Gibt den Wochentag als Zahl aus (0=Sonntag usw)
    $aktueller_monat date("F");

    /*Die Lücken vor Beginn den gewählten Monats werden aufgefüllt (mit den Tagen des Monats davor)
    es muss +1 sein, weil die Wochentage von 0 bis 6 gezählt werden */
    $vormonat $tage_monat_davor $anfangstag 1;


    // VERBINDUNG ZUR DATENBANK
    $db mysql_connect('localhost''root''');
    mysql_select_db('events_db',$db);

    // Aus der Datenbank holen wir die Tage in diesem Monat, an denen Aktivitäten stattfinden
    $resultat mysql_query("select DAYOFMONTH(datum)
    as tag from events where YEAR(datum)= 
    $jahr
    and MONTH(datum) = 
    $monat") or die(mysql_error());
     
    $events_in_diesem_monat mysql_fetch_array($resultat);


    /* KALENDER WIRD ERZEUGT */
    echo "<p align='left'><br><table id='eventkalender'cellpadding='0' cellspacing='0'>
          <tr><td class='pfeil'><b>"
    ;

    // Pfeil nach links (1 Jahr zurueck)
    echo "<a href='kalender.php?pfeil=zurueck&monat=".$monat."&jahr=".$jahr."'><<</a>  ";
    echo 
    "</td>";
    echo 
    "<td class='monat' colspan='5'>";
    if (
    $monat==1) {print "Jänner  ";}
          else if (
    $monat==2) {print "Februar  ";}
          else if (
    $monat==3) {print "März  ";}
          else if (
    $monat==4) {print "April  ";}
          else if (
    $monat==5) {print "Mai  ";}
          else if (
    $monat==6) {print "Juni  ";}
          else if (
    $monat==7) {print "Juli  ";}
          else if (
    $monat==8) {print "August  ";}
          else if (
    $monat==9) {print "September  ";}
          else if (
    $monat==10) {print "Oktober  ";}
          else if (
    $monat==11) {print "November  ";}
          else if (
    $monat==12) {print "Dezember  ";}
    echo 
    $jahr;
    echo 
    "</td>";
    echo 
    "<td class='pfeil'>";

    // Pfeil nach rechts (1 Jahr vor)
    echo "<a href='kalender.php?pfeil=vor&monat=".$monat."&jahr=".$jahr."'>>></a>";
    echo 
    "</td>";

    // Aufbau der Tabelle für den Kalender (SO,MO,DI,MI,DO,FR,SA)
    echo "</b></td></tr>
         <tr>
             <td class='wochentage'>So</td>
             <td class='wochentage'>Mo</td>
             <td class='wochentage'>Di</td>
             <td class='wochentage'>Mi</td>
             <td class='wochentage'>Do</td>
             <td class='wochentage'>Fr</td>
             <td class='wochentage'>Sa</td>
         </tr>"
    ;



    $tag 1//Für die Kalendertage
    $j 1//Für Tage nach dem gewählten Monat
    for ($i 0$i KALENDER_FAECHER$i++)
    {
        if ( (
    $i 7) == ){echo "<tr>";}
        if (
    $i $anfangstag//Graue Tage vor dem ersten Tag des Monats (Tage des Vormonats)
        
    {    echo "<td class='graue_tage'>".$vormonat."</td>";
            
    $vormonat++;
        }elseif (
    $tag $tage_pro_monat//Graue Tage nach dem letzten des Monats bzw. Tage des nächsten Monats
            
    {    echo "<td class='graue_tage'>".$j."</td>";
                
    $j++;
            }else
                {    
                   
                    if  (
    $events_in_diesem_monat=="") {
                            echo 
    "<td>".$tag."</td>";
                            
                             }
                    
                            
                    
                     else if (
    in_array($tag$events_in_diesem_monat)) {
                          echo 
    "<td class='tage_events'><a href='events.php?jahr=".$jahr."&monat=".$monat."&tag=".$tag."'>".$tag."</href></td>";
                      
                          }  
                   else {
                     echo 
    "<td>".$tag."</td>";
                    
                }
                
    $tag++;
                
           }    
           
        if ( ((
    $i+1) % 7) == ){echo "</tr>";}    // muss +1 sein, damit der Zeilenumbruch an der richtigen Stelle kommt (i beginnt bei 0)

    echo 
    "</table>";


    ?>
    Zuletzt geändert von miny; 20.05.2006, 14:49.

  • #2
    bitte die regeln befolgen.

    Kommentar


    • #3
      Nachdem ich aber nicht weiß, wo der Fehler liegt, muss ich das ganze Script posten. Wüsste ich, wo der Fehler liegt, dann würde ich ihn ja vielleicht auch selbst finden.

      Wenn ich nur einen Teil des PHP-Codes hierher schreibe, dann macht es also auch keinen Sinn oder!?

      Kommentar


      • #4
        sinnvoll ist ebenfalls
        1. code umbrechen, damit man nicht unnötig scrollen muss.
        2. error_reporting höher stellen (deckt ggfs. probleme mit unpassenden indizes in arrays auf.

        dann nochmal schauen.

        Kommentar


        • #5
          Mh wenn du Lust hast dann schau ich mal durch.

          Mail mir mal alles incl Dump dann bekommst du das korrigiert wieder.

          Mail: brusau@gmx.de
          ICQ: 150952232

          Kommentar


          • #6
            wo stelle ich das mit error-reporting ein?

            Kommentar


            • #7
              steht alles im post mit den regeln...

              Kommentar

              Lädt...
              X