{"id":60440,"date":"2023-08-15T03:01:45","date_gmt":"2023-08-14T17:01:45","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=60440"},"modified":"2024-03-16T13:36:57","modified_gmt":"2024-03-16T03:36:57","slug":"event-calendar-php-bookmark-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/event-calendar-php-bookmark-tutorial\/","title":{"rendered":"Event Calendar PHP Bookmark Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Event Calendar PHP Bookmark Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/populating_events_css.jpg\" title=\"Event Calendar PHP Bookmark Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Event Calendar PHP Bookmark Tutorial<\/p><\/div>\n<p>Client meets server today, allowing the PHP data storage talents in yesterday&#8217;s <a title='Event Calendar PHP Tutorial' href='#ecphpt'>Event Calendar PHP Tutorial<\/a>&#8216;s work to meet a &#8220;clientside&#8221; <font color=brown>way to<\/font> &#8230;<\/p>\n<p><code><br \/>\nRecord to Remember<font color=brown> via Bookmark<\/font><br \/>\n<\/code><\/p>\n<p> &#8230; use the web browser <a target=_blank title='Bookmarks on web browser information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Bookmark_(digital)'>Bookmarks<\/a> to help you recall an Events in Month report with long entries.<\/p>\n<p>Involving a Bookmark still needs those &#8220;get&#8221; ? and &#038; arguments, and we allow the PHP to lookup for us the data underscoring an address bar URL such as &#8230;<\/p>\n<p><code><br \/>\nhttps:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.php?exactlabel=<font color=purple>August__2023_00000__1<\/font><br \/>\n<\/code><\/p>\n<p> &#8230; that mapping being possible, now, making use of a <i>pseudo<\/i> hashtag arrangement &#8230; your <a target=_blank title='Claytons ... the drink you are having when you are not having a drink.' href='https:\/\/www.youtube.com\/watch?v=3qf4yUMxnjw'><i>Clayton<\/i><\/a>&#8216;s hashtag, if you will!<\/p>\n<p>To start to use a <i>hashtag<\/i> suits, as your hashtag navigation only makes sense in the &#8220;clientside&#8221; woooorrrrrllllddd, and even there, really using one only tries to position a webpage where an element with an ID matching the hashtag sits <font size=1>(and we are never going to have this ID element in our work)<\/font>, and in the meantime we&#8217;ve passed across from the child PHP to the parent HTML a valuable piece of information helping the link to the Bookmark system be possible.  The Javascript codeline (you may have noticed) &#8230; <\/p>\n<p><code><br \/>\n  var documentURL=<font color=blue>document.URL<\/font>;<br \/>\n<\/code><\/p>\n<p> &#8230; as stupid and simple looking as it is, is crucial for us.  We get child webpage parts (like our PHP) to change <font color=blue>document.URL<\/font> to a <i>far too long in normal circumstances address bar URL<\/i> the rest of the code feeds off.  It&#8217;s just that now, that <i>far too long in normal circumstances address bar URL<\/i> has a <i>#[hashtag]<\/i> appended such as &#8230;<\/p>\n<p><code><br \/>\n#<font color=purple>August__2023_00000__1<\/font><br \/>\n<\/code><\/p>\n<p> &#8230; uniquifying a <i>Month, Year<\/i> Events in Month identifier part with a version of the user&#8217;s IP address (so that they only see what is relevant to them).<\/p>\n<p>Address bar URLs such as &#8220;https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.php?exactlabel=<font color=purple>August__2023_00000__1<\/font>&#8221; are Bookmark<sub>able<\/sub>, and so we allow for similar outcomes with less concern about how much data is being &#8220;recorded&#8221; and recallable (via that web browser&#8217;s Bookmark system).<\/p>\n<p>Also, today, a lot of CSS tweaks, so that the CSS styling now looks like &#8230;<\/p>\n<p><code><br \/>\n&lt;style&gt;<br \/>\n #eventcalendar {<br \/>\n   background-color: #fcfcfc;<br \/>\n }<br \/>\n<br \/>\n td {<br \/>\n   padding-top: 2px;<br \/>\n   padding-left: 2px;<br \/>\n   padding-right: 2px;<br \/>\n   padding-bottom: 12px;<br \/>\n }<br \/>\n<br \/>\n .dayb {<br \/>\n   color: white;<br \/>\n   background-color: red;<br \/>\n   padding: 5 5 5 5;<br \/>\n   border-radius: 80px;<br \/>\n   margin-bottom: 15px;<br \/>\n }<br \/>\n <br \/>\n .dow {<br \/>\n   color: purple;<br \/>\n   font-style: bold;<br \/>\n }<br \/>\n <br \/>\n .selday {<br \/>\n   margin-left: 8px;<br \/>\n   background-color: rgba(255,0,0,0.7);<br \/>\n   display: inline-block;<br \/>\n   width: 50px;<br \/>\n   border-color: transparent;<br \/>\n   text-overflow: ellipsis;<br \/>\n }<br \/>\n <br \/>\n .tablurb {<br \/>\n   background: linear-gradient(to right, white, lightpink, pink);<br \/>\n }<br \/>\n <br \/>\n input[type=\"submit\"] {<br \/>\n    margin-bottom: 3px;<br \/>\n    border-radius: 180px;<br \/>\n }<br \/>\n <br \/>\n input[type=\"number\"] {<br \/>\n    margin-left: 3px;<br \/>\n    margin-right: 3px;<br \/>\n    border-radius: 180px;<br \/>\n    background-color: #f3f3f3;<br \/>\n    padding: 2 2 2 2;<br \/>\n }<br \/>\n <br \/>\n #smonth {<br \/>\n    margin-left: 3px;<br \/>\n    margin-right: 3px;<br \/>\n    border-radius: 180px;<br \/>\n    background-color: #f9f9f9;<br \/>\n    padding: 2 2 2 2;<br \/>\n }<br \/>\n <br \/>\n .boldtitle {<br \/>\n    background-color: rgba(0, 211, 107, 0.2);<br \/>\n }<br \/>\n<br \/>\n .boldtitle + .tablurb {<br \/>\n    margin-top: 8px;<br \/>\n }<br \/>\n<br \/> <br \/>\n .selhistory {<br \/>\n    border-radius: 180px;<br \/>\n    background-color: lightpink;<br \/>\n    padding: 2 2 2 2;<br \/>\n }<br \/>\n&lt;\/style&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; and we thank <a target=_blank title='Calculate Current Week Number in Javascript' href='https:\/\/www.javatpoint.com\/calculate-current-week-number-in-javascript'>this webpage<\/a> for the heads up regarding how to calculate <i>week numbers within a year<\/i> data item displays now available in &#8230;<\/p>\n<ul>\n<li><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html---GETME\">a changed<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html---GETME\">events_in_month.htm<\/a> parent of the <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.htm\">Events in Month web application<\/a><\/li>\n<li>helped out by its <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.php--GETME\">changed child PHP<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.php--GETME\">events_in_month.php<\/a><\/li>\n<\/ul>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/event-calendar-php-bookmark-tutorial\/'>Event Calendar PHP Bookmark Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ecphpt'>Previous relevant <a target=_blank title='Event Calendar PHP Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/event-calendar-php-tutorial\/'>Event Calendar PHP Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Event Calendar PHP Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month_php.jpg\" title=\"Event Calendar PHP Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Event Calendar PHP Tutorial<\/p><\/div>\n<p>Let&#8217;s face it.  Serverside PHP is just great!  It opens up so many opportunities regarding data in your web applications.<\/p>\n<p>As such, onto yesterday&#8217;s <a title='Event Calendar New Window Tutorial' href='#ecnwt'>Event Calendar New Window Tutorial<\/a> logic we now have a &#8230;<\/p>\n<p><code><br \/>\nRecord to Remember<br \/>\n<\/code><\/p>\n<p> &#8230; form submit button <font size=1>(toggling)<\/font> value to start involving PHP with those longer datasets of Event in Month descriptions, in our most recent project.  What do we use as the data conduit?  No, not a database.  No, not a serverside flat file.  No, not clientside window.localStorage nor window.sessionStorage nor HTTP Cookies.  We store long Event in Month description data in our new <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.php-GETME\">events_in_month.php<\/a> PHP itself.  And this same PHP can populate options in a new dropdown element in the parent to facilitate the recalling of any relevant &#8220;Record to Remember&#8221; recordings.<\/p>\n<p>The PHP is kind of short, so we will show it below, including one <a target=_blank title='MAMP' href='http:\/\/www.mamp.info'>MAMP<\/a> example of that &#8220;self storage&#8221; &#8230;<\/p>\n<p><code><br \/>\n&lt;?php<br \/>\n\/\/ events_in_month.php<br \/>\n\/\/ RJM Programming<br \/>\n\/\/ August, 2023<br \/>\n\/\/ Help out events_in_month.htm<br \/>\n<br \/>\n   $hcont=file_get_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'events_in_month.htm');<br \/>\n   $cont=file_get_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'events_in_month.php');<br \/>\n   $ipad=server_remote_addr();<br \/>\n   $ipadless=$ipad;<br \/>\n   $js='';<br \/>\n<br \/>\n  function server_remote_addr() {<br \/>\n    global $ipadless;<br \/>\n    $rma = $_SERVER['REMOTE_ADDR'];<br \/>\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);<br \/>\n    \/\/ you can add different browsers with the same way ..<br \/>\n    $ipadless=str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma));<br \/>\n    if(preg_match('\/(chromium)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '000000'.$rma;<br \/>\n    elseif(preg_match('\/(chrome)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '00000'.$rma;<br \/>\n    elseif(preg_match('\/(safari)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '0000'.$rma;<br \/>\n    elseif(preg_match('\/(opera)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '000'.$rma;<br \/>\n    elseif(preg_match('\/(msie)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '00'.$rma;<br \/>\n    elseif(preg_match('\/(mozilla)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '0'.$rma;<br \/>\n    return str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma));<br \/>\n  }<br \/>\n<br \/>\n   $itdone=false;<br \/>\n   if (isset($_GET['init'])) {<br \/>\n     if (strpos($cont, '_' . $ipad . '=') !== false) {<br \/>\n       $things=explode('_' . $ipad . '=', $cont);<br \/>\n       for ($it=1; $it&lt;sizeof($things); $it++) {<br \/>\n          if ($it == 1 && !$itdone) {<br \/>\n           $itdone=true;<br \/>\n           $js.=\"\\n parent.document.getElementById('myoldsel').style.display='inline-block'; \\n\";<br \/>\n          }<br \/>\n          $js.=\"\\n parent.document.getElementById('myoldsel').innerHTML+='&lt;option value=\\\"\" . explode(\"\\n\", $things[$it])[0] . \"\\\"&gt;\" . explode('__', explode(' ' . ' ' . ' ', $things[-1 + $it])[-1 + sizeof(explode(' ' . ' ' . ' ', $things[-1 + $it]))])[0] . ', ' . explode('_', explode('__', explode(' ' . ' ' . ' ', $things[-1 + $it])[-1 + sizeof(explode(' ' . ' ' . ' ', $things[-1 + $it]))])[1])[0] . \"&lt;\/option&gt;'; \\n\";<br \/>\n       }<br \/>\n     }<br \/>\n     if (strpos($cont, '0' . $ipadless . '=') !== false) {<br \/>\n       $things=explode('0' . $ipadless . '=', $cont);<br \/>\n       for ($it=1; $it&lt;sizeof($things); $it++) {<br \/>\n          if ($it == 1 && !$itdone) {<br \/>\n           $itdone=true;<br \/>\n           $js.=\"\\n parent.document.getElementById('myoldsel').style.display='inline-block'; \\n\";<br \/>\n          }<br \/>\n          $js.=\"\\n parent.document.getElementById('myoldsel').innerHTML+='&lt;option value=\\\"\" . explode(\"\\n\", $things[$it])[0] . \"\\\"&gt;\" . explode('__', explode(' ' . ' ' . ' ', $things[-1 + $it])[-1 + sizeof(explode(' ' . ' ' . ' ', $things[-1 + $it]))])[0] . ', ' . explode('_', explode('__', explode(' ' . ' ' . ' ', $things[-1 + $it])[-1 + sizeof(explode(' ' . ' ' . ' ', $things[-1 + $it]))])[1])[0] . \"&lt;\/option&gt;'; \\n\";<br \/>\n       }<br \/>\n     }<br \/>\n     echo \"&lt;html&gt;&lt;head&gt;&lt;script type='text\/javascript'&gt; \" . $js . \" &lt;\/script&gt;&lt;\/head&gt;&lt;body&gt;&lt;p&gt;\" . $ipad . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n   } else if (isset($_POST['phpthere']) && isset($_POST['bigurl']) && isset($_POST['caltitle'])) {<br \/>\n \/\/file_put_contents('xz.xz', 'l');<br \/>\n     if (strpos($cont, '\/\/   ' . str_replace(' ','_',str_replace(',','_',str_replace('+',' ',urldecode($_POST['caltitle'])))) . '_' . str_replace('+',' ',urldecode($_POST['phpthere'])) . '=' . $_POST['bigurl'] . \"\\n\") === false) {<br \/>\n \/\/file_put_contents('xz.xzz', 'l');<br \/>\n     $cont=str_replace('?' . '&gt;', '\/\/   ' . str_replace(' ','_',str_replace(',','_',str_replace('+',' ',urldecode($_POST['caltitle'])))) . '_' . str_replace('+',' ',urldecode($_POST['phpthere'])) . '=' . $_POST['bigurl'] . \"\\n\" . '?' . '&gt;', $cont);<br \/>\n     file_put_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'events_in_month.php', $cont);<br \/>\n     }<br \/>\n     if (strpos($cont, '_' . $ipad . '=') !== false) {<br \/>\n       $things=explode('_' . $ipad . '=', $cont);<br \/>\n       for ($it=1; $it&lt;sizeof($things); $it++) {<br \/>\n          if ($it == 1 && !$itdone) {<br \/>\n           $itdone=true;<br \/>\n           $js.=\"\\n parent.document.getElementById('myoldsel').style.display='inline-block'; \\n\";<br \/>\n          }<br \/>\n          $js.=\"\\n parent.document.getElementById('myoldsel').innerHTML+='&lt;option value=\\\"\" . explode(\"\\n\", $things[$it])[0] . \"\\\"&gt;\" . explode('__', explode(' ' . ' ' . ' ', $things[-1 + $it])[-1 + sizeof(explode(' ' . ' ' . ' ', $things[-1 + $it]))])[0] . ', ' . explode('_', explode('__', explode(' ' . ' ' . ' ', $things[-1 + $it])[-1 + sizeof(explode(' ' . ' ' . ' ', $things[-1 + $it]))])[1])[0] . \"&lt;\/option&gt;'; \\n\";<br \/>\n       }<br \/>\n     }<br \/>\n     if (strpos($cont, '0' . $ipadless . '=') !== false) {<br \/>\n       $things=explode('0' . $ipadless . '=', $cont);<br \/>\n       for ($it=1; $it&lt;sizeof($things); $it++) {<br \/>\n          if ($it == 1 && !$itdone) {<br \/>\n           $itdone=true;<br \/>\n           $js.=\"\\n parent.document.getElementById('myoldsel').style.display='inline-block'; \\n\";<br \/>\n          }<br \/>\n          $js.=\"\\n parent.document.getElementById('myoldsel').innerHTML+='&lt;option value=\\\"\" . explode(\"\\n\", $things[$it])[0] . \"\\\"&gt;\" . explode('__', explode(' ' . ' ' . ' ', $things[-1 + $it])[-1 + sizeof(explode(' ' . ' ' . ' ', $things[-1 + $it]))])[0] . ', ' . explode('_', explode('__', explode(' ' . ' ' . ' ', $things[-1 + $it])[-1 + sizeof(explode(' ' . ' ' . ' ', $things[-1 + $it]))])[1])[0] . \"&lt;\/option&gt;'; \\n\";<br \/>\n       }<br \/>\n     }<br \/>\n \/\/file_put_contents('xz.xzzz', \"&lt;html&gt;&lt;head&gt;&lt;script type='text\/javascript'&gt; \" . $js . \"\\n parent.checkif(parent.document.getElementById('phpif')); \\n\" . \" &lt;\/script&gt;&lt;\/head&gt;&lt;body&gt;&lt;p&gt;\" . str_replace(' ','%20',str_replace('+',' ',urldecode($_POST['bigurl']))) . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\");<br \/>\n     echo \"&lt;html&gt;&lt;head&gt;&lt;script type='text\/javascript'&gt; \" . $js . \"\\n parent.checkif(parent.document.getElementById('phpif')); \\n\" . \" &lt;\/script&gt;&lt;\/head&gt;&lt;body&gt;&lt;p&gt;\" . str_replace(' ','%20',str_replace('+',' ',urldecode($_POST['bigurl']))) . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n   } else {<br \/>\n     echo $hcont;<br \/>\n   }<br \/>\n   exit;<br \/>\n<br \/>\n\/\/<br \/>\n\/\/<br \/>\n\/\/   January__1970_00000__1=ht<font color=black>tp<\/font>:\/\/localhost:8888\/events_in_month.htm?caltitle=January%2C%201970&i01.00=&ta01.00=kgjfjhf%20jhgfjhf%20jhkgkjhg%20jhgkjhg%20jkghhg%20jkhgkjhg%20kjhgkjhg&i02.00=&ta02.00=kjhgkjh%20kjhgkjhg%20jkhgkjhg%20kjhgkjhg%20kjhgkjhg%20jhkgkjhg%20kjgkjhg&i03.00=&ta03.00=kjhgkjhg%20kjhgkjhg%20kjhgkjhg%20kjhgkjhg%20kjhgkjhg%20jhkgkjhg&i04.00=&ta04.00=&i05.00=&ta05.00=&i06.00=&ta06.00=&i07.00=&ta07.00=&i08.00=&ta08.00=&i09.00=&ta09.00=&i10.00=&ta10.00=&i11.00=&ta11.00=&i12.00=&ta12.00=&i13.00=&ta13.00=&i14.00=&ta14.00=&i15.00=&ta15.00=&i16.00=&ta16.00=&i17.00=&ta17.00=&i18.00=&ta18.00=&i19.00=&ta19.00=&i20.00=&ta20.00=&i21.00=&ta21.00=&i22.00=&ta22.00=&i23.00=&ta23.00=&i24.00=&ta24.00=&i25.00=&ta25.00=&i26.00=&ta26.00=&i27.00=&ta27.00=&i28.00=&ta28.00=&i29.00=&ta29.00=&i30.00=&ta30.00=&i31.00=&ta31.00=<br \/>\n?&gt;<br \/>\n<\/code><\/p>\n<p>Yes, the parent needed <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html--GETME\">to change<\/a> for our <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html--GETME\">events_in_month.htm<\/a> parent of <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.htm\">Events in Month web application<\/a> role.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/event-calendar-php-tutorial\/'>Event Calendar PHP Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ecnwt'>Previous relevant <a target=_blank title='Event Calendar New Window Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/event-calendar-new-window-tutorial\/'>Event Calendar New Window Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Event Calendar New Window Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month_new_window.jpg\" title=\"Event Calendar New Window Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Event Calendar New Window Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='Event Calendar Remembered Tutorial' href='#ecrt'>Event Calendar Remembered Tutorial<\/a>&#8216;s <font size=3>&#8220;Mystery Dilemma&#8221;<\/font> &#8230;<\/p>\n<blockquote><p>\nBut, there&#8217;s an inherent weakness with the design, we&#8217;ll go into more into the future.\n<\/p><\/blockquote>\n<p> &#8230; well &#8230; it&#8217;s a perennial for us, regarding how if you stick with clientside thinking, only, web applications, when the amount of data to remember starts adding up, the &#8220;get arguments approach&#8221; ( ie. use ? and &#038; arguments at the address bar ) is restricted by length restrictions regarding URL lengths.<\/p>\n<p>Rather than jump to PHP serverside ideas just yet, we wanted to show some more ideas, staying with &#8220;clientside only thinking&#8221;, today, as well as improving the UX (<a target=_blank title='UX information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/User_experience'>user experience<\/a>) and small steps forward regarding styling.<\/p>\n<p>Okay then, regarding the idea to remember an Event in Month form, when there is a lot of data, and staying &#8220;just clientside&#8221;, we&#8217;ve coded for a &#8220;New Window&#8221; idea, albeit not as memorable as the default &#8220;Remember in Bookmark&#8221; possible for your smaller datasets.  However, in saying that, we found that within this new window, with our Google Chrome web browser, we could &#8230;<\/p>\n<ol style='text-shadow:-1px 1px 1px #ff2d95;background:linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)),URL(\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month_new_window_oh.jpg);background-size:contain;'>\n<li>bring up Context Menu with a right click or two finger gesture within the popup window webpage content &#8230;<\/li>\n<li>pick Inspect option &#8230;\n<\/li>\n<li>be in Elements tab of your Web Inspector &#8230; and &#8230;\n<\/li>\n<li>highlight top &lt;html&gt; tag &#8230;\n<\/li>\n<li>Context Menu with a right click or two finger gesture &#8230;\n<\/li>\n<li>pick Copy -&gt; Copy outerHTML &#8230; so that &#8230;\n<\/li>\n<li>your Event Calendar for your Events in Month choice is in a text buffer &#8230; ready for you to &#8230;\n<\/li>\n<li>Paste into a Text Editor that Events in Month webpage to store <font size=1>(perhaps in a <a target=_blank title='MAMP' href='http:\/\/www.mamp.info'>MAMP<\/a> local Apache\/PHP\/mySql web server environment, where you can further look at and develop your own ideas)<\/font>\n<p><\/li>\n<\/ol>\n<p>The user is told when the switch to &#8220;New Window&#8221; compromise becomes active, decided upon by reconstructing the proposed address bar URL regularly and when too long &#8230;<\/p>\n<p><code><br \/>\n  function formanalyze() {<br \/>\n    var fio=document.getElementsByTagName('form')[0];<br \/>\n    var delm='?';<br \/>\n    var fioih=fio.innerHTML;<br \/>\n    var fions=fioih.split(' name=\"');<br \/>\n    var testurl=documentURL.split('?')[0].split('#')[0];<br \/>\n    for (var ijk=1; ijk&lt;fions.length; ijk++) {<br \/>\n          testurl+=delm + fions[ijk].split('\"')[0] + '=' + encodeURIComponent(document.getElementById(fions[ijk].split('\"')[0]).value);<br \/>\n          delm='&';<br \/>\n    }<br \/>\n    setTimeout(formanalyze, 3000);<br \/>\n    if (eval('' + testurl.length) &gt;= 750) {<br \/>\n      if (document.getElementById('remember')) { document.getElementById('remember').value='New window';   }<br \/>\n      if (document.getElementById('rememberme')) { document.getElementById('rememberme').value='New window';   }<br \/>\n      if (document.getElementById('remembermoi')) { document.getElementById('remembermoi').value='New window';   }<br \/>\n    } else {<br \/>\n      if (document.getElementById('remember')) { document.getElementById('remember').value=document.getElementById('remember').value.replace(\/^Remember$\/g, 'Remember via Bookmark');   }<br \/>\n      if (document.getElementById('rememberme')) { document.getElementById('rememberme').value=document.getElementById('rememberme').value.replace(\/^Remember$\/g, 'Remember via Bookmark');   }<br \/>\n      if (document.getElementById('remembermoi')) { document.getElementById('remembermoi').value=document.getElementById('remembermoi').value.replace(\/^Remember$\/g, 'Remember via Bookmark');   }<br \/>\n    }<br \/>\n    return eval('' + testurl.length);<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> &#8230; the form submit buttons are reworded accordingly.<\/p>\n<p>Another idea from this blog thread&#8217;s inspiration &#8230;<\/p>\n<p><img src='https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.jpg' style='width:100%;'><\/img><\/p>\n<p> &#8230; we&#8217;ve now addressed in today&#8217;s &#8220;second draft&#8221; is allowing for an optional bold Event Day <font size=1>Blurb<\/font> Title, available to the user via a new dropdown &#8220;Bold Title&#8221; option.<\/p>\n<p>And, how can we do more with colour, to help the right bits stand out, and be consistent?  We thought &#8230;<\/p>\n<ul>\n<li>text shadow means by which the text of Event Calendar <font color=blue>can be more impactive<\/font> &#8230;<br \/>\n<code><br \/>\n&lt;div style=\"text-shadow:-1px 1px 1px #ff2d95;\" id=eventcalendar&gt;&lt;\/div&gt;<br \/>\n<\/code>\n<\/li>\n<li>dropdown element <font color=purple>conditional<\/font> <font color=blue>styling<\/font> &#8230;<br \/>\n<code><br \/>\n&lt;style&gt;<br \/>\n .dayb {<br \/>\n   color: white;<br \/>\n   background-color: red;<br \/>\n   padding: 5 5 5 5;<br \/>\n }<br \/>\n<br \/> <br \/>\n .dow {<br \/>\n   color: purple;<br \/>\n   font-style: bold;<br \/>\n }<br \/>\n <br \/>\n .selday {<br \/>\n   margin-left: 8px;<br \/>\n   <font color=blue>background-color: rgba(255,0,0,0.7);<\/font><br \/>\n   display: inline-block;<br \/>\n   width: 50px;<br \/>\n }<br \/>\n&lt;\/style&gt;<br \/>\n<\/code><br \/>\n &#8230;<br \/>\n<code><br \/>\n          if (thislabel.substring(0,1) == 'i') {<br \/>\n             if (thisval.trim() != '') {<br \/>\n               <font color=purple>document.getElementById(thislabel.replace('i', 'sel')).style.color='white';<br \/>\n               document.getElementById(thislabel.replace('i', 'sel')).style.backgroundColor='red';<\/font><br \/>\n               }<br \/>\n               document.getElementById(thislabel.replace('i', 'opt')).innerText=thisval.replace(\/\\+\/g, ' ').replace(\/\\ \\ \\ \/g, ' + '); \/\/.replace(\/\\+$\/g, ' ');<br \/>\n               document.getElementById(thislabel).value=thisval.replace(\/\\+$\/g, ' ');<br \/>\n             } else {<br \/>\n               document.getElementById(thislabel).value=thisval.replace(\/\\+\/g, ' ').replace(\/\\ \\ \\ \/g, ' + ');<br \/>\n             }<br \/>\n          }<br \/>\n<\/code>\n<\/li>\n<li>placeholder on Blurb <font color=purple>conditional existence<\/font> &#8230;<br \/>\n<code><br \/>\n     <font color=purple>var ourdata='';<\/font><br \/>\n\/\/ ...<br \/>\n     if (documentURL.indexOf('?') != -1) {<br \/>\n       <font color=purple>if (documentURL.indexOf('?caltitle=') != -1) { ourdata='data-'; }<\/font><br \/>\n\/\/ ...<br \/>\n       trtemplate='&lt;tr id=tr01.00&gt;&lt;td style=width:22%;&gt;&lt;span id=sone01.00 class=dow&gt;' + dotw[adate.getDay()].toUpperCase().substring(0,3) + '&lt;\/span&gt;&lt;br&gt;&lt;br&gt;&lt;span id=stwo01.00 class=dayb&gt;1&lt;span onblur=sepit(this); contenteditable=true id=sp01.00&gt;&lt;\/span&gt;&lt;input type=hidden id=i01.00 name=i01.00 value=\"\"&gt;&lt;\/input&gt;&lt;select data-dow=' + dotw[adate.getDay()].toUpperCase().substring(0,3) + ' class=selday onchange=\"selit(this);\" id=sel01.00&gt;&lt;option id=opt01.00 value=\"\"&gt;&lt;\/option&gt;&lt;option title=\"All such in month (ie. weekly)\" value=\"...\"&gt;...&lt;\/option&gt;&lt;option title=\"And ...\" value=\"&...\"&gt;&&lt;\/option&gt;&lt;option value=Bold&gt;Bold Title&lt;\/option&gt;&lt;option value=Clone&gt;Clone&lt;\/option&gt;&lt;\/select&gt;&lt;\/span&gt;&lt;\/td&gt;&lt;td class=blurb title=\"What is on?\" id=tb01.00&gt;&lt;span title=\"Event title\" style=\"font-style:bold;color:blue;\" id=bd01.00&gt;&lt;\/span&gt;&lt;textarea name=ta01.00 id=ta01.00 style=\"width:100%;height=100%;\" <font color=purple>' + ourdata + '<\/font>placeholder=\"Blurb ...\" class=tablurb&gt;&lt;\/textarea&gt;&lt;\/td&gt;&lt;\/tr&gt;';<br \/>\n\/\/ ...<br \/>\n       }<br \/>\n\/\/ ...<br \/>\n     }<br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p> &#8230; for our <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html-GETME\">&#8220;second draft&#8221;<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html-GETME\">events_in_month.htm<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.htm\">Events in Month web application<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/event-calendar-new-window-tutorial\/'>Event Calendar New Window Tutorial<\/a>.<\/p-->\n<hr>\n<p id='ecrt'>Previous relevant <a target=_blank title='Event Calendar Remembered Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/event-calendar-remembered-tutorial\/'>Event Calendar Remembered Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html?old=y\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Event Calendar Remembered Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/event_calendar.gif\" title=\"Event Calendar Remembered Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Event Calendar Remembered Tutorial<\/p><\/div>\n<p>We were inspired by an Event Calendar pamplette we saw the other day &#8230;<\/p>\n<p><img src='https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.jpg' style='width:100%;'><\/img><\/p>\n<p> &#8230; to write a new <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html_GETME\">&#8220;proof of concept&#8221;<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html?old=y\">Events in Month web application<\/a>, whose content can be recalled via the web browser&#8217;s Bookmark methodologies.<\/p>\n<p>We liked the ideas for day of week and\/or date of month grouping arrangements we included, being, the way we interpreted it &#8230;<\/p>\n<ul>\n<li>just on this day in this month &#8230; <i>default<\/i><\/li>\n<li>on this day of the week throughout the month in question &#8230; &#8220;<i>&#8230;<\/i>&#8220;<\/li>\n<li>on this day and some others in that month in question &#8230; &#8220;<i>&#038;<\/i>&#8221; &#8230; to start with and further amendments available via contenteditable=true span element<\/li>\n<li>&#8220;Clone&#8221; value allows for multiple separated &#8220;blurbs&#8221; for the one signature day<\/li>\n<\/ul>\n<p>But, there&#8217;s an inherent weakness with the design, we&#8217;ll go into more into the future.  For now, you can try it yourself below &#8230;<\/p>\n<p><iframe src=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.html?old=y\" style=\"width:100%;height:800px;\"><\/iframe><\/p>\n<p><b><i>Stop Press<\/i><\/b><\/p>\n<p>This is where we get to for a &#8220;second draft&#8221; we&#8217;ll get into, further, tomorrow &#8230;<\/p>\n<p><iframe src=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/events_in_month.htm\" style=\"width:100%;height:800px;\"><\/iframe><\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d60392' onclick='var dv=document.getElementById(\"d60392\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/calendar\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d60392' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d60398' onclick='var dv=document.getElementById(\"d60398\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/window\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d60398' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d60433' onclick='var dv=document.getElementById(\"d60433\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/php\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d60433' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d60440' onclick='var dv=document.getElementById(\"d60440\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/bookmark\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d60440' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Client meets server today, allowing the PHP data storage talents in yesterday&#8217;s Event Calendar PHP Tutorial&#8216;s work to meet a &#8220;clientside&#8221; way to &#8230; Record to Remember via Bookmark &#8230; use the web browser Bookmarks to help you recall an &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/event-calendar-php-bookmark-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,37],"tags":[1669,3888,1885,1835,3147,2541,180,224,281,290,301,3667,3668,367,400,429,1533,557,576,629,652,678,2020,744,4433,932,2643,997,1866,1953,2263,1200,1209,1212,1238,2567,2167,1319,2231,1345,1350,1356,1360,1583],"class_list":["post-60440","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-address-bar","tag-address-url","tag-argument","tag-arguments","tag-bold","tag-bookmark","tag-calendar","tag-colour","tag-css","tag-data","tag-date","tag-day","tag-day-of-week","tag-dropdown","tag-event","tag-file_get_contents","tag-get","tag-hashtag","tag-html","tag-ip-address","tag-javascript","tag-label","tag-linear-gradient","tag-mamp","tag-month","tag-php","tag-placeholder","tag-programming","tag-select","tag-selector","tag-span","tag-stop-press","tag-style","tag-styling","tag-table","tag-text-shadow","tag-title","tag-tutorial","tag-uniquifier","tag-url","tag-user-experience","tag-ux","tag-value","tag-window"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/60440"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=60440"}],"version-history":[{"count":17,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/60440\/revisions"}],"predecessor-version":[{"id":63048,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/60440\/revisions\/63048"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=60440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=60440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=60440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}