Функция Php возвращает пустой класс css

#php

#php

Вопрос:

У меня проблема в моем коде. В функции _showDay я хочу проверить, есть ли текущая дата в моей базе данных, но когда я пытаюсь сравнить данные из базы данных с $currentDate, она возвращает пустое поле в классе css.

Сначала я попытался сравнить случайную дату, но это не сработало:

 class="'.($this->currentDate=="2013-12-01"?' Exists ':($this->currentDate=="2013-12-02"?' Exists ':' ')).'"
 

php-файл:

 <?php
    class Calendar {  
         
            /**
             * Constructor
             */
            public function __construct(){     
                $this->naviHref = htmlentities($_SERVER['PHP_SELF']);
            }
             
            /********************* PROPERTY ********************/  
            private $dayLabels = array("Pn","Wt","Śr","Czw","Pt","Sb","Nd");
             
            private $currentYear=0;
             
            private $currentMonth=0;
             
            private $currentDay=0;
             
            private $currentDate=null;
             
            private $daysInMonth=0;
             
            private $naviHref= null;
             
            /********************* PUBLIC **********************/  
                
            /**
            * print out the calendar
            */
            public function show() {
                $year  = null;
                 
                $month = null;
                 
                if(null==$yearamp;amp;isset($_GET['year'])){
         
                    $year = $_GET['year'];
                 
                }else if(null==$year){
         
                    $year = date("Y",time());  
                 
                }          
                 
                if(null==$monthamp;amp;isset($_GET['month'])){
         
                    $month = $_GET['month'];
                 
                }else if(null==$month){
         
                    $month = date("m",time());
                 
                }                  
                 
                $this->currentYear=$year;
                 
                $this->currentMonth=$month;
                 
                $this->daysInMonth=$this->_daysInMonth($month,$year);  
                 
                $content='<div id="calendar">'.
                                '<div class="box">'.
                                $this->_createNavi().
                                '</div>'.
                                '<div class="box-content">'.
                                        '<ul class="label">'.$this->_createLabels().'</ul>';   
                                        $content.='<div class="clear"></div>';     
                                        $content.='<ul class="dates">';    
                                         
                                        $weeksInMonth = $this->_weeksInMonth($month,$year);
                                        // Create weeks in a month
                                        for( $i=0; $i<$weeksInMonth; $i   ){
                                             
                                            //Create days in a week
                                            for($j=1;$j<=7;$j  ){
                                                $content.=$this->_showDay($i*7 $j);
                                                
                                            }
                                        }
                                         
                                        $content.='</ul>';
                                         
                                        $content.='<div class="clear"></div>';     
                     
                                $content.='</div>';
                         
                $content.='</div>';
                return $content;   
            }
             
            /********************* PRIVATE **********************/ 
            /**
            * create the li element for ul
            */
            private function _showDay($cellNumber){
                 
                $reserved="";
        
        
                if($this->currentDay==0){
                     
                    $firstDayOfTheWeek = date('N',strtotime($this->currentYear.'-'.$this->currentMonth.'-01'));
                             
                    if(intval($cellNumber) == intval($firstDayOfTheWeek)){
                         
                        $this->currentDay=1;
                         
                    }
                }
                 
                if( ($this->currentDay!=0)amp;amp;($this->currentDay<=$this->daysInMonth) ){
                     
                    $this->currentDate = date('Y-m-d',strtotime($this->currentYear.'-'.$this->currentMonth.'-'.($this->currentDay)));
                     
                    $cellContent = $this->currentDay;
                     
                    $this->currentDay  ;   
                     
                }else{
                     
                    $this->currentDate =null;
         
                    $cellContent=null;
                }
                
                
                     
                 
                return '<li  class="l'.$cellNumber.'" id="d-'.$this->currentDate.'" class="'.($cellNumber%7==1?' start ':($cellNumber%7==0?' end ':' ')).
                        ($cellContent==null?'mask':'').'">'.$cellContent.'</li>';
            }
             
            /**
            * create navigation
            */
            private function _createNavi(){
                 
                $nextMonth = $this->currentMonth==12?1:intval($this->currentMonth) 1;
                 
                $nextYear = $this->currentMonth==12?intval($this->currentYear) 1:$this->currentYear;
                 
                $preMonth = $this->currentMonth==1?12:intval($this->currentMonth)-1;
                 
                $preYear = $this->currentMonth==1?intval($this->currentYear)-1:$this->currentYear;
                 
                return
                    '<div class="header">'.
                        '<a class="prev" href="'.$this->naviHref.'?month='.sprintf('d',$preMonth).'amp;year='.$preYear.'">Poprzedni</a>'.
                            '<span class="title">'.date('Y M',strtotime($this->currentYear.'-'.$this->currentMonth.'-1')).'</span>'.
                        '<a class="next" href="'.$this->naviHref.'?month='.sprintf("d", $nextMonth).'amp;year='.$nextYear.'">Następny</a>'.
                    '</div>';
            }
                 
            /**
            * create calendar week labels
            */
            private function _createLabels(){  
                         
                $content='';
                 
                foreach($this->dayLabels as $index=>$label){
                     
                    $content.='<li class="'.($label==6?'end title':'start title').' title">'.$label.'</li>';
         
                }
                 
                return $content;
            }
             
             
             
            /**
            * calculate number of weeks in a particular month
            */
            private function _weeksInMonth($month=null,$year=null){
                 
                if( null==($year) ) {
                    $year =  date("Y",time()); 
                }
                 
                if(null==($month)) {
                    $month = date("m",time());
                }
                 
                // find number of days in this month
                $daysInMonths = $this->_daysInMonth($month,$year);
                 
                $numOfweeks = ($daysInMonths%7==0?0:1)   intval($daysInMonths/7);
                 
                $monthEndingDay= date('N',strtotime($year.'-'.$month.'-'.$daysInMonths));
                 
                $monthStartDay = date('N',strtotime($year.'-'.$month.'-01'));
                 
                if($monthEndingDay<$monthStartDay){
                     
                    $numOfweeks  ;
                 
                }
                 
                return $numOfweeks;
            }
         
            /**
            * calculate number of days in a particular month
            */
            private function _daysInMonth($month=null,$year=null){
                 
                if(null==($year))
                    $year =  date("Y",time()); 
         
                if(null==($month))
                    $month = date("m",time());
                     
                return date('t',strtotime($year.'-'.$month.'-01'));
            }
        }
 

Комментарии:

1. class="'.($this->currentDate=="2013-12-01"?' E...... — это неэкранированные двойные кавычки.

2. если я удалю двойные кавычки, тот же результат

Ответ №1:

Ваш код дважды добавляет атрибут class к элементу здесь:

 return '<li  class="l' . $cellNumber . '" id="d-' . $this->currentDate . '" class="' . ($cellNumber % 7 == 1 ? ' start ' : ($cellNumber % 7 == 0 ? ' end ' : ' ')) .
            ($cellContent == null ? 'mask' : '') . '">' . $cellContent . '</li>';
 

Убедитесь, что все классы добавлены только в один атрибут класса, например:

 return '<li id="d-' . $this->currentDate . '" class="l' . $cellNumber . ' ' . ($cellNumber % 7 == 1 ? ' start ' : ($cellNumber % 7 == 0 ? ' end ' : ' ')) .
            ($cellContent == null ? 'mask' : '') . '">' . $cellContent . '</li>';
 

Комментарии:

1. Хорошо, но это все еще не отвечает на мой вопрос, но спасибо.