Message Board One Liners Span Inline Talents Tutorial

Message Board One Liners Span Inline Talents Tutorial

Message Board One Liners Span Inline Talents Tutorial

Yesterday’s Message Board One Liners Div Linking Talents Tutorial effectively set up the competition …

Which is the humblest HTML element type?

… and proposed that the HTML div element was up there. But, around here, we don’t think so, so much, as you can read about in yesterday’s treatise.

Today we have, heavily featuring, another of those in the humblest HTML element type list we are sure for a lot of people, the good ol’ HTML span element. But, again, is that fair?! Again, no, we say, especially in so much as, regarding text data display talents, how …

  • the HTML span element can be relied upon as an “inline” display specialist … and in the case starting with yesterday’s work’s implications …
  • helping straighten up (ie. restore previously horizontal alignments) in what became a bit vertical within the “sometimes inline” but “default block” HTML div element … and today we have another useful task for the …
  • HTML span element is being used today, not for linking, but for …
    1. a dual display purpose …
    2. effectively animating …

      var toggler=0, togspans=[], holdyourhorses=false;

      function spanize() {
      var jspan=0;
      if (eval('' + togspans.length) == 0) {
      togspans=document.getElementsByTagName('span');
      }
      if (!holdyourhorses) {
      if (toggler == 0) {
      toggler=1;
      for (jspan=0; jspan<togspans.length; jspan++) {
      if (togspans[jspan].outerHTML.indexOf(' data-local=') != -1 && togspans[jspan].outerHTML.indexOf('<span>') == -1) {
      togspans[jspan].innerHTML=togspans[jspan].getAttribute('data-local');
      togspans[jspan].title=togspans[jspan].getAttribute('data-gmt');
      }
      }
      } else {
      toggler=0;
      for (jspan=0; jspan<togspans.length; jspan++) {
      if (togspans[jspan].outerHTML.indexOf(' data-local=') != -1 && togspans[jspan].outerHTML.indexOf('<span>') == -1) {
      togspans[jspan].innerHTML=togspans[jspan].getAttribute('data-gmt');
      togspans[jspan].title=togspans[jspan].getAttribute('data-local');
      }
      }
      }
      }
      setTimeout(spanize, 10000);
      }

      setTimeout(spanize, 2000);
    3. the Message Board timestamp display between GMT timestamps (we still want to display in the sense that it shows a message list showing that chronological sorted order where you are comparing “apples with apples”) and local timestamps (regarding the “Publishing” content creator user’s local environment, and which adds interest and context for any Message Board discussions) … a thing only really feasible by clientsize Javascript amending the div content display and then informing the serverside of the findings, using …

      var localtz=Intl.DateTimeFormat().resolvedOptions().timeZone;

      … thanks to this useful information and the new HTML form textboxes whose content is Javascript DOM filled via …

      document.getElementById('localtz').value=localtz;
      document.getElementById('localdt').value=('' + new Date());

So, do you still want to only involve the HTML textarea elements here in this Message Board? Hmmm. Mmmmmm.

As far as data considerations go, we like “humble” … within …

… and compartmentalize usage where talents lie by changing what used to be a “message data” textbox (ie. input type=text) into an HTML textarea element, with it’s user interactive entry talents … swings and roundabouts, indeed?!


Previous relevant Message Board One Liners Div Linking Talents Tutorial is shown below.

Message Board One Liners Div Linking Talents Tutorial

Message Board One Liners Div Linking Talents Tutorial

Up until today, as with yesterday’s Message Board One Liners Content Filtering Tutorial

  • our message board content was displayed within an HTML textarea element … but with today’s work …
  • we’re transferring our Message Board content “allegiance” over to an HTML div element

Borrrrriiing!!

… we hear some of you say?! But are you basing your dismay on “looks alone”?! Hmmm. Mmmmmm.

The HTML textarea element is great for text data and beats the use of HTML input type=text “textbox” element with it’s handling of line feeds in your data.

