2016-07-07 14 views
3

Hii ich arbeite an Portal, das Kalender von benutzerdefinierten Daten wie vom 14. Juli bis 14. August erfordert. Ich habe eine Demo gemacht, die ordnungsgemäß beginnt, wenn 14. Juli ab Donnerstag beginnt, aber nicht am Sonntag endet ist am 14 aug. Werfen Sie einen Blick, was ichKalender von benutzerdefiniertem Datum anzeigen

function getCalender($year = '',$month = '') 
{ 
    $startDate = "2016-07-03"; 
    $endDate = "2016-07-31"; 
    $dateYear = ($year != '')?$year:date("Y"); 
    $dateMonth = ($month != '')?$month:date("m"); 
    $date = $dateYear.'-'.$dateMonth.'-01'; 
    $currentMonthFirstDay = date("N",strtotime($date)); 
    $startDateFrom = date("N",strtotime($startDate)); 
    $endDateFrom = date("N",strtotime($endDate)); 
    $timestamp = strtotime($startDate); 
    $dayCount = date("d", $timestamp); 
    $timestamp1 = strtotime($endDate); 
    $dayCountend = date("d", $timestamp1); 

    $totalDaysOfMonth = cal_days_in_month(CAL_GREGORIAN,$dateMonth,$dateYear); 
    $totalDaysOfMonthDisplay = ($currentMonthFirstDay == 7)?($totalDaysOfMonth):($totalDaysOfMonth + $currentMonthFirstDay); 
    //$boxDisplay = ($totalDaysOfMonthDisplay <= 35)?35:42; 
    //$boxDisplay = 29 

?> 


    <div id="calender_section"> 
      <h2> 
       <!--<a href="javascript:void(0);" onclick="getCalendar('calendar_div','<?php echo date("Y",strtotime($date.' - 1 Month')); ?>','<?php echo date("m",strtotime($date.' - 1 Month')); ?>');">&lt;&lt;</a>--> 
       <select name="month_dropdown" class="month_dropdown dropdown"><?php echo getAllMonths($dateMonth); ?></select> 
       <select name="year_dropdown" class="year_dropdown dropdown"><?php echo getYearList($dateYear); ?></select> 
       <!--<a href="javascript:void(0);" onclick="getCalendar('calendar_div','<?php echo date("Y",strtotime($date.' + 1 Month')); ?>','<?php echo date("m",strtotime($date.' + 1 Month')); ?>');">&gt;&gt;</a>--> 
      </h2> 
      <div id="event_list" class="none"></div> 
      <!--For Add Event--> 
      <div id="event_add" class="none"> 
       <p>Add Event on <span id="eventDateView"></span></p> 
       <p><b>Event Title: </b><input type="text" id="eventTitle" value=""/></p> 
       <input type="hidden" id="eventDate" value=""/> 
       <input type="button" id="addEventBtn" value="Add"/> 
      </div> 
      <div id="calender_section_top"> 
       <ul> 
        <li>Mon</li> 
        <li>Tue</li> 
        <li>Wed</li> 
        <li>Thu</li> 
        <li>Fri</li> 
        <li>Sat</li> 
        <li>Sun</li> 
       </ul> 
      </div> 
      <div id="calender_section_bot"> 
       <ul> 
       <?php 

        for($cb=1;$cb<=$dayCountend;$cb++){ 
         //echo $cb; 
         if(($cb >= $startDateFrom) && $cb<=$dayCountend) 
         { 
         /*if(($cb >= $currentMonthFirstDay+1 || $currentMonthFirstDay == 7) && $cb <= ($totalDaysOfMonthDisplay)){*/ 
          //Current date 
          $currentDate = $dateYear.'-'.$dateMonth.'-'.$dayCount; 
          $currentdate = date("D M j",strtotime($currentDate)); 
          $eventNum = 0; 
          //Include db configuration file 
          include 'dbConfig.php'; 
          //Get number of events based on the current date 
          $result = $db->query("SELECT title FROM events WHERE date = '".$currentDate."' AND status = 1"); 
          $eventNum = $result->num_rows; 
          //Define date cell color 
          if(strtotime($currentDate) == strtotime(date("Y-m-d"))){ 
           echo '<li date="'.$currentDate.'" class="grey date_cell">'; 
          }elseif($eventNum > 0){ 
           echo '<li date="'.$currentDate.'" class="light_sky date_cell">'; 
          }else{ 
           echo '<li date="'.$currentDate.'" class="date_cell">'; 
          } 

          //Date cell 
          echo '<span>'; 
          echo $cb; 
          echo '</span>'; 

          //Hover event popup 
          /*echo '<div id="date_popup_'.$currentDate.'" class="date_popup_wrap none">'; 
          echo '<div class="date_window">'; 
          echo '<div class="popup_event">Events ('.$eventNum.')</div>'; 
          echo ($eventNum > 0)?'<a href="javascript:;" onclick="getEvents(\''.$currentDate.'\');">view events</a><br/>':''; 
          //For Add Event 
          echo '<a href="javascript:;" onclick="addEvent(\''.$currentDate.'\');">add event</a>'; 
          echo '</div></div>'; 

          echo '</li>';*/ 
          $dayCount++; 
       ?> 
       <?php }else{ ?> 
        <li><span>&nbsp;</span></li> 
       <?php } } ?> 
       </ul> 
      </div> 
     </div> 


    <?php 
    } 
    ?> 
+0

[email protected] –

Antwort

1

Ich habe versucht, für Ihren Code getan haben und ich fand eine Logik nahm ich anfangen und Enddatum aus dem Benutzer und machte die Anordnung der Daten, die zwischen zwei vorhanden sind. Dann sollte der Kalender von vorne beginnen. 3. Juli 2016 ist der Tag Sonntag für den ich eingefügt habe - bis zum ersten Datum. Schauen Sie unten, was ich

function getCalender($year = '',$month = '',$startDate = '',$endDate = '') 
{ 
$finalArray = array(); 
    $startDate = "2016-07-03"; 
    $endDate = "2016-08-31"; 
    $date1 = createDateRangeArray('2016-07-03 ','2016-08-31'); 

    //$date = $dateYear.'-'.$dateMonth.'-01'; 

    $startDateFrom = date("N",strtotime($startDate)); 
    $endDateFrom = date("N",strtotime($endDate)); 

    //Take the day from the date 
    $timestamp = strtotime($startDate); 
    $dayCount = date("d", $timestamp); 

    //Take the month from the date 
    $timestampend = strtotime($endDate); 
    $dayCountend = date("d", $timestampend); 

    //Take the month from the date 
    $timestampmonth = strtotime($startDate); 
    $monthstart = date("m", $timestampmonth); 

    //Take the month from the date 
    $timestampmonthend = strtotime($endDate); 
    $monthend = date("m", $timestampmonthend); 

    //Take the year from the start date 
    $yearstart = strtotime($startDate); 
    $yearofStart = date("y", $yearstart); 

    //Take the year from the end date 
    $yearend = strtotime($endDate); 
    $yearofEnd = date("y", $yearend); 

    //cal difference between start date and month 
    $differenceStartDate = $dayCount - 1; 

    //cal difference between end date and month 
    $totalDaysOfMonthEnd = cal_days_in_month(CAL_GREGORIAN,$monthend,$yearofEnd); 
    $totalDaysOfMonthStart = cal_days_in_month(CAL_GREGORIAN,$monthstart,$yearofEnd); 

    if($monthstart == $monthend) 
    { 
     echo "Show one month calendar"; 
    } 
    else 
    { 
     $diffmonth = $monthend-$monthstart; 
    } 

    $differenceStartDate = $dayCountend - $totalDaysOfMonth; 


    for($i=1;$i<$startDateFrom;$i++) 
    { 
     $date[] = '-'; 
    } 
    array_push($date,$date1); 

    for($j=0;$j<count($date);$j++) 
    { 
     if(strlen($date[$j])==1) 
     { 
      array_push($finalArray,$date[$j]); 
     } 
     else 
     { 
      for($k=0;$k<count($date[$j]);$k++) 
      { 
       array_push($finalArray,$date[$j][$k]); 
      } 
     } 
    } 
    print_r($finalArray); 



    $timestamp1 = strtotime($endDate); 
    $dayCountend = date("d", $timestamp1); 

    $now = strtotime($startDate); 
    $your_date = strtotime($endDate); 
    $datediff = $your_date - $now; 
    $diff= floor($datediff/(60*60*24)); 

    $totalDaysOfMonth = cal_days_in_month(CAL_GREGORIAN,$dateMonth,$dateYear); 
    $totalDaysOfMonthDisplay = ($currentMonthFirstDay == 7)?($totalDaysOfMonth):($totalDaysOfMonth + $currentMonthFirstDay); 
    //$boxDisplay = ($totalDaysOfMonthDisplay <= 35)?35:42; 
    $boxDisplay = $diff; 

?> 
    <div id="calender_section"> 
     <h2> 
      <!--<a href="javascript:void(0);" onclick="getCalendar('calendar_div','<?php echo date("Y",strtotime($date.' - 1 Month')); ?>','<?php echo date("m",strtotime($date.' - 1 Month')); ?>');">&lt;&lt;</a>--> 
      <!-- <select name="month_dropdown" class="month_dropdown dropdown"><?php echo getAllMonths($dateMonth); ?></select> 
      <select name="year_dropdown" class="year_dropdown dropdown"><?php echo getYearList($dateYear); ?></select>--> 
      <!--<a href="javascript:void(0);" onclick="getCalendar('calendar_div','<?php echo date("Y",strtotime($date.' + 1 Month')); ?>','<?php echo date("m",strtotime($date.' + 1 Month')); ?>');">&gt;&gt;</a>--> 
     </h2> 
     <div id="event_list" class="none"></div> 
     <!--For Add Event--> 
     <div id="event_add" class="none"> 
      <p>Add Event on <span id="eventDateView"></span></p> 
      <p><b>Event Title: </b><input type="text" id="eventTitle" value=""/></p> 
      <input type="hidden" id="eventDate" value=""/> 
      <input type="button" id="addEventBtn" value="Add"/> 
     </div> 
     <div id="calender_section_top"> 
      <ul> 
       <li>Mon</li> 
       <li>Tue</li> 
       <li>Wed</li> 
       <li>Thu</li> 
       <li>Fri</li> 
       <li>Sat</li> 
       <li>Sun</li> 
      </ul> 
     </div> 
     <div id="calender_section_bot"> 
      <ul> 
      <?php 

       for($cb=0;$cb<count($finalArray);$cb++) 
       { 
        //echo $cb; 
        $date = $finalArray[$cb]; 
        $month = strtotime($date); 
        $month = date("m", $month); 


        if(($cb >= $startDateFrom -1)) 
        { 
        /*if(($cb >= $currentMonthFirstDay+1 || $currentMonthFirstDay == 7) && $cb <= ($totalDaysOfMonthDisplay)){*/ 
         //Current date 
         $currentDate = $finalArray[$cb]; 
         //$currentdate = date("D M j",strtotime($currentDate)); 
         $eventNum = 0; 

         //Include db configuration file 
         //Define date cell color 
         if(strtotime($currentDate) == strtotime(date("Y-m-d"))){ 
          echo '<li date="'.$currentDate.'" class="grey date_cell">'; 
          echo '<select name="select"></select> 
           <option value="0"></option>'; 
         }elseif($eventNum > 0){ 
          echo '<li date="'.$currentDate.'" class="light_sky date_cell">'; 
          echo '<select name="select"></select> 
           <option value="0"></option>'; 
         }else{ 
          echo '<li date="'.$currentDate.'" class="date_cell">'; 
          echo '<select name="select"></select> 
           <option value="0"></option>'; 
         } 

         //Date cell 
         echo '<span>'; 
         echo $currentDate; 
         echo '</span>'; 
         $dayCount++; 
      ?> 
      <?php }else{ ?> 
       <li><span>&nbsp;</span></li> 
      <?php } } ?> 
      </ul> 
     </div> 
    </div> 
<?php 
} 
function createDateRangeArray($strDateFrom,$strDateTo) 
{ 
    // takes two dates formatted as YYYY-MM-DD and creates an 
    // inclusive array of the dates between the from and to dates. 

    // could test validity of dates here but I'm already doing 
    // that in the main script 

    $aryRange=array(); 

    $iDateFrom=mktime(1,0,0,substr($strDateFrom,5,2),  substr($strDateFrom,8,2),substr($strDateFrom,0,4)); 
    $iDateTo=mktime(1,0,0,substr($strDateTo,5,2),  substr($strDateTo,8,2),substr($strDateTo,0,4)); 

    if ($iDateTo>=$iDateFrom) 
    { 
     array_push($aryRange,date('Y-m-d',$iDateFrom)); // first entry 
     while ($iDateFrom<$iDateTo) 
     { 
      $iDateFrom+=86400; // add 24 hours 
      array_push($aryRange,date('Y-m-d',$iDateFrom)); 
     } 
    } 
    return $aryRange; 
} 

?> 

Werfen Sie einen Blick auf einen Code getan haben, und Sie werden verstehen, dass leicht

+0

Vielen Dank es funktioniert –

1

Die Antwort von @BeDeveloper gegeben ist fine.I gemacht etwas wie, unter dem automatisch alle anderen Termine deaktivieren 3 für ex.if Datum wird es deaktivieren 1 und 2

<style> 
    /* calendar */ 
    h1 { font-family: calibri; font-size: 20px; color: #6d6d6d} 
table.calendar  { border-left:1px solid #999; } 
tr.calendar-row { } 
td.calendar-day { min-height:80px; font-size:11px; position:relative; } * html div.calendar-day { height:80px; } 
td.calendar-day:hover { background:#eceff5; } 
td.calendar-day-np { background:#eee; min-height:80px; } * html div.calendar-day-np { height:80px; } 
td.calendar-day-head { background:#ccc; font-weight:bold; text-align:center; width:120px; padding:5px; border-bottom:1px solid #999; border-top:1px solid #999; border-right:1px solid #999; } 
div.day-number  { background:#999; padding:5px; color:#fff; font-weight:bold; float:right; margin:-5px -5px 0 0; width:20px; text-align:center; } 
/* shared */ 
td.calendar-day, td.calendar-day-np { width:120px; padding:5px; border-bottom:1px solid #999; border-right:1px solid #999; } 
</style> 

<?php 
/* draws a calendar */ 
function draw_calendar($month,$year,$startDate,$endDate){ 

     $startDate = date('Y-m-d',$startDate); 
     $endDate = date('Y-m-d',$endDate); 

     $timestamp = strtotime($startDate); 
     $dayCountstart = date("d", $timestamp); 

     $timestamp = strtotime($endDate); 
     $dayCountend = date("d", $timestamp); 

     $timestampmonth = strtotime($startDate); 
     $monthstart = date("m", $timestampmonth); 

     $timestampmonthend = strtotime($endDate); 
     $monthend = date("m", $timestampmonthend); 

     $yearend = strtotime($endDate); 
     $yearofEnd = date("y", $yearend); 

     $dayMinus = $dayCountstart - 01; 
     $totalDaysOfMonthEnd = cal_days_in_month(CAL_GREGORIAN,$monthend,$yearofEnd); 
     $dayEndMinus = $totalDaysOfMonthEnd - $dayCountend; 

    /* draw table */ 
    $calendar = '<table cellpadding="0" cellspacing="0" class="calendar">'; 

    /* table headings */ 
    $headings = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); 
    $calendar.= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">',$headings).'</td></tr>'; 

    /* days and weeks vars now ... */ 
    $running_day = date('w',mktime(0,0,0,$month,1,$year)); 
    $days_in_month = date('t',mktime(0,0,0,$month,1,$year)); 
    $days_in_this_week = 1; 
    $day_counter = 0; 
    $dates_array = array(); 

    /* row for week one */ 
    $calendar.= '<tr class="calendar-row">'; 

    /* print "blank" days until the first of the current week */ 
    for($x = 0; $x < $running_day; $x++): 
     $calendar.= '<td class="calendar-day-np"> </td>'; 
     $days_in_this_week++; 
    endfor; 

    /* keep going with days.... */ 
    for($list_day = 1; $list_day <= $days_in_month; $list_day++): 
     $calendar.= '<td class="calendar-day">'; 
      /* add in the day number */ 
      if($monthstart == $month) 
      { 
       if($list_day <= $dayMinus) 
       { 
        $calendar.= '<div class="day-number123">'.$list_day.'</div>'; 
       } 
       else 
       { 
        $calendar.= '<div class="day-number">'.$list_day.'</div>'; 
       } 
      } 
      else 
      { 
       if($monthend == $month) 
       { 
        if($list_day <= $dayCountend) 
        { 
         $calendar.= '<div class="day-number">'.$list_day.'</div>'; 
        } 
        else 
        { 
         $calendar.= '<div class="day-number123">'.$list_day.'</div>'; 
        } 
       } 
       else 
       { 
        $calendar.= '<div class="day-number">'.$list_day.'</div>'; 
       } 
      } 

      /** QUERY THE DATABASE FOR AN ENTRY FOR THIS DAY !! IF MATCHES FOUND, PRINT THEM !! **/ 
      $calendar.= str_repeat('<p> </p>',2); 

     $calendar.= '</td>'; 
     if($running_day == 6): 
      $calendar.= '</tr>'; 
      if(($day_counter+1) != $days_in_month): 
       $calendar.= '<tr class="calendar-row">'; 
      endif; 
      $running_day = -1; 
      $days_in_this_week = 0; 
     endif; 
     $days_in_this_week++; $running_day++; $day_counter++; 
    endfor; 

    /* finish the rest of the days in the week */ 
    /* if($days_in_this_week < 8): 
     for($x = 1; $x <= (8 - $days_in_this_week); $x++): 
      $calendar.= '<td class="calendar-day-np"> </td>'; 
     endfor; 
    endif;*/ 

    /* final row */ 
    $calendar.= '</tr>'; 

    /* end the table */ 
    $calendar.= '</table>'; 

    /* all done, return result */ 
    return $calendar; 
} 

/* sample usages */ 
/*echo '<h2>July 2009</h2>'; 
echo draw_calendar(7,2009); 

echo '<h2>August 2009</h2>'; 
echo draw_calendar(8,2009); 
*/ 
$start = $startDate= $month = strtotime('2016-02-02'); 
$end = $endDate = strtotime('2016-03-03'); 

while($month < $end) 
{ 
    //$a = date('m Y', $month), PHP_EOL; 
    $startDate = $start; 
    $endDate = $end; 


    $newMonthInRange = date('m', $month); 
    $newYearInRange = date('Y', $month); 

    $newMonthInRangeTitle = date('F Y', $month);  
    $month = strtotime("+1 month", $month); 

    echo "<h1>".$newMonthInRangeTitle."</h1>"; 
    echo draw_calendar($newMonthInRange,$newYearInRange,$startDate,$endDate); 
} 
?>