Avatar billede expnet Seniormester
30. august 2007 - 06:02 Der er 3 kommentarer og
1 løsning

Kalender script med limit antal dage

hej exp'er

jeg sidder og prøver at finde ud af at for lavet "limit days" på så man kun skal kigge på 10 fra den day vi og 10 dage frem

eks vi har den 30 aug 2007 så skulle "limit days" gøre sådan her

så skulle den gerne lave disse dato'er til et link
30 aug
31 aug
01 sep
02 sep
03 sep
04 sep
05 sep
06 sep
07 sep
08 sep

den skal så kunne finde ud af den når det ikke er den 30 mere men den 31 så skal den jo går frem til den 9 sep


og o.s.v


håber i forstår hvad det er jeg vil lave

------------------ kode start -------------------------
<?
/*----------------------------------------------------------------------------*
  * Class Constructor        : xCalendar(bool $sundayFirst = false)            *
  *                                                                            *
  * Class Public Functions  : setDayNames(string array $dayNames)            *
  *                            setMonthNames(string array $monthNames)        *
  *                            getMonthTable(integer $month    = null,        *
  *                                          integer $year      = null,        *
  *                                          string  $id_string = "calendar")  *
  *----------------------------------------------------------------------------*/
  class xCalendar
  {
    var $startSunday;
    var $DAY_NAMES;
    var $MONTH_NAMES;
    var $limitday = 10;
    var $ViewMonthLink = "Y"; // Write Y for yes order N = no
  /*----------------------------------------------------------------------------*
    * Description : Class constructor.                                          *
    * Parameters  : bool $sundayFirst = Week starts from sunday (not monday)?    *
    * Return      :                                                              *
    *----------------------------------------------------------------------------*/
    function xCalendar($sundayFirst = false){             
      $this->startSunday  = $sundayFirst;
         
      if ($this->startSunday)
        $this->DAY_NAMES    = array("Sunday",  "Monday", "Tuesday", "Wednesday", "Thurday", "Friday", "Saturday");
      else
        $this->DAY_NAMES    = array("Monday", "Tuesday", "Wednesday", "Thursday",
                                    "Friday", "Saturday", "Sunday");
   
      $this->MONTH_NAMES  = array("Non-Visible", "January", "February", "March",
                                                  "April",  "May",      "June",
                                                  "July",    "August",  "September",
                                                  "October", "November", "December");
    }

  /*----------------------------------------------------------------------------*
    * Description : Set names of days.                                          *
    * Parameters  : string array $dayNames = array with 7 name for days.        *
    * Return      : Returns TRUE on success, FALSE on failure.                  *
    *----------------------------------------------------------------------------*/
    function setDayNames($dayNames)
    {
      if (is_array($dayNames))
      {
        if (count($dayNames) == 7)
        {
          $this->DAY_NAMES = $dayNames;
       
          return true;
        }
      }
   
      return false;
    }

  /*----------------------------------------------------------------------------*
    * Description : Set names of months.                                        *
    * Parameters  : string array $monthNames = array with 12 name for months.    *
    * Return      : Returns TRUE on success, FALSE on failure.                  *
    *----------------------------------------------------------------------------*/
    function setMonthNames($monthNames)
    {
      if (is_array($monthNames))
      {
        if (count($monthNames)== 12)
        {
          for ($i = 0; $i < 12; $i++)
          {
            $this->MONTH_NAMES[$i + 1] = $monthNames[$i];               
          }
     
        return true;
        }
      }
 
      return false;
    }

  /*----------------------------------------------------------------------------*
    * Description : Return month information in HTML-table.                      *
    * Parameters  : integer $month    = month to view.                          *
    *              integer $year      = year to view.                          *
    *              string  $id_string = table ID for using right styles.        *
    * Return      : Returns month information in HTML-table, FALSE on failure.  *
    *----------------------------------------------------------------------------*/
    function getMonthTable($month = null, $year = null, $id_string = "calendar")
    {
      // If both parameters has not been specified, display current month
      if ((is_null($month)) || (is_null($year)))
      {
        $month = date('n');
        $year  = date('Y');
      }
                           
      // what is first day of month (0 = Sunday, 6 = Saturday)?
      $firstDay = date('w', mktime(0, 0, 0, $month, 1, $year)); 

      // If week starts from monday, we have to degree one for right calculations.
      if (!$this->startSunday)
      {
        $firstDay = $firstDay - 1;
   
        if ($firstDay < 0)
          $firstDay = 6;
      }
       
      // Calculate how many days and rows are in this month's calendar.
      $calendarDays = date('t', mktime(0, 0, 0, $month, 1, $year));
      $calendarRows = (int) ceil(($calendarDays + $firstDay) / 7); 
                       
      // Is current day in this month?
      $today = 0;
     
      if (($month == date('n')) && ($year == date('Y')))
        $today = date('d');
                   
      // Create HTML-table from calendar informations.
      $content     = '<table id="'.$id_string.'" width="360" align="center" width="100%" cellspacing="0" cellpadding="0" border="0">'."\n";
      $content .= '<tr>'."\n";

if($month < "12"){
$nextmonth = '?M='.($month+1).'&Y='.$year;
}else{
$nextmonth = '?M=1&Y='.($year+1);
}
if($month > "1"){
$backmonth = '?M='.($month-1).'&Y='.$year;
}else{
$backmonth = '?M=12&Y='.($year-1);
}

if($this->ViewMonthLink == "Y"){

      $content .= '<td id="menu" width="15"><a title="Tilbage til '.$this->MONTH_NAMES[$month-1].'" href="'.$backmonth.'"><span class="pil">«</span></a></td>'."\n";
      $content .= '<td id="menu" class="title">'.$this->MONTH_NAMES[$month].' - '.$year.'</td>'."\n";
      $content .= '<td id="menu" width="15"><a title="Frem til '.$this->MONTH_NAMES[$month+1].'" href="'.$nextmonth.'"><span class="pil">»</span></a></td>';

}else{

      $content .= '<td id="menu" colspan="7" class="title">'.$this->MONTH_NAMES[$month].' - '.$year.'</td>'."\n";
}


      $content .= '</tr>'."\n";
      $content .= '</table>'."\n";
     
      $content .= '<table align="center" id="'.$id_string.'" width="360" cellspacing="0" cellpadding="4" border="1" bordercolor="#2D2D2D" bordercolordark="#2D2D2D" bordercolorlight="#2D2D2D" style="border-collapse:collapse;">'."\n";
      $content .= '<tr>'."\n";
 
      foreach ($this->DAY_NAMES as $dayName)
      {
        $content .= "<td class=\"nameday\">".ucfirst($dayName)."</td>\n";
      }
             
      for ($day = 0; $day < ($calendarRows * 7); $day++)
      {
        if (($day % 7) == 0)
          $content .= "</tr>\n<tr>\n";
                             
        if (($day < $firstDay) || ($day > ($calendarDays + $firstDay - 1)))
        {
          $content .= "<td>&nbsp;</td>\n";
        }
        else
        {

if($_GET[Y] == ""){
    $y_y = date('Y');
}else{
    $y_y = $_GET[Y];
}

if($_GET[M] == ""){
    $m_m = date('n');
}else{
    $m_m = $_GET[M];
}
                    if ($today == (1 + $day - $firstDay)){
                        $content .= '<td class="today"><a href="?M='.$m_m.'&Y='.$y_y.'&D='.(1 + $day - $firstDay).'">'.(1 + $day - $firstDay).'</a></td>'."\n";
                    }elseif($day <= $today){
                        $content .= '<td style="color:#2d2d2d;">'.(1 + $day - $firstDay).'</td>'."\n";
                    }else{
                   
                    if($this->limitday == "0"){
                        $content .= '<td style="color:#FFFFFF;"><a href="?M='.$m_m.'&Y='.$y_y.'&D='.(1 + $day - $firstDay).'">'.(1 + $day - $firstDay).'</a></td>'."\n";
                    }elseif($this->startlimitday > $this->limitday){
                        $content .= '<td style="color:#2d2d2d;">'.(1 + $day - $firstDay).'</td>'."\n";
                    }elseif($_GET[D] == (1 + $day - $firstDay)){
                        $content .= '<td style="border:1px solid #88DCFF;"><a href="?M='.$m_m.'&Y='.$y_y.'&D='.(1 + $day - $firstDay).'">'.(1 + $day - $firstDay).'</a></td>'."\n";
                    }else{
                        $content .= '<td style="color:#FFFFFF;"><a href="?M='.$m_m.'&Y='.$y_y.'&D='.(1 + $day - $firstDay).'">'.(1 + $day - $firstDay).'</a></td>'."\n";
                    }
                        $this->startlimitday = $this->startlimitday + 1;               
                    }

        }

      }
         
      $content .= "</tr>\n";
      $content .= "</table>\n";
         
      return $content;
    }
  }
?>
------------------ kode slut -------------------------
Avatar billede jakobdo Ekspert
30. august 2007 - 07:54 #1
Noget i denne stil:

<?php
//http://www.eksperten.dk/spm/794035

for($i = -10; $i <= 10; $i++)
{
    echo date('Y-m-d',strtotime((($i > 0)?'+':'') . $i . ' day')), "<br />\r\n";
}
?>
Avatar billede expnet Seniormester
30. august 2007 - 16:45 #2
jakobdo -> er ikke helet med hvor du vil havde det ind henne
Avatar billede jakobdo Ekspert
30. august 2007 - 17:34 #3
Det var nu også mest for at vise hvordan det kunne laves.
Hvor du skal bruge det i din kode, er vel der hvor du ønsker limit days skal virke. :o)
Avatar billede expnet Seniormester
02. september 2007 - 20:16 #4
lukker uden brugbar script
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