Avatar billede sabumnim Novice
12. maj 2010 - 10:17 Der er 11 kommentarer og
1 løsning

Kalender, vil ikke vise udtræk fra DB i december måned

Hej alle

Jeg har et lille spørgsmål som går på noget med at der i den aktuelle database er lagt indhold ind, og det virker fint og vises på alle måneder undtaget December måned.

Jeg kan ikke lige gennemskue hvor det er den går gal, og håber I kan hjælpe mig lidt.
Som det ses her er indholdet i databasen:
http://graensekvadrillen.dk/calendarscript.php?show_event=true&event_date=2010-12-13

Men det vises ikke i selve kalenderen på websiden (højre spalte):
http://graensekvadrillen.dk/invitation.php?&date=12-2010

Kan I se hvad eller hvor det er gået galt i dette script her:
ps. jeg tror det er nede omkring linie 92 at fejlen med tællingen opstår, men kan simpelthen ikke finde det?
---------------------PHP


<?php
    $calendar_script          = "calendarscript.php"; //The location of this script
    $calendar_language        = "uk";      //The extension of the calendar language file.

    $content_background_color = "#EEEEEE";  //Background color of the column
    $content_font_color      = "#000000";  //The font color
    $content_font_size        = 10;          //Font-size in pixels
    $content_font_style      = "normal";    //Set to italic or normal
    $content_font_weight      = "normal";    //Set to bold or normal

    $today_background_color  = "white";  //Background color of the column
    $today_font_color        = "green";  //The font color
    $today_font_size          = 10;          //Font-size in pixels
    $today_font_style        = "normal";    //Set to italic or normal
    $today_font_weight        = "bold";      //Set to bold or normal

    $event_background_color  = "#DDDDDD";  //Background color of the column
    $event_background_color2  = "#EEEEEE";  //Background color of the 2nd column (event popup)
    $event_font_color        = "#ffffff";  //The font color
    $event_font_size          = 10;          //Font-size in pixels
    $event_font_style        = "normal";    //Set to italic or normal
    $event_font_weight        = "bold";      //Set to bold or normal
    $event_popup_width        = "350";      //Width  of the popup for the events
    $event_popup_height      = "300";      //Height of the popup for the events
   
    $head_background_color    = "#DDDDDD";  //Background color of the column
    $head_font_color          = "#cc3300";  //The font color
    $head_font_size          = 11;          //Font-size in pixels
    $head_font_style          = "normal";    //Set to italic or normal
    $head_font_weight        = "bold";      //Set to bold or normal
   
    //darussol: CSS OPTIONS FOR WEEK DAYS
    $days_head_background_color = "#DDDDDD";  //Background color of the column
    $days_head_font_color      = "#cc3300";  //The font color
    $days_head_font_size        = 11;          //Font-size in pixels
    $days_head_font_style      = "normal";    //Set to italic or normal
    $days_head_font_weight      = "bold";      //Set to bold or normal
   
    $table_border            = 0;          //The border of the table
    $table_cellspacing        = 1;          //Cellspacing of the table
    $table_cellpadding        = 2;          //Cellpadding of the table
    $table_width              = '';          //Table width in pixels or %'s
    $table_height            = '';          //Table height in pixels or %'s
   
    $head_link_color          = "#cc3300";    //The color of the link for previous/next month
   
    $font_family = "Verdana";
   

  $events_from_database    = true;       
    $database                = "MIT DATABASE"; 
    $server                  = "MIN SERVER";
    $username                = "MIT BRUGERNAVN"; 
    $password                = "MIT PASSWORD"; 
    $event_table              = "calendar";



    $language_file  = "calendar." . $calendar_language;        //Language file into variable
    $fd            = fopen( $language_file, "r" );            //Open the language file
    $fd            = fread( $fd, filesize( $language_file ) ); //Read the opened file
    $language_array = explode( "\n" , $fd );                    //Put file info into array

    $dayname  = array_slice($language_array,0,7); //The names of the days

    $monthname = array_slice($language_array,7);  //The rest of the language file are the monthnames
   
   
   
    if( isset( $_GET['date'] ) )
        list($month,$year) = explode("-",$_GET['date']);
    else
    {
        $month = date("m");
        $year  = date("Y");
    }



    $date_string = mktime(0,0,0,$month,1,$year);

    $day_start = date("w",$date_string);

   
    $QUERY_STRING = preg_replace("/&date=".$month."-".$year."/","",$_SERVER['QUERY_STRING']);

   


    if( $month < 12 )
    {
        $next_month = $month+1;
        $next_date = $next_month."-".$year;
    }
    else
    {
        $next_year = $year+1;
        $next_date = "1-".$next_year;
        $next_month = 1;
    }
    if( $month > 1 )
    {
        $previous_month = $month-1;
        $next_month    = $month+1;
        $previous_date = $previous_month."-".$year;
    }
    else
    {
        $previous_year = $year-1;
        $previous_date = "12-".$previous_year;
        $previous_month = 12;
    }
   
   
    $table_caption_prev = $monthname[$previous_month-1] . " " . $year;
    $table_caption      = $monthname[date("n",$date_string)-1] . " " . $year;
  if ($next_month == 13){
    $next_month = 1;
    $year++;
  }
    $table_caption_foll = $monthname[$next_month-1] . " " . $year; 
   
    if (isset ($_GET['show_event'])){
    list ($year, $month, $day) = explode ("-", $_GET['event_date']);
    $query = "
      SELECT *
      FROM " . $event_table . "
      WHERE EventYear  = '" . $year . "'
      AND  EventMonth = '" . $month . "'
      AND  EventDay  = '" . $day . "'
      ORDER BY EventTime ASC
    ";

    /* connect to the database */
    $database_connection = mysql_connect ($server, $username, $password);
    mysql_select_db ($database, $database_connection);
    $result = mysql_query ($query) or die(mysql_error());

   
    $color_alternated = false;

    /* header of the table */
    echo "<table width=\"100%\" border=\"" . $table_border . "\" cellpadding=\"" . $table_cellpadding . "\" cellspacing=\"" . $table_cellspacing . "\">";

    $date_string = mktime(0,0,0,$month,$day,$year);
    $month = sprintf("%01d",$month);

    echo "<tr><td align=\"center\" style=\"background-color: #dddddd;color:#333333;font-family:arial, verdana, sans-serif;font-size:15px;font-weight:bold;font-style:normal;\" colspan=\"2\">".$day." " . $monthname[$month-1] . " ".$year."</td></tr>";


 
    while ($record = mysql_fetch_assoc ($result)){
      if ($color_alternated){
        $color_alternated = true;
        $background_color_row = $event_background_color;
      }
      else{
        $color_alternated = true;
        $background_color_row = $event_background_color2;
      }
      echo "<tr class=\"cal_event\">
              <td style=\"background-color: #dddddd;color:#333333;border-bottom: 1px solid #333333;font-family:arial, verdana, sans-serif;font-size:10px;font-weight:bold;font-style:normal;\" width=\"1\">" . $record['EventTime'] . "</td>
              <td style=\"background-color: #dddddd;color:#333333;border-bottom: 1px solid #333333;font-family:arial, verdana, sans-serif;font-size:10px;font-weight:normal;font-style:normal;\">" . nl2br($record['Event']) . "</td>
            </tr>";
    }
 
    echo "</table>";

    /* bring an exit so the script will terminate*/
    exit;
    }
   
    echo "
        <script language=\"javascript\">
      function open_event(date_stamp){
        window.open(\"" . $calendar_script . "?show_event=true&event_date=\" + date_stamp, \"calendar_popup\",\"height=" . $event_popup_height . ",width=".$event_popup_width."\");
      }
        </script>
        <table border=\"" . $table_border . "\" cellpadding=\"" . $table_cellpadding . "\" cellspacing=\"" . $table_cellspacing . "\" style=\"height:" . $table_height . "\" width=\"" . $table_width . "\">
            <tr>
                <td align=\"center\" class=\"cal_head\"><a class=\"cal_head\" href=\"" . $_SERVER['PHP_SELF'] . "?" . $QUERY_STRING . "&amp;date=" .
                $previous_date . "\" title=\"" . $table_caption_prev . "\">&laquo;</a></td>
                <td align=\"center\" class=\"cal_head\" colspan=\"5\">" . $table_caption . "</td>
                <td align=\"center\" class=\"cal_head\"><a class=\"cal_head\" href=\"" . $_SERVER['PHP_SELF'] . "?" . $QUERY_STRING . "&amp;date=" .
                $next_date . "\" title=\"" . $table_caption_foll . "\">&raquo;</a></td>
            </tr>
            <tr>
                <td class=\"cal_days\">".$dayname[0]."</td>
                <td class=\"cal_days\">".$dayname[1]."</td>
                <td class=\"cal_days\">".$dayname[2]."</td>
                <td class=\"cal_days\">".$dayname[3]."</td>
                <td class=\"cal_days\">".$dayname[4]."</td>
                <td class=\"cal_days\">".$dayname[5]."</td>
                <td class=\"cal_days\">".$dayname[6]."</td>
            </tr><tr>
            ";
   
   
   
    for( $i = 0 ; $i < $day_start; $i++ )
    {
        echo "<td class=\"cal_content\">&nbsp;</td>";
    }

   
    $current_position = $day_start;
   
    $total_days_in_month = date("t",$date_string);


  if ($events_from_database)
  {
    $database_connection = mysql_connect ($server, $username, $password);
    mysql_select_db ($database, $database_connection);
    $result = mysql_query("
      SELECT *
      FROM " . $event_table . "
      WHERE
        EventYear = '" . $year . "'
      AND
        EventMonth = '" . $month . "'
    ");
    while ($record = mysql_fetch_assoc($result)){
      $event[$record['EventDay']] = $record;
    }
  }

    for( $i = 1; $i <= $total_days_in_month ; $i++)
    {
        $class = "cal_content";
       
        if( $i == date("j") && $month == date("n") && $year == date("Y") )
            $class = "cal_today";
       
        $current_position++;

 
        $link_start = "";
        $link_end  = "";


 
        if( isset($event[$i]) )
    {
      $link_start = "<a href=\"java script:;\" class=\"cal_event\" onclick=\"java script: open_event('".$year."-".$month."-".$i."');\">";
      $link_end  = "</a>";
      $class      = "cal_event";
    }


    $date_stamp = $year."-".$month."-".sprintf( "%02d",$i);
   
        echo "<td align=\"center\" class=\"" . $class . "\">" . $link_start . $i . $link_end . "</td>";
        if( $current_position == 7 )
        {
            echo "</tr><tr>\n";
            $current_position = 0;
        }
    }


   
    $end_day = 7-$current_position;
   
    for( $i = 0 ; $i < $end_day ; $i++ )
        echo "<td class=\"cal_content\"></td>\n";

   
    echo "</tr></table>"; 
?>

---------------------PHP SLUT

//Carsten
Avatar billede jakobdo Ekspert
12. maj 2010 - 10:25 #1
Prøv at udskriv din sql inden den skydes af mod din database og se om det kan give dig lidt info.
Måske den gør et og du tror den gør noget andet.
Avatar billede sabumnim Novice
12. maj 2010 - 10:47 #2
Hej Jakobdo

Det kan du have ret i var en mulighed, men det jeg ikke forstår er at jeg sagtens kan tilgå det der er puttet i databasen ved at skrive denne url direkte i browseren:
http://graensekvadrillen.dk/calendarscript.php?show_event=true&event_date=2010-12-13

Så dette viser mig at indholdet fint nok kommer ned i min DB, men den bliver bare ikke vist i selve kalenderen for netop december måned, mens alle andre måneder kører fint?

//Carsten
Avatar billede jakobdo Ekspert
12. maj 2010 - 11:22 #3
Hej Carsten, der må jo være en forskel i din kode fra side 1 til side 2.

Men debug er vejen frem, jeg tror ikke nogle her kan fortælle dig fejlen lige netop er i linje XXX.
Avatar billede majbom Novice
12. maj 2010 - 11:30 #4
du kan jo starte med at udskrive dit resultat når du har kørt din query, for at se om der overhovedet er det data med der skal være og om der evt. er nogle uoverensstemmelser mellem data og koden der skal vise de data...
Avatar billede sabumnim Novice
12. maj 2010 - 11:39 #5
Hej begge

Jeg har her lavet et screendump af hvordan det ser ud i backend når der er lagt en kalender begivenhed ind.
Som det ses er der her fint kommet indhold og jeg kan redigere og slette ganske som jeg lyster.
http://graensekvadrillen.dk/screenbackend.jpg

//Carsten
Avatar billede jakobdo Ekspert
12. maj 2010 - 11:41 #6
Carsten: Om din backend virker eller ej, er jeg som sådan ligeglad med. :o) Du har jo tydeligvis en fejl i den kode, som skal vise eventet på din kalender.
Gør evt. som splazz skriver. Du må have overset noget et sted.
Avatar billede sabumnim Novice
12. maj 2010 - 11:46 #7
Hej igen

Jeg tjekker lige op og ser om jeg finder noget :0)

//Carsten
Avatar billede majbom Novice
12. maj 2010 - 11:52 #8
og når det nu virker det ene sted og ikke det andet, tyder det endnu mere på en lille dum fejl :)

og de kan tit være svære at finde...
Avatar billede jakobdo Ekspert
12. maj 2010 - 11:55 #9
Og som splazz netop siger, hvis dit datagrundlag (database/tabel) er som det skal være, så kan vi udelukke fejl i det.
Ergo må fejlen indtræde efter du har lavet din query, så start din debug der.
Udskriv dine data step for step.
Det er desværre måden af fejlsøge på, hvis ikke man har 100% styr på sin kode.
Og det sker jo desværre i ny og næ.
Avatar billede sabumnim Novice
25. maj 2010 - 23:06 #10
Hej folkens

Har nu rodet lidt rundt med ovenstående.

Har fundet ud af den Event som smides ind i min DB og som kommer rigtigt ind f.eks. 12. december 2010 rent faktisk ender med de rigtige dato angivelser og det alt.

Men hvis jeg istedet "bladrer" tilbage i kalenderen finder jeg den pågældende Event her istedet for:
http://graensekvadrillen.dk/index.php?&date=12-2009

Men klikker jeg på datoen den 12. december åbnes et pop-up vindue som skriver det rigtige indhold ud lige bortset fra datoen øverst som skriver 12 december 2010.

Så et eller andet går galt i visningen og jeg kunne godt tænke mig at få noget hjælp fra jer.

//Carsten
Avatar billede sabumnim Novice
02. september 2010 - 19:35 #11
Hej Jakobdo og splazz

Jeg fandt aldrig en gangbar løsning, så jeg lukker og slukker dette spørgsmål.

Vil dog gerne give jer nogle point for jeres indsats, så læg venligst et svar begge, hvis I ønsker point :0)

//Carsten
Avatar billede sabumnim Novice
01. november 2010 - 09:31 #12
Lukker spørgsmålet helt da der efter 2 måneder ikke er kommet nogle svar retur
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester