dantoni Posted February 13, 2013 Share Posted February 13, 2013 Hi All, I've built agenda calendar. What I want to ask is when there are 2 different user (user A and B ) access the same month at same year, and after that one of the user (user A) input agenda, other user ( user B ) must manually refresh the calendar to be able to see the agenda that had been inserted. Is it possible to refresh automatically after the agenda inserted ? Here's the code <?php session_start(); include "con.php"; if (isset($_SESSION['user'])) { $sql=""; echo"<html>"; echo"<head>"; echo"<title>Agenda</title>"; echo"</head>"; echo"<body>"; $monthNames = Array("January","February","March","April","May","June","July","August","September","October","November", "December"); if (!isset($_REQUEST["month"])) $_REQUEST["month"] = date("n"); if (!isset($_REQUEST["year"])) $_REQUEST["year"] = date("Y"); $cMonth = $_REQUEST["month"]; $cYear = $_REQUEST["year"]; $prev_year = $cYear; $next_year = $cYear; $prev_month = $cMonth-1; $next_month = $cMonth+1; if ($prev_month == 0) { $prev_month = 12; $prev_year = $cYear - 1; } if ($next_month == 13) { $next_month = 1; $next_year = $cYear + 1; } echo"<table width=200>"; echo"<tr align=center>"; echo"<td bgcolor=#999999 style=color:#FFFFFF>"; echo"<table width=100% border=0 cellspacing=0 cellpadding=0>"; echo"<tr>"; echo"<td width=50% align=left><a href=$_SERVER[php_SELF]?month=". $prev_month . "&year=" . $prev_year." style=color:#FFFFFF>Previous</a></td>"; echo"<td width=50% align=right><a href=$_SERVER[php_SELF]?month=". $next_month . "&year=" . $next_year." style=color:#FFFFFF>Next</a></td>"; echo"</tr>"; echo"</table>"; echo"</td>"; echo"</tr>"; echo"</table>"; echo"<tr>"; echo"<td align=center>"; echo"<table width=100% border=1 cellpadding=2 cellspacing=2>"; echo"<tr align=center>"; echo"<td colspan=7 bgcolor=#999999 style=color:#FFFFFF><strong>".$monthNames[$cMonth-1]." ".$cYear."</strong></td>"; echo"</tr>"; echo"<tr>"; echo"<td align=center bgcolor=#999999 style=color:#FFFFFF><strong>Sun</strong></td>"; echo"<td align=center bgcolor=#999999 style=color:#FFFFFF><strong>Mon</strong></td>"; echo"<td align=center bgcolor=#999999 style=color:#FFFFFF><strong>Tue</strong></td>"; echo"<td align=center bgcolor=#999999 style=color:#FFFFFF><strong>Wed</strong></td>"; echo"<td align=center bgcolor=#999999 style=color:#FFFFFF><strong>Thu</strong></td>"; echo"<td align=center bgcolor=#999999 style=color:#FFFFFF><strong>Fri</strong></td>"; echo"<td align=center bgcolor=#999999 style=color:#FFFFFF><strong>Sat</strong></td>"; echo"</tr>"; $timestamp = mktime(0,0,0,$cMonth,1,$cYear); $maxday = date("t",$timestamp); $thismonth = getdate ($timestamp); $startday = $thismonth['wday']; for ($i=0; $i<($maxday+$startday); $i++) { //echo "<a href=2.php>".$i."</a><br>"; if(($i % 7) == 0 ) { echo ""; } if($i < $startday) { echo "<td></td>\n"; }else { $sql = "select * from agenda where date='".($i - $startday + 1).'-'.$cMonth.'-'.$cYear."'"; $hs = mysql_query($sql); $jmlAcara = mysql_num_rows($hs); echo "<td align='center' valign='middle' height='20px'".($jmlAcara > 0 ? " bgcolor='yellow'" : '').">"; echo "<a href=2.php?tgl=".urlencode($i - $startday + 1)."&month=".urlencode($monthNames[$cMonth-1])." onclick=\"window.open(this.href,'window','width=640,height=480,resizable,scrollbars,toolbar,menubar') ;return false;\">".($i - $startday + 1)."</a><br>"; echo "</td>\n"; } if(($i % 7) == 6 ) { echo "</tr>\n"; } } echo"</table>"; echo"<br><br><center><a href=logout.php>Logout</a>"; }else { echo "<script>alert('Please login first');javascript:window.location.href='index.php';</script>"; } ?> Thanks before, Quote Link to comment https://forums.phpfreaks.com/topic/274430-automatic-refresh-calendar-page/ Share on other sites More sharing options...
scootstah Posted February 13, 2013 Share Posted February 13, 2013 You could either use AJAX to periodically poll for changes and then update the DOM, or you could look at WebSockets. Quote Link to comment https://forums.phpfreaks.com/topic/274430-automatic-refresh-calendar-page/#findComment-1412169 Share on other sites More sharing options...
dantoni Posted February 15, 2013 Author Share Posted February 15, 2013 Hi Scootash, I've tried a few ajax way, but it still didn't work. For the first time, it works but after we click previous / next button, it comeback must refresh manually again. Here's the code. <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $.ajaxSetup({ cache: false }); // This part addresses an IE bug. without it, IE will only load the first number and will never setInterval(function() { $('#result').load('3.php'); }, 1000); // the "3000" here refers to the time to refresh the div. it is in milliseconds. }); </script> <?php $monthNames = Array("January","February","March","April","May","June","July","August","September","October","November", "December"); if (!isset($_REQUEST["month"])) $_REQUEST["month"] = date("n"); if (!isset($_REQUEST["year"])) $_REQUEST["year"] = date("Y"); $cMonth = $_REQUEST["month"]; $cYear = $_REQUEST["year"]; $prev_year = $cYear; $next_year = $cYear; $prev_month = $cMonth-1; $next_month = $cMonth+1; if ($prev_month == 0 ) { $prev_month = 12; $prev_year = $cYear - 1; } if ($next_month == 13) { $next_month = 1; $next_year = $cYear + 1; } ?> <table width="200"> <tr align="center"> <td bgcolor="#999999" style="color:#FFFFFF"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50%" align="left"><a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $prev_month . "&year=" . $prev_year; ?>" style="color:#FFFFFF">Previous</a></td> <td width="50%" align="right"><a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $next_month . "&year=" . $next_year; ?>" style="color:#FFFFFF">Next</a></td> </tr> </table> </td> </tr> </table> <table width="100%" border="1" cellpadding="2" cellspacing="2"> <tr align="center"> <td colspan="7" bgcolor="#999999" style="color:#FFFFFF"><strong><?php echo $monthNames[$cMonth-1].' '.$cYear; ?></strong></td> </tr> <tr> <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>S</strong></td> <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>M</strong></td> <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>T</strong></td> <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>W</strong></td> <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>T</strong></td> <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>F</strong></td> <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>S</strong></td> </tr> </table> <div id="result"> <?php include "connection.php"; echo"<table width=100% border=1 cellpadding=2 cellspacing=2>"; echo " <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> "; //echo "<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td>"; $month=$_GET["month"]; $year=$_GET["year"]; $timestamp = mktime(0,0,0,$month,1,$year); $maxday = date("t",$timestamp); $thismonth = getdate ($timestamp); $startday = $thismonth['wday']; for ($i=0; $i<($maxday+$startday); $i++) { //echo "($maxday+$startday)"; //echo "<a href=2.php>".$i."</a><br>"; if(($i % 7) == 0 ) { echo ""; } if($i < $startday) { echo "<td></td>\n"; }else { $sql = "select * from agenda where date='".($i - $startday + 1).'-'.$cMonth.'-'.$cYear."'"; $hs = mysql_query($sql); $jmlAcara = mysql_num_rows($hs); echo "<td align='center' valign='middle' height='20px'".($jmlAcara > 0 ? " bgcolor='yellow'" : '').">"; echo "<a href=2.php?tgl=".urlencode($i - $startday + 1)."&month=".urlencode($monthNames[$cMonth-1])." onclick=\"window.open(this.href,'window','width=640,height=480,resizable,scrollbars,toolbar,menubar') ;return false;\">".($i - $startday + 1)."</a><br>"; echo "</td>"; //echo "$cMonth"; }if(($i % 7) == 6 ) { echo "</tr>"; } } ?> </table> Quote Link to comment https://forums.phpfreaks.com/topic/274430-automatic-refresh-calendar-page/#findComment-1412570 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.