javascript - How to Increasing/Decreasing PHP variable value and reload function via ajax -



javascript - How to Increasing/Decreasing PHP variable value and reload function via ajax -

i have function specifies date depending on variable

ex. $modification = "+1 week"

function calendar($modification){ $month = array("januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"); $date = new datetime(date('y-m-d')); $date->modify($modification); $year = $date->format('o'); $week = $date->format('w'); $fulldate = $date->format('c'); $valenc = 'w'; $monthnum = $date->format('n'); $moddate = date('y-m-d',strtotime($fulldate)); $mmon = date('n', mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week")), date("y") )); $mtue = date('n', mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+1, date("y") )); $mwed = date('n', mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+2, date("y") )); $mthu = date('n', mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+3, date("y") )); $mfri = date('n', mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+4, date("y") )); $msat = date('n', mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+5, date("y") )); $msun = date('n', mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+6, date("y") )); $daymonth = compact("mmon","mtue","mwed","mthu","mfri","msat","msun"); $mon = date('j',mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week")), date("y"))); $tue = date('j',mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+1, date("y"))); $wed = date('j',mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+2, date("y"))); $thu = date('j',mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+3, date("y"))); $fri = date('j',mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+4, date("y"))); $sat = date('j',mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+5, date("y"))); $sun = date('j',mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+6, date("y"))); $days = compact("mon","tue","wed","thu","fri","sat","sun"); $weeknum = date("w", strtotime("$year$valenc$week")); $mname = $month[($monthnum)-1]; $yearnum= $date->format('y'); $calendar= compact("daymonth", "days", "weeknum", "mname", "yearnum"); // $calendar['array'][value] / $calendar[value] //print_r($calendar); homecoming $calendar; }

how can specify $modification buttons on page , reload function?

ex. button increment = +1 week , button decrease = -1 week.

edit: solved

php:

$dmod = $_get['mod']; $mod = $dmod; if ($dmod >= 0) { $mod = '+'.$dmod.''; } $modification = "".$mod." week"; date_default_timezone_set ("/*timezone*/"); function calendar($modification){ $todayweek = date('w', mktime(0, 0, 0, date('m'), date("d"), date("y") )); $today = date('d'); $month = array("januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"); $date = new datetime(date('y-m-d')); $date->modify($modification); $year = $date->format('o'); $week = $date->format('w'); if ($todayweek==$week && $today=='fri'){ $date->modify($modification); $year = $date->format('o'); $week = $date->format('w'); } $fulldate = $date->format('c'); $valenc = 'w'; $monthnum = $date->format('n'); $moddate = date('y-m-d',strtotime($fulldate)); $fmon = mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week")), date("y") ); $ftue = mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+1, date("y") ); $fwed = mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+2, date("y") ); $fthu = mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+3, date("y") ); $ffri = mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+4, date("y") ); $fsat = mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+5, date("y") ); $fsun = mktime(0, 0, 0, date('m', strtotime("$moddate")), date("d", strtotime("$year$valenc$week"))+6, date("y") ); $fulldate = compact("fmon","ftue","fwed","fthu","ffri","fsat","fsun"); $mmon = date('n', $fmon); $mtue = date('n', $ftue); $mwed = date('n', $fwed); $mthu = date('n', $fthu); $mfri = date('n', $ffri); $msat = date('n', $fsat); $msun = date('n', $fsun); $daymonth = compact("mmon","mtue","mwed","mthu","mfri","msat","msun"); $mon = date('j', $fmon); $tue = date('j', $ftue); $wed = date('j', $fwed); $thu = date('j', $fthu); $fri = date('j', $ffri); $sat = date('j', $fsat); $sun = date('j', $fsun); $days = compact("mon","tue","wed","thu","fri","sat","sun"); $weeknum = date("w", strtotime("$year$valenc$week")); $mname = $month[($monthnum)-1]; $yearnum= $date->format('y'); $calendar= compact("fulldate", "daymonth", "days", "weeknum", "mname", "yearnum"); // $calendar['array'][value] / $calendar[value] homecoming $calendar; } ?>

js:

$( document ).ready(function() { var $input = $('#calmod'); var calcheckweek = function() { var thedate = new date(); if(thedate.getday() >= 5){ //if friday, switch next week if ($calmod == 0);{ $input.val(1); }; }; }; calcheckweek(); var $calmod = $input.val(); $('.load-div').load('/inc/calendar.php?mod=' + $calmod, function () { if ($calmod <= 0) { $('.calendar-prev-week').hide(); } else { $('.calendar-prev-week').show(); } console.log("calendar loaded successfully!"); }); $('.calendar-prev-week').click(function () { var $input = $('#calmod'); var value = parseint($input.val()); value = value - 1; $input.val(value); var $calmod = $input.val(); if ($calmod <= 0) { $('.calendar-prev-week').hide(); } else { $('.calendar-prev-week').show(); } $('.load-div').load('/inc/calendar.php?mod=' + $calmod, function () { console.log("decreased week number"); }); }); $('.calendar-next-week').click(function () { var $input = $('#calmod'); var value = parseint($input.val()); value = value + 1; $input.val(value); var $calmod = $input.val(); if ($calmod <= 0) { $('.calendar-prev-week').hide(); } else { $('.calendar-prev-week').show(); } $('.load-div').load('/inc/calendar.php?mod=' + $calmod, function () { console.log("increased week number"); }); });

i created 2 buttons increment & decrease week, made hidden input '#calmod', since whole page not refreshed (i load calendar in specific div '.load-div') value not reset every time press button increment or decrease week , since want show weekdays added check see if fri more more (if(thedate.getday() >= 5), if alter next week when first loaded, still able go 1 week (to current week) not farther back.

now "week" calendar works intended.

next step select days , store them in json.. help , ideas!

using html button element phone call php function without page reload:

calendar.html

<div id="buttons_week"> <button>+1 week</button> <button>-1 week</button> </div> <div id="calendar"></div> <script> // display target var calendar = document.getelementbyid('calendar'); // buttons , loop array.prototype.foreach.call(document.queryselectorall('#buttons_week button'), function (elem) { // add together function click event elem.addeventlistener('click', function (evt) { // set xhr object if ( window.xmlhttprequest ) { xmlhttp=new xmlhttprequest() // ie7+, firefox, chrome, opera, safari } else { // ie6, ie5 xmlhttp=new activexobject("microsoft.xmlhttp"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readystate==4 && xmlhttp.status==200) { // here's handle response php script // debugging //calendar.innerhtml = xmlhttp.responsetext //console.log(json.parse(xmlhttp.responsetext)) // parse json string server , update calendar var calendar_obj = json.parse(xmlhttp.responsetext) calendar.innerhtml = calendar_obj.weeknum + '/' + calendar_obj.mname + '/' + calendar_obj.yearnum } } xmlhttp.open("get","calendar.php?mod="+encodeuricomponent(evt.target.innerhtml),true); xmlhttp.send(); }) }) </script>

calendar.php

<?php echo json_encode(calendar($_get['mod'])); function calendar($modification){ // function body here, removed brevity } ?>

if don't need go server else, here's javascript version. no need phone call server!

jsfiddle

<div id="buttons_week"> <button>+1 week</button> <button>-1 week</button> </div> <div id="calendar"></div> <script> var calendar = document.getelementbyid('calendar'); array.prototype.foreach.call(document.queryselectorall('#buttons_week button'), function (elem) { elem.addeventlistener('click', function (evt) { var calendar_obj = week_increment(evt.target.innerhtml) console.log(calendar_obj.days) console.log(calendar_obj.daymonth) calendar.innerhtml = calendar_obj.weeknum + '/' + calendar_obj.mname + '/' + calendar_obj.yearnum }) }) function week_increment(mod) { var dd = new date() var week_inc = 7 * 24 * 60 * 60 * 1000 if ( 0 === mod.indexof('-') ) { week_inc *= -1 } // decrement week dd = new date(dd.gettime() + week_inc) dd.sethours(0,0,0); var daymonth = [], days = [], weeknum dd.sethours(-24 * ((dd.getday() || 7) - 1)) ( ii = 0; ii < 7; dd.sethours(24), ii++ ) { days.push(dd.getdate()) daymonth.push(dd.getmonth()+1) if ( 3 === ii ) { // weeknum on th ?? weeknum = math.ceil((((dd-new date(dd.getfullyear(),0,1))/8.64e7)+1)/7) // http://stackoverflow.com/a/18005464/2743458 } } homecoming { 'daymonth': daymonth, 'days': days, 'weeknum': weeknum, 'mname': months[dd.getmonth()], 'yearnum': dd.getfullyear() } } var months = ['januari','februari','mars','april','maj','juni','juli','augusti','september','oktober','november','december']; </script>

javascript php jquery ajax

Comments

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -