JadWS Posted March 7, 2017 Share Posted March 7, 2017 Hey there, I have been looking around on stackoverflow and on google for a solution to my problem but always ran to one of the two problems, it's either not what I request or I could not apply it to my code. So long story short I have a web app that contains a calendar ( php calendar ) and I wish that once the admin hover over a certain number ( referring to a day of a month ) i'd fetch all transaction info from my db related to that date but if the user ( rank = 0 ) hover over a date he only fetches his own info from the db and then echo them as "title" attribute. In my limited knowledge of dynamic websites and ajax I can not figure out how to connect both the calendar date after fetching the hovered number and the info related to that date from my db. Hope it was clear enough and I'll provide you with all the code and db structure needed and hope you can help me through. Transactions.php <! Calender to be added > <div class = "form-container"> <div class = "form-group"> <?php require 'calendar.php'; $calendar = new Calendar(); echo $calendar->show(); ?> </div> </div> <! Calender end > calendar.php : <?php class Calendar { /* Constructor */ public function __construct(){ $this->naviHref = htmlentities($_SERVER['PHP_SELF']); } /********************* PROPERTY ********************/ private $dayLabels = array("Mon","Tue","Wed","Thu","Fri","Sat","Sun"); 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 ($year == null && isset($_GET['year'])) { $year = $_GET['year']; } else if($year == null) { $year = date("Y",time()); } if ($month == null && isset($_GET['month'])) { $month = $_GET['month']; } else if($month == null) { $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" title = "'.$this->_daysInMonth($month,$year).'">'. '<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){ 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)&&($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 id="li-'.$this->currentDate.'" class="'.($cellNumber%7==1?' start ':($cellNumber%7==0?' end ':' ')). ($cellContent==null?'mask':'').'" onmousemove="printDate(this)">'.$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('%02d',$preMonth).'&year='.$preYear.'">Prev</a>'. '<span class="title">'.date('Y M',strtotime($this->currentYear.'-'.$this->currentMonth.'-1')).'</span>'. '<a class="next" href="'.$this->naviHref.'?month='.sprintf("%02d", $nextMonth).'&year='.$nextYear.'">Next</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')); } } db structure : ( table : transactions ) |------------------------------------------------ |Column |Type |Null| Default |------------------------------------------------- |//**ID**// |int(11) |No | |ProductName |varchar(250) |No | |Price |decimal(10,0) |No | |Currency |varchar(250) |No | |UserID |int(11) |No | |DateBought |date |No | |DateBoughtDetailed |time |No | |MoneyHanded |decimal(10,0) |No | |MoneyReceived |decimal(10,0) |No | |Pending |int(11) |No | example data : |---------------------------------------------------------------------------------------------------- |ID|ProductName|Price|Currency|UserID|DateBought|DateBoughtDetailed|MoneyHanded|MoneyReceived|Pending |---------------------------------------------------------------------------------------------------- |1 |Labneh |5000 |LBP |1 |2017-02-27|18:27:54 |5000 |0 |0 |2 |Labneh |5000 |LBP |1 |2017-02-27|18:30:09 |5000 |0 |0 |3 |Laban |5000 |LBP |1 |2017-03-06|15:35:31 |150000 |145000 |0 |4 |Laban |5000 |LBP |1 |2017-03-06|15:36:00 |150000 |145000 |0 Quote Link to comment Share on other sites More sharing options...
taquitosensei Posted March 7, 2017 Share Posted March 7, 2017 (edited) You can always pull the info with the calendar and put it in the title attribute of the element. Instead of trying to fetch when they hover. Or am I misunderstanding what you're trying to do? Edited March 7, 2017 by cyberRobot Removed lengthy quote Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.