But (humble ol’) HTML div elements allow for embedded links to be applied to special words of your text data for links like …

  1. http: or https: protocol URLs
  2. email addresses … mapped to “a” “mailto:” links
  3. SMS number … mapped to “a” “sms:” links
  4. YouTube 11 character video ID
  5. Spotify 22 character playlist ID
  6. YouTube 34 character playlist ID

… as examples of what we can add intelligence to with Javascript code to oversee and adjust the content, as per …


function subalt(inalt) {
var wdsare=inalt.replace(/\<br\>/g, ' ').split(' ');
inalt=inalt.replace(/\<br\>/g, String.fromCharCode(10));
var outalt=inalt;
//alert(outalt.split('google.com')[eval(-1 + outalt.split('google.com').length)]);
var opst='', putb='';
var iwdsl=eval('' + wdsare.length);

for (var iws=0; iws<iwdsl; iws++) {
if (iws == 0) {
wdsare.push('');
wdsare.push('');
}
var elevenlegit='', nv='', prefn='';
//if (wdsare[iws].indexOf('61') != -1 || 1 == 1) {
// alert(wdsare[iws]);
//}
if (wdsare[iws].trim() == '' && iws < iwdsl) {
nv=wdsare[eval(1 + iws)];
//alert(nv);
if (nv.substring(0,1) >= '0' && nv.substring(0,1) <= '9') {
prefn='+';
if ((prefn + nv) != (prefn + nv).replace(/^\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*(\d{1,2})$/g,'')) {
//outalt=outalt.replace(' ' + wdsare[eval(1 + iws)], " <a title=\"SMS\" target=\"_top\" onclick=\"event.stopPropagation();\" href=\"sms:" + encodeURIComponent(prefn + wdsare[eval(1 + iws)]) + "&body=" + encodeURIComponent(inalt.replace(wdsare[eval(1 + iws)], prefn + wdsare[eval(1 + iws)])) + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[eval(1 + iws)] + "</a>");
outalt=outaltreplace(outalt, ' ' + wdsare[eval(1 + iws)], " <a title=\"SMS\" target=\"_top\" onclick=\"event.stopPropagation();\" href=\"sms:" + encodeURIComponent(prefn + wdsare[eval(1 + iws)]) + "&body=" + encodeURIComponent(inalt.replace(wdsare[eval(1 + iws)], prefn + wdsare[eval(1 + iws)])) + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[eval(1 + iws)] + "</a>");
//wdsare[eval(1 + iws)]=(prefn + wdsare[eval(1 + iws)]);
prefn='';
}
} else {
prefn='';
}
} else if (wdsare[iws].trim() != '' && (wdsare[eval(1 + iws)] + wdsare[eval(2 + iws)]) != 'saysat') {
if (eval('' + wdsare[iws].length) == 11 && eval('' + encodeURIComponent(wdsare[iws]).length) == 11) {
elevenlegit=maybelegit(wdsare[iws], 'youtube');
} else if (eval('' + wdsare[iws].length) == 34 && eval('' + encodeURIComponent(wdsare[iws]).length) == 34) {
elevenlegit=otherlegit(wdsare[iws], 'youtube', 34);
} else if (eval('' + wdsare[iws].length) == 22 && eval('' + encodeURIComponent(wdsare[iws]).length) == 22) {
elevenlegit=otherlegit(wdsare[iws], 'spotify', 22);
}
// if (prefn != '') { alert('0:' + prefn + wdsare[iws]); }
if ((wdsare[iws].toLowerCase().indexOf('http') == 0 && wdsare[iws].toLowerCase().indexOf('//') != -1) || wdsare[iws].toLowerCase().indexOf('//') == 0) {
// if (prefn != '') { alert('1:' + prefn + wdsare[iws]); }
//if (('' + top.document.URL).indexOf('/video_commentary.htm') != -1) { alert('here1 ' + wdsare[iws]); }
//outalt=outalt.replace(' ' + wdsare[iws], " <a title=\"Link\" onclick=\"event.stopPropagation(); window.open('//" + prefn + wdsare[iws].split('//')[1] + "','_blank','top=100,left=120,width=600,height=600'); " + putb + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
outalt=outaltreplace(outalt,' ' + wdsare[iws], " <a title=\"Link\" onclick=\"event.stopPropagation(); window.open('//" + prefn + wdsare[iws].split('//')[1] + "','_blank','top=100,left=120,width=600,height=600'); " + putb + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
} else if (elevenlegit == 'youtube') {
// if (prefn != '') { alert('2:' + prefn + wdsare[iws]); }
if (eval('' + wdsare[iws].length) == 11 && eval('' + encodeURIComponent(wdsare[iws]).length) == 11) {
//if (('' + top.document.URL).indexOf('/video_commentary.htm') != -1) { alert('here11 ' + wdsare[iws]); }
//outalt=outalt.replace(' ' + wdsare[iws], " <a title=\"YouTube video\" onclick=\"event.stopPropagation(); window.open('//www.youtube.com/watch?v=" + prefn + wdsare[iws] + "','_blank','top=120,left=100,width=600,height=600'); " + putb + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
outalt=outaltreplace(outalt,' ' + wdsare[iws], " <a title=\"YouTube video\" onclick=\"event.stopPropagation(); window.open('//www.youtube.com/watch?v=" + prefn + wdsare[iws] + "','_blank','top=120,left=100,width=600,height=600'); " + putb + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
} else {
//if (('' + top.document.URL).indexOf('/video_commentary.htm') != -1) { alert('here111 ' + wdsare[iws]); }
//outalt=outalt.replace(' ' + wdsare[iws], " <a title=\"YouTube playlist\" onclick=\"event.stopPropagation(); window.open('//www.youtube.com/playlist?list=" + prefn + wdsare[iws] + "','_blank','top=120,left=100,width=600,height=600'); " + putb + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
outalt=outaltreplace(outalt,' ' + wdsare[iws], " <a title=\"YouTube playlist\" onclick=\"event.stopPropagation(); window.open('//www.youtube.com/playlist?list=" + prefn + wdsare[iws] + "','_blank','top=120,left=100,width=600,height=600'); " + putb + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
}
} else if (elevenlegit == 'spotify' && eval('' + wdsare[iws].length) == 22 && eval('' + encodeURIComponent(wdsare[iws]).length) == 22) {
// if (prefn != '') { alert('3:' + prefn + wdsare[iws]); }
//if (('' + top.document.URL).indexOf('/video_commentary.htm') != -1) { alert('here2 ' + wdsare[iws]); }
//outalt=outalt.replace(' ' + wdsare[iws], " <a title=\"Spotify album\" onclick=\"event.stopPropagation(); window.open('//open.spotify.com/playlist/" + prefn + wdsare[iws] + "','_blank','top=120,left=100,width=600,height=600'); " + putb + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
outalt=outaltreplace(outalt,' ' + wdsare[iws], " <a title=\"Spotify album\" onclick=\"event.stopPropagation(); window.open('//open.spotify.com/playlist/" + prefn + wdsare[iws] + "','_blank','top=120,left=100,width=600,height=600'); " + putb + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
} else if (wdsare[iws].indexOf('@') > 0 && (wdsare[iws] + '~').indexOf('@~') == -1 && wdsare[iws].indexOf('.') != -1) {
// if (prefn != '') { alert('4:' + prefn + wdsare[iws]); }
//if (('' + top.document.URL).indexOf('/video_commentary.htm') != -1) { alert('here3 ' + wdsare[iws]); }
//outalt=outalt.replace(' ' + wdsare[iws], " <a title=\"Email\" target=\"_top\" onclick=\"event.stopPropagation();\" href=\"mailto:" + prefn + wdsare[iws] + "?subject=Message%20Board&body=" + encodeURIComponent(inalt) + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
outalt=outaltreplace(outalt,' ' + wdsare[iws], " <a title=\"Email\" target=\"_top\" onclick=\"event.stopPropagation();\" href=\"mailto:" + prefn + wdsare[iws] + "?subject=Message%20Board&body=" + encodeURIComponent(inalt) + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
} else if ((prefn + wdsare[iws]).replace(/^\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*(\d{1,2})$/g,'') != (prefn + wdsare[iws])) {
// if (prefn != '') { alert('5:' + prefn + wdsare[iws]); }
//if (('' + top.document.URL).indexOf('/video_commentary.htm') != -1) { alert('here4 ' + wdsare[iws]); }
//outalt=outalt.replace(' ' + wdsare[iws], " <a title=\"SMS\" target=\"_top\" onclick=\"event.stopPropagation();\" href=\"sms:" + prefn + wdsare[iws] + "&body=" + encodeURIComponent(inalt) + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
outalt=outaltreplace(outalt,' ' + wdsare[iws], " <a title=\"SMS\" target=\"_top\" onclick=\"event.stopPropagation();\" href=\"sms:" + prefn + wdsare[iws] + "&body=" + encodeURIComponent(inalt) + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
} else if (eval('' + wdsare[iws].length) > 4 && wdsare[iws].replace(/0/g,'').replace(/1/g,'').replace(/2/g,'').replace(/3/g,'').replace(/4/g,'').replace(/5/g,'').replace(/6/g,'').replace(/7/g,'').replace(/8/g,'').replace(/9/g,'') == '') {
// if (prefn != '') { alert('6:' + prefn + wdsare[iws]); }
//if (('' + top.document.URL).indexOf('/video_commentary.htm') != -1) { alert('here5 ' + wdsare[iws]); }
//outalt=outalt.replace(' ' + wdsare[iws], " <a title=\"SMS\" target=\"_top\" onclick=\"event.stopPropagation();\" href=\"sms:" + prefn + wdsare[iws] + "&body=" + encodeURIComponent(inalt) + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
outalt=outaltreplace(outalt,' ' + wdsare[iws], " <a title=\"SMS\" target=\"_top\" onclick=\"event.stopPropagation();\" href=\"sms:" + prefn + wdsare[iws] + "&body=" + encodeURIComponent(inalt) + "\" style=text-decoration:underline;cursor:pointer;\">" + prefn + wdsare[iws] + "</a>");
}
prefn='';
}
}

return crlftobr(outalt);
}

function outaltreplace(regrdg,findthis,withthis) {
findthis=findthis.replace(String.fromCharCode(10),'');
withthis=withthis.replace(String.fromCharCode(10),'');
if (regrdg.indexOf(findthis) != -1 || regrdg.indexOf(findthis.trim() + String.fromCharCode(10)) != -1) {
//alert(1);
if (regrdg.indexOf(findthis + ' ') != -1) {
return regrdg.replace(findthis + ' ',withthis + ' ');
} else if (regrdg.indexOf(findthis) < (regrdg.indexOf(findthis.trim() + String.fromCharCode(10)) == -1 ? eval(1 + eval('' + regrdg.length)) : regrdg.indexOf(findthis.trim() + String.fromCharCode(10))) && (regrdg.indexOf(findthis) != -1 || regrdg.indexOf(findthis.trim() + String.fromCharCode(10)) == -1)) {
//alert(11);
return regrdg.replace(findthis,withthis);
} else {
//alert('111 ' + regrdg.indexOf(findthis) + ' vs ' + regrdg.indexOf(findthis.trim() + String.fromCharCode(10)));
return regrdg.replace(findthis.trim() + String.fromCharCode(10),withthis.trim()); // + String.fromCharCode(10)
}
}
return regrdg;
}

function linkize(inpt) {
var outpt=inpt;
var intsare=inpt.split('[');
for (var iuy=1; iuy<intsare.length; iuy++) {
if (intsare[iuy].split(']')[0].indexOf('@') != -1) {
outpt=outpt.replace('[' + intsare[iuy].split(']')[0] + ']', '[<a title="Email" target="_top" onclick="event.stopPropagation();" href="mailto:' + intsare[iuy].split(']')[0] + '?subject=Regarding%20this%20Message%20Board">' + intsare[iuy].split(']')[0] + '</a>]');
} else if (intsare[iuy].split(']')[0].trim() != '' && intsare[iuy].split(']')[0].trim().replace(/0/g,'').replace(/1/g,'').replace(/2/g,'').replace(/3/g,'').replace(/4/g,'').replace(/5/g,'').replace(/6/g,'').replace(/7/g,'').replace(/8/g,'').replace(/9/g,'') == '') {
outpt=outpt.replace('[' + intsare[iuy].split(']')[0] + ']', '[<a title="SMS" target="_top" onclick="event.stopPropagation();" href="sms:' + intsare[iuy].split(']')[0] + '&body=Regarding%20this%20Message%20Board">' + intsare[iuy].split(']')[0] + '</a>]');
}
}
return outpt;
}

function otherlegit(ineleven, iflegit, thiseleven) {
if (eval('' + ineleven.length) != thiseleven) {
return 'JUNK' + iflegit;
//} else if (ineleven.slice(-1).replace('A','').replace('E','').replace('I','').replace('M','').replace('Q','').replace('U','').replace('Y','').replace('c','').replace('g','').replace('k','').replace('o','').replace('s','').replace('w','').replace('0','').replace('4','').replace('8','') != '') {
// return 'JUNK' + iflegit;
}
for (var ijk=0; ijk<ineleven.length; ijk++) {
if (ineleven.substring(ijk).substring(0,1) >= 'a' && ineleven.substring(ijk).substring(0,1) <= 'z') {
ijk=ijk;
} else if (ineleven.substring(ijk).substring(0,1) >= 'A' && ineleven.substring(ijk).substring(0,1) <= 'Z') {
ijk=ijk;
} else if (ineleven.substring(ijk).substring(0,1) >= '0' && ineleven.substring(ijk).substring(0,1) <= '9') {
ijk=ijk;
} else if (ineleven.substring(ijk).substring(0,1) == '/' || ineleven.substring(ijk).substring(0,1) == '+') {
ijk=ijk;
} else if (ineleven.substring(ijk).substring(0,1) == '-' || ineleven.substring(ijk).substring(0,1) == '_') {
ijk=ijk;
} else {
return 'JUNK' + iflegit;
}
}
return iflegit;
}

function maybelegit(ineleven, iflegit) {
if (eval('' + ineleven.length) != 11) {
return iflegit.replace('tube','tuJUNKbe');
} else if (ineleven.slice(-1).replace('A','').replace('E','').replace('I','').replace('M','').replace('Q','').replace('U','').replace('Y','').replace('c','').replace('g','').replace('k','').replace('o','').replace('s','').replace('w','').replace('0','').replace('4','').replace('8','') != '') {
return iflegit.replace('tube','tuJUNKbe');
}
for (var ijk=0; ijk<ineleven.length; ijk++) {
if (ineleven.substring(ijk).substring(0,1) >= 'a' && ineleven.substring(ijk).substring(0,1) <= 'z') {
ijk=ijk;
} else if (ineleven.substring(ijk).substring(0,1) >= 'A' && ineleven.substring(ijk).substring(0,1) <= 'Z') {
ijk=ijk;
} else if (ineleven.substring(ijk).substring(0,1) >= '0' && ineleven.substring(ijk).substring(0,1) <= '9') {
ijk=ijk;
} else if (ineleven.substring(ijk).substring(0,1) == '/' || ineleven.substring(ijk).substring(0,1) == '+') {
ijk=ijk;
} else if (ineleven.substring(ijk).substring(0,1) == '-' || ineleven.substring(ijk).substring(0,1) == '_') {
ijk=ijk;
} else {
return iflegit.replace('tube','tuJUNKbe');
}
}
return iflegit;
}

function crlftobr(insg) {
var outsg=insg;
while (outsg.indexOf(String.fromCharCode(10)) != -1) {
outsg=outsg.replace(String.fromCharCode(10), '<br>');
}
return outsg;
}

… and can be cajoled into the baseline bottom justification of the text data (albeit not as seamlessly as for textarea elements, but thanks to this great link for the help) using CSS …


display:inline-flex;

… within …

… where, now, double clicking on colour coded HTML div elements allows for total Message Board content reviews.


Previous relevant Message Board One Liners Content Filtering Tutorial is shown below.

Message Board One Liners Content Filtering Tutorial

Message Board One Liners Content Filtering Tutorial

Yesterday’s Message Board One Liners Group Privacy Tutorial

  1. group
  2. privacy

… ideas are built up today with an …

  1. individualized
  2. content
  3. filtering

… addition of functionality so that a user can provide a semicolon delimited set of filtering parameters

Name you will see on board above where a comma separated list like RJM[rmetcalfe15@gmail.com],RMet[rmetcalfe@rjmprogramming.com.au] would invite RMet to Message Board via that email address and flagging that rmetcalfe15@gmail.com would be sending the invitation, whereas a semicolon separated list describes a wildcard * and ? (as well as ^ start and $ end) savvy list of Message Board filter criteria, as well as criteria like for example (of matching with
Frederick says at 30/10/2025 00:13 GMT … yes
) …
last 10 minutes
^Fred*yes
red?r*k*yes$

… to apply to their own view of the Message Board we’ve been working on here lately.

Again, both serverside (starring for the first time, for us, use of PHP’s great fnmatch friend to wildcard * and ? usage that we are so familiar with regarding file specification usages) and clientside code needed to change to facilitate this, as you can peruse below …

… where a bit of “colour coding depending on mode of use” enters the scene.


Previous relevant Message Board One Liners Group Privacy Tutorial is shown below.

Message Board One Liners Group Privacy Tutorial

Message Board One Liners Group Privacy Tutorial

Yesterday’s Message Board One Liners Group Invitations Tutorial

Group

… think, opens us up to the first opportunity to filter Message Board data …


each group will only see the messaging from others in their group that clicked/tapped the email/SMS body link of relevance to them, sent by the first member of the comma separated group list, that being the originator

Under the umbrella term “privacy”, these changes improve what we can offer users in terms of “privacy” using the Message Board web application, but we think there will be more to come.

Both serverside and clientside code needed to change to facilitate this, as you can peruse below …


Previous relevant Message Board One Liners Group Invitations Tutorial is shown below.

Message Board One Liners Group Invitations Tutorial

Message Board One Liners Group Invitations Tutorial

Improving on the Message Board start we had with yesterday’s Message Board One Liners Primer Tutorial, today we introduce …

  1. the idea of a Message Board …

    Group

    … allied to …

  2. how an email and/or SMS invitation from …

    the originator + the rest of the group = the group

… and our “blurb” on that user related textbox now reads

Name you will see on board above where a comma separated list like RJM[rmetcalfe15@gmail.com],RMet[rmetcalfe@rjmprogramming.com.au] would invite RMet to Message Board via that email address and flagging that rmetcalfe15@gmail.com would be sending the invitation.

Making these optional invitations a possibility asked for extensions to the clientside of our Message Board code, and as such, we decided to write a new …

And for the second time, we’ve made use of email and/or SMS body sections containing multiple URLs each getting recognised because they are separated by a line feed. That means we can, there and then, at the email received by the email recipient stage, get the recipient to set themselves up in terms of …

  1. name
  2. contact

… completely, as they click/tap the relevant email and/or SMS Message Board link. If you are ahead of the curve here, no Message Board filtering of data has happened … yet?!


Previous relevant Message Board One Liners Primer Tutorial is shown below.

Message Board One Liners Primer Tutorial

Message Board One Liners Primer Tutorial

PHP has …

  • include ‘./prepend.php’; // … and/or …
  • require ‘./prepend.php’; //… and/or …
  • php_value auto_prepend_file “prepend.php”
    // php.ini directive in relevant folder .htaccess … worked on our local MAMP Apache web server but not up at RJM Programming domain Apache web server

… as ways to prepend PHP (called prepend.php into some other PHP), a design we wanted to implement for today’s “proof of concept” Message Board One Liners helped out by prepend.php helper, which you can also try below …

Message Board
User 1 User 2

If this was interesting you may be interested in this too.


If this was interesting you may be interested in this too.


If this was interesting you may be interested in this too.


If this was interesting you may be interested in this too.


If this was interesting you may be interested in this too.


If this was interesting you may be interested in this too.

This entry was posted in Animation, eLearning, Event-Driven Programming, Tutorials and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *