Dennis M. Reed "Califa" - Web Design Techniques and Site Development History

Page Last Updated: 2012-05-13 15:31:00 PST

Please note that this site contains information regarding Chinese-Asian Cooking, Cooking In General, Cookbook and Cooking Equipment Collections, Latin American Music including My Musical Autobiography and Collections, Site and Web Development, Drumming, and much more.

If you find this site to be of interest or value or if you are using a non-Windows operating system please let me know using the Submit_Comments Page.

Note: Foxfire, Safari, Chrome, Maxthon & Opera are only tested using the latest versions.

Detected Operating System: Detected Browser: 1.0


Web Development Pages: Overview   HTML & ASCII Codes   International_Characters_Test-(UTF-8)   SOLVED:_Site_Development_Problems   Web_Development_Books_CATALOG   Web_Development_Techniques_&_Site_Status_History  

Note: _CATALOG links may take a little time to load, please wait!

Solutions to various site development problems I have encountered which may be of interest to others:

solved: PHP - Connect/select local/remote MySQL database based on where code is running

solved: phpMyAdmin Import of UTF-8 CSV files

solved: Win7, Apache & Virtual Hosts (VHOSTS) using port numbers for different localhosts

solved: Display Page/File & MySQL Table Last Updated Date/Time On Local & Remote Hosts

solved: Easy Way To Check If Javascript Is Enabled In Client/User Browser

solved: All Solid Borders Around Form Input & TextArea "Boxes"

solved: Display Page Appropriately When User Forces Black Background

solved: Windows 7: Clearing Disk Dirty Bit

solved: xmp($arg) - PHP Replacement Function for Deprecated HTML <xmp> Tag

solved: PHP Function to Add Captions To Images

solved: Multiple Column "CSS Only" Tables (without using <table>)

solved: IE8 Displays Page Differently In Compatibility View

Various PHP functions I have created which may be of interest to others. Some of the functions use $html_ver which assisted in the transition from (X)HTML to HTML5:

br($html_ver,$repetitions)  - generates "<br>" or "<br />"

browser_ver($html_ver,$browser,$version,$os_type,$os_number)
     - gets browser/version and operating system/number

CSS "Table" Functions  - replace <table> used for page formatting

dis_func_code($html_ver,$func_name,$func_file)
     - displays specified function code

hr($html_ver)  - generates "<hr>" or "</hr>"

htmlterm($html_ver)  - generates ">" or "/>"

pre_code($code)  - displays HTML/CSS code

xmp($arg)  - replacement for Deprecated HTML <xmp>





This page contains information regarding the development/evolution of this site as well as some of my experiences with FrontPage, Expression Web, HTML, CSS, XHTML, PHP, MySQL, JavaScript/jScript including conversions and other techniques. The site continues to evolve as I learn/discover new techniques. This page also describes PHP functions I have created to facilitate conversion from HTML to XHTML to HTML5 and provides various page displays of PHP and other code and which are also useful for code debugging.

Dates, sequences and details to be corrected as time and memory allow. The Outstanding Issues column indicates outstanding problems/enhancements/tests needed/deferred tasks/possible future developments/projects as a reminder to me and the status will be removed when the indicated problem/enhancement/test needed/deferred task/future development is completed, solved, or removed from consideration.

The following table is sortable if JavaScript is enabled, just click on a column header.
Please allow sufficient time for the page to load and for sorts to complete.
Click here to restore original sort.
Initial Date or
Sequence

 Outstanding 
Issues
Subsequent
Related
Dates


Event or Action
1999/11/24   2010/05/14

I initially developed this site on my PC running Windows ME/SE/XP and using Microsoft FrontPage (FP) without using HTML directly. Some time after Microsoft discontinued FP, I replaced FP with Expression Web 2 (EW 2) and later with Expression Web 3 (EW 3).

But I am continuing to use EW 2 until a particular EW 3 publishing problem is resolved by Microsoft (see below for description of problem.

As I read the EW documentation and bought a few books about EW, I realized that I should update my site to be HTML 4.01 Strict compliant and to remove the FP bots and other special FP and Microsoft extensions. While trying to upgrade my site I discovered that I had to learn, at least, some basic HTML and CSS so I bought a few books about HTML and CSS.

2010/05/14: I have done no testing with Apple Mac but no one has reported any problems yet.

1999/11/24   2011/03/12

2011/03/04: I am now using EW 4.

1999/12/14    

This site was originally created and maintained using MS FrontPage 2000 frontpage gif and then FrontPage 2002.

The site still looks best using MS Internet Explorer 7 and above. Some features and formatting may be different with other browsers.

Most audio clips were originally created using Real Producer Plus real producer plus image which required the RealAudio Player realplayer 7 image.

1999/12/14   2009/12/23

I have been and will continue to test my site on multiple browsers and attempt to present similar content/presentation on multiple browsers.

1999/12/14   2009/12/23

The table format is used to allow easy updates and additions but I will attempt to remove table formatting/presentation usage and keep tables only where tables are desirable such as the table at which you are now looking.

2002/11/23    

Sorry folks! Most audio links have been disabled until further notice due to a letter from ASCAP demanding that I pay a $300+ licensing fee which I cannot afford. Personal and other non-ASCAP audio links will be restored when I can determine which recordings are ASCAP controlled.

2004/01/23    

I have added two new pages:

  • Drum Info which includes drum tuning, head mounting, playing techniques, basic bongo and conga patterns, etc.
  • Tea/Coffee Info which includes links/ information regarding tea and coffee (equipment, brewing, kinds, etc.).
2008/12/18    

I have re-installed all audio files and have converted them to .mp3 format files using the free version of Switch Audio File Conversion Software (click on the following image to access the information regarding Converter).

I occasionally briefly post links to tunes to provide examples to a select audience for the purpose of discussion...these tunes are removed after a couple of days.

I will immediately remove any link to any file identified by ASCAP or others as being under their control or copyrighted.

2008/12/18    

Site development and maintenance will now be done using MS Expression Web 2 (soon to be upgraded to Expression Web 3). The site still looks best using MS Internet Explorer 7 and above. Some features and formatting may be different with other browsers but, by modifying the site to be HTML 4.01 Strict compliant, the site should be more consistent across different browsers.

2009/03/19    

I have added new Food/Cooking Info pages which will include recipes, cooking information, recipes, and my cookbook collections which have been cataloged/created using ReaderWare RW.

2009/05/14    

Rebuilding the site and redoing pages...some FrontPage "features"/"bots", e.g., shared borders, banner scrolling, animated flag .gifs, etc., have been removed as efforts are applied to make site web HTML/XHTML and CSS compliant without special FrontPage features/bots. These changes should make the site more compatible with all browsers. Please let me know if any link or feature is not working properly.

2009/09/01    

I have moved this site to new cheaper host provider: Network Solutions.

Please let me know if there are any problems with this site especially if they might be associated with the new provider.

2009/09/09    

I have added a new Latin Music Collection - CDs page which is a catalog of all my Latin Music CDs cataloged using ReaderWare AW and I cannot emphasize enough how great ReaderWare Support is.

This new page hopefully will eventually include 78s, 45s, and LPs and replace the consolidated older manually updated Latin Music Collection - Annotated page which now contains only LPs, 45s, videos, books and CDs which have annotation and music links. However, there may be delays in adding the annotated materials, LPs, 45s, etc., until ReaderWare AW can accommodate the annotations as I would like to see.

Music books and videos will be cataloged separately using the other ReaderWare components.

2009/09/15    

I have added a new page to the Food/Cooking Info pages: my non-Asian Cookbook collection for the Food/Cooking Info pages.

2009/10/18    

I have converted the site to be HTML 4.01 Strict Compliant and CSS 2.1 Compliant.

valid html 4.01 transitional logo valid css 2 logo

If any page appears non-compliant, strange or inconsistent, please contact me so I can correct the page.

2009/10/24 2 DEFER 2009/11/17 2011/01/20

I am beginning to modify the site to meet Accessibility Standards.

2009/11/17: Accessibility deferred until XHTML conversion completed.

2011/01/20: Accessibility deferred indefinitely but specific issues may be addressed as they are identified.

2009/11/01   2009/11/04

I am now beginning to simply the HTML code by using CSS  techniques and capabilities.

2009/11/04: Initial code simplification completed.

2009/11/11   2009/11/13

Working on thumbnails to make them HTML 4.01 Strict compliant.

2009/11/13: Found solution to thumbnail problem and completed reworking all images.

2009/11/12   2009/12/07
2099/09/14

Now using MS Expression Web 3 for site development and maintenance. Expression Web 3 box image

2009/12/07: Alternating between EW 2 and EW 3 depending upon work to be completed because of a few problems with EW 3.

2009/14: Using EW 3 and doing some testing of EW 4.

2009/11/17   2009/11/18
2009/11/22

Ordered a bunch of XHTML books. Beginning to upgrade site to XHTML 1.0 Strict.

2009/11/18: Completed conversion from HTML 4.01 Strict to XHTML 1.0 Strict. Still working to make all site filenames lowercase.

valid xhtml 1.0 strict gif

2009/11/22: All filenames now lowercase and most files now have meaningful descriptive filenames.

2009/11/19    

Ordered a bunch of JavaScript, CSS and DHTML books.

2009/11/20    

I installed EW 3 SP-1 and publishing problem is solved, so back to EW 3.

2009/11/20    

Solving the uppercase/mixedcase to lowercase filename problem:

After changing image and audio file names from uppercase/mixedcase to lowercase, I noticed that some file names revert to their previous case. And additionally, when using EW to publish, filenames which had been originally published with uppercase/mixedcase and then changed to lowercase, these filenames will not be updated. Again, Pat Geary helped by pointing out that this is a Windows problem/decision, i.e, Windows does not distinguish between upper and lowercase characters in filenames.

My solution to this publishing problem is:

  1. Change the filenames using EW so all links will be updated;
  2. Delete appropriate range of files on destination server (possibly all files);
  3. Publish using EW which will then copy the files with lowercase filenames.
2009/11/20    

EW 3 publishing problem (problem present with trial download and with purchased program):

EW 3 repeatedly publishes unchanged pages especially image and audio files which can mean very long publishing times. Microsoft is expected to provide a correction to this problem before the end of 2009. I will continue to use EW 2 until such a correction is available.

2009/11/20   2009/11/20

EW 3 SP-1 downloaded and installed: publishing problem solved. Back to using EW 3. Actually, it seems that, at least, part of the problem was solved by using the Site View, View, Changed Files on the publishing page.

Note: it was necessary to find the SP-1 download from the Microsoft Expression Web 3 Service Pack 1 because Windows Update did not find EW 3 SP-1.

Similarly for EW 3 SP-2.

2009/11/20    

EW 3 XHTML 1.0 Strict - adding a navigation "Page Include" file:

I desired a way to "include" a file which would contain secondary navigation code allowing me to maintain in a single file any change to the secondary navigation code which is used on multiple pages. I tried to find a solution in various books and with online searches. I tried several methods to no avail. So I contacted Pat Geary again. And again, thanks to Pat for the pointing me to a solution.

The following shows how the problem was resolved:

Display generated by function pre_code():
<!--webbot bot="Include" 
    U-Include="music_autobio-0000-include-nav.html" 
    TAG="BODY"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" 
  http-equiv="Content-Type"/>
<title>music_autobio-0000-include-nav.html</title>
<link rel="stylesheet" href="0_master.css"/>
</head>
<body>
<h3>
<a href="autobio-1940s.html">[1940s_6KB]</a> 
<a href="autobio-1950s.html">[1950s_16KB]</a> 
.
.
.
<a href="autobio-2009s.html">[2009s_8KB]</a>
</h3>
</body>
</html>

Several additional navigation "includes" have also been added.

2009/11/20   2010/04/27

Note: Currently the use of the

Display generated by function pre_code():
<!--webbot bot="Include" U-Include="file.html" TAG="BODY" -->

is the only STRICT XHTML 1.0 "violation".

2010/12/16    

I just noticed the previous .html links which have been consolidated and changed to .php links, I need to create redirect links to those pages.

2010/12/16   2011/03/11

solved: used Network Solutions facility so no redirect pages will be required. See 2011/03/11 entry below.

2009/11/24    

Hopefully, with the changes to XHTML 1.0 Strict, the site will look virtually the same on all browsers.

2009/12/05    

Finally, a working Submit Comments page!

Also, all .html page filenames (except index.php) have had "-nnkb" added to indicate the approximate file size in KB and old page filenames have been redirected to the new page filenames.

2009/12/07    

While developing secondary navigation menus using the Web Bot Page Include, I discovered that EW 3 does not contain Page Include development tools as did EW 2, so I have reverted to EW 2 until EW 3 is updated to contain Page Include development tools.

2009/12/07    

Secondary navigation has been added to all appropriate pages using Web Bot Page Includes which may or may not be XHTML 1.0 Strict compliant. It has been announced that EW 3 should be updated to include the Page Include functionality in the future.

2009/12/08    

Using the EW Tools, Compatibility Report function, I went through each page and made the required changes. But when I came up against a particular problem in which EW created HTML code which was not HTML 4.01 Strict compliant! This problem was caused by using  EW's Auto Thumbnail function which created xthumbnail code which is not HTML 4.01 Strict compliant, i.e., xthumbnail-orig-image="images/desired-image.jpg

I tried to find the solution online using Google to no avail until I found the following site and posted an inquiry:

http://www.microsoft.com/communities/newsgroups/en-us/
default.aspx?dg=microsoft.public.expression.webdesigner
&tid=1665f526-7d9b-4a17-b3c2-c0be7866bbab
&cat=&lang=&cr=&sloc=&p=1

2011/09/11: This URI is not currently working.

2009/12/08   2009/12/08+

Several people responded but none of the posted answers solved my problem especially because I needed a simple technique because of the large number of images available on my site. I also discovered that the Notify me of replies box on the page did not work and asked that someone contact me directly via email to help me solve the problem. Pat Geary was that person and has been extremely helpful in helping me solve/resolve a few problems I ran into while converting to HTML 4.01 Strict. Pat also told me that she uses XHTML for her sites. When I said I was going to try converting to XHTML, she recommended that I start with XHTML 1.0 Transitional but I went for XHTML 1.0 Strict.

2009/12/09   2009/12/11

I am trying to figure out how to keep each page heading in a fixed position while allowing the remainder of each page to scroll if necessary.

I have also added two more pages: Spiritual Quest(s) & Other Weird Stuff and My Arabian Horses.

2009/12/11: solved page heading issue with left-hand vertical fly-out menu.

2009/12/09a    

Converting FP to EW removing FP bots and extensions:

  1. On PC, copy old FP site to a new folder for EW site;
  2. Run EW and open new EW site from 1.;
  3. Open a page in Split View;
  4. Run Tools, Compatibility Reports using Current Page HTML 4.01 Transitional and CSS 2.0;
  5. Use Go To Page for each error and correct the invalid code.

This sequence can be tedious if the page contains many errors but it is very straight-forward. For my site it was definitely tedious because I had used many FP bots and extensions and was a real learning process especially regarding HTML.

I then developed an HTML 4.01 Transitional compliant .dwt file to convert my previous FP navigation to handle my header information and navigation.

I also began to make all filenames lowercase and to make some abbreviated filenames into more meaningful filenames.

Note: when developing a new site, it is important to use all lowercase filenames from the start because it can be a potential problem if a site is published to a Unix/Linux server which can distinguish between lowercase and uppercase characters in filenames. Therefore, I strongly suggest that you only use lowercase filenames. I would also suggest that lowercase HTML/XHTML tags be lowercase so as to facilitate being Strict XHTML compatible as that may be desirable at a later time.

2009/12/09b    

Converting to HTML 4.01 Strict using EW Compatibility Reports:

  1. Open page in Split View;
  2. Run Tools, Compatibility Reports using Current Page and HTML 4.01 Strict and CSS 2.0;
  3. Use Go To Page for each error and correct the invalid code.

This can be tedious if the page contains many errors but it is very straight-forward.

2009/12/09c    

Solving the xthumbnail problem using EW Compatibility Reports:

  1. First check that each image on each page has been processed using EW's Auto Thumbnail process;
  2. Run EW Tools, Compatibility Reports using All Pages and HTML 4.01 Strict and CSS 2.0;
  3. Use Go To Page for each xthumbnail error and press Delete which will delete the invalid code.

This can be tedious if the site contains many images with thumbnails but it is fairly quick and very straight-forward.

2009/12/09d    

Converting to XHTML 1.0 Strict using EW Compatibility Reports

This conversion was very straight-forward. For each HTML page:

  1. Open page in Split View;
  2. In the code area, right click and click on Apply XML Formatting Rules
    (Note: I was not aware of this functionality until Pat Geary mentioned it (thanks again , Pat);
  3. Run Tools, Compatibility Reports using Current Page and XHTML 1.0 Strict and CSS 2.0;
  4. Correct any errors.

Note: I also had tried TidyGUI which has some additional functionality and I may redo some pages using TidyGUI to format the code and some other purposes.

2009/12/11    

I gave up on attempting to make upper horizontal navigation bar in a fixed position.

I changed the horizontal navigation bar in the heading area to a left hand vertical navigation bar. I will try to modify the vertical navigation bar to remain in a fixed position while allowing the remainder of each page to scroll if needed.

2009/12/20    

I added back a few animated .gif images.

I hope to be able to add back a couple of background sound files but I need to determine how to provide a way (appropriate buttons) for the visitor to turn off the background sounds.

2009/12/21    

I finally was able to modify the .dwt file to keep the navigation display "fixed", i.e., to keep it displayed while the rest of the page scrolls! It seems to work for all browsers except IE 6.

The CSS file entry:

Display generated by function pre_code():
#id-left-nav {
  position: fixed; left: 0; top: 0; width:15%; 
  float: left; border: thin solid black; border-width:2px; 
  font-size: x-small;
}

The XHTLM .dwt file entry:

Display generated by function pre_code():
<div id="id-left-nav">
  <div>
    <ul>
      <li class="class-xsmall-blk-ctr-bdr-0"><strong>Navigation 
        </strong></li>
  .
  .
  .
  </div>
</div>

Note: this was accomplished using only CSS and XHTML without resorting to javascript or other languages!

The animated arrow .gif  animated right arrow .gif is from http://www.fg-a.com/arrows.htm.

2009/12/24    

After checking in many books and doing many online searchs looking for a simple way to use drop-down menu techniques to no avail, finally, using only CSS and XHTML and the technique(s) described in "HTML, XHTML, and CSS All-in-One Desk Reference For Dummies" by Andy Harris and Chris McCulloh  in Chapter 3: Styling Lists and Menus. book cover

I managed to cobble together the collapse of the left hand navigation menu.

2009/12/24   2010/01/27 2010/04/03 2010/04/18

I plan to convert the vertical menu to a vertical "fly-out menu".

2010/04/03: Finally, a vertical menu with horizontal fly-out, it turned out to be quite easy using info from Drop-Down Menus, Horizontal Style by Nick Rigby. It only required a couple of CSS changes! I don't know how well it works with IE before 8.0 but I will try to find out and fix it if necessary.

2010/04/18: I wanted to add a little spacing on the Navigation Menu vertical list text lines but "vertical-align: text-middle" was not Strict XHTML 1.0 and caused errors when using the Compatibility Checker. I checked online and, although quite a few solutions for doing the equivalent action were described, they were far more complex than I cared to use. Eventually I found a description that "vertical-align: middle" was the correct syntax. So I replaced all the occurrences of "vertical-align: text-middle" with "vertical-align: middle" and the Compatibility Checker errors disappeared.

I used something like the following:

Display generated by function pre_code():
<style>
.menu-navigation-line-height-center {
  line-height: 175%; vertical-align: middle;} 
</style>
</head>
<body> 
<div id="menu" class="menu-navigation-line-height-center"> 
  <ul>
    <li class=" class-medium-blk-ctr-bdr-0-bld"><strong>
      Navigation Menu</strong> 
      <a href="#">  fly-out menus are indicated by 
        <img alt="animated right arrow .gif" 
          src="images/animated-right_arrow-4kb.gif" 
          height="10" width="21"/>
      </a>
    </li>				

2010/04/23   2010/04/24 2010/05/06 2010/05/19

Two new pages added: Expression Web Stuff Books and Cooking Asian Old Downloadable books.

2010/04/24: New page added: Model Trains.

2010/05/06: New page added: Favorite Restaurants.

2010/05/19: Added recipes and drumming info items flyouts to navigation menu.

2010/05/31    

Added back the automatic sounds for the Drummer on the Home page and the Conguero on the Rumba Info page but with the ability for the visitor to turn the sounds off if desired.

Note: The use of the <embed>...</embed> code to automatically play the Drummer and Conguero sounds is the second STRICT XHTML 1.0 "violation" and it only works with IE. Other browsers may need to have the correct plug-ins if available.

2010/06/03    

Added a Cooking Equipment/Gadgets/Manuals page.

2010/06/05    

Added a couple of new recipes and reformatted several others. I will reformat all my recipes to use "list" formatting.

Renamed Asian Old Downloadable non_asian_cookbooks to Old Downloadable non_asian_cookbooks and expanded the page to include Non-Asian Cookbooks. Changed all cookbook file names to be lowercase and changed hyperlinks on the new page to be in a "list" format.

2010/06/07    

Added the Chinese Food Pyramid page.

2010/07/05    

Because I plan to use PHP and eventually MySQL, I am converting to a Unix server on Network Solutions instead of a Windows server.

Although Network Solutions technical support said the FrontPage include extensions would not work on their Unix server, apparently the include extensions and <embed>s both still work. This is great because it gives me more time to eliminate the non-Strict XHTML 1.0 FP includes and the <embed>s.

2010/07/06    

Almost all pages converted from .html to .php. Remaining pages do not require FrontPage extensions. Except for <embed> the site is now XHTML 1.0 Strict.

2010/07/06 @ 1205: I have removed the <embed> automatic audio until I can determine how to do it while maintaining XHTML 1.0 Strict.

The site is now XHTML 1.0 Strict!

2010/07/07   2010/07/08 2010/07/27 2010/07/31

I have just modified my Submit Comments page to use the

Huggins' Email Form Script - A Free PHP Email Script that Doesn't Require You to Know Anything At All About PHP.

A brief description from Huggins' website:

Huggins' Email Form Script is a free PHP script to process Web Forms, specifically those forms which accept information and send an email with that information.

Want to see an example? Go here.

It is ideal for people who don't know how to write a script, don't want to use a script that exposes their email to spambots, want more features than their current script offers or who are using FrontPage Server Extensions which are going away.

How Free Is it?

It is completely free. No cost. Some who wish to express their thanks sometimes contribute. But there is no obligation to do so.

With several fairly simple changes, I managed to make the processes XHTML 1.0 Strict.

2010/07/08: Fantastic support and follow-up from James S. Huggins! I highly recommend this product.

2010/07/27: I have received several comments and questions via the new Submit Comments page...very nice!

2010/07/31: Moved the temporary styling and other Email Form Script stuff from .dwt file to the .css file; everything seems to work just fine!

2010/07/21    

Installed Windows Vista Ultimate as precursor to installing Windows 7 Pro. It took many hours to reinstall many programs.

2010/07/27   2011/08/03

PHP (php-5.2.14-nts-Win32-VC6-x86.msi) and "essential" MySQL (MySQL-essential-5.1.49-win32.msi) installed and tests work just fine.

For some reason, yet to be determined reason the "full" MySQL (MySQL-5.1.49-win32.msi) will not work??? Probably just a matter of proper settings.

2011/08/03: This has not been a problem for quite a while after installing XAMPP.

2010/07/30    

Changed default.html to index.php; now all pages except for a few .pdf pages are .php pages. This is done just for consistency.

I will monitor the effects to see if there seems to be excessive delays because of the PHP processing of .php pages which do not contain PHP code.

2010/08/03    

After trying for a couple of weeks (on and off) to get PHP, MySQL and phpMyAdmin working on my development PC; removing and reinstalling PHP and MySQL many times to no avail. I downloaded and installed XAMPP Windows 1.7.3 and now PHP, MySQL and phpMyAdmin all work correctly.

2010/08/21   2010/08/31 2010/09/14

Changed navigation so a narrow about 3em wide Navigation Menu button/bar is displayed on each page and, when hovered over, the previous 20em wide Navigation Menu pops out and functions as before.

The result of the new menu system is to provide a wider screen display of the site information. It took me a while to make it work properly and required changing the margins for the menu content to be set to 0px.

2010/08/31: Still trying to add some animation to this menu button/bar to draw attention to it!

2010/09/14: Completed flashing black & white animated gif of Navigation Menu button/bar.

2010/08/23    

Installed Windows 7 Professional. It took many hours to reinstall many programs. Some problems with getting Windows Live Mail to work and retrieving old emails and contacts.

2010/08/23   2010/08/30

Received and setup new HP6500 All-In-One printer to replace my trusty old HP6110 printer because the HP6110 lost major functionality under Windows Vista & Windows 7.

HP6500 had problem, i.e., PC would not boot...kept getting a USB mass storage error...HP online chat helped to fix the problem.

HP6500 now works great.

2010/09/14    

Completed flashing black & white animated gif of Navigation Menu button/bar.

2010/11/29    

Inserted Tea & Coffee and Favorite Restaurants pages into Cooking pages.

Tweaked the Submit Comments page to help avoid spam comments of which I have received a few.

2010/12/03    

After a discussion with James S. Huggins ( Huggins' Email Form Script - A Free PHP Email Script that Doesn't Require You to Know Anything At All About PHP) regarding the effect of flashing items on people with epilepsy, I have removed the animation from navigation menu and replaced with a non-animated menu until I can figure out how to slow the flash rate down to about 1 flash per second.

James also mentioned that "experts" say that centering of text on a page is less effective than left justification. I will look into left adjusting all text except for headers/headings.

2010/12/03   2010/12/04

I managed to get the Submit Comments page aligned left!

Also I fixed all page XHTML titles to be the same as the titles on each page.

2010/12/07    

Began to develop a new mySQL book catalog page.

Extracted author, title, index data from ReaderWare as a CSV file.

Created a test MySQL database with a test table (test-table) using myphpadmin via XAMPP.

Googled for info regarding displaying a MySQL database; found many code examples and tried to make them work to no avail.

2010/12/09 3 ENHANCE  

Added Site Map page and investigating several site map generation programs.

2011/09/06: I apparently did not followup with the site map page. I may implement this later.

2010/12/10   2011/09/06

I copied and modified the code by Sergey Skudaev at http://www.configure-all.com/display_any_table.php and finally got the table to display...the problem was using hyphens in table name...I changed the underscores in table name (test_table) to hyphens and desired code worked!

The next task is to figure out how to migrate the test database to my site host (Network Solutions). I would prefer to have the database migrate with new site code if possible. 2010/12/??: Migration done using myPhpAdmin Import.

2010/12/10   2010/12/11

Develop MySQL tables and create a generalized catalog.php page to handle all tables automatically based upon the actual characteristics by passing tablename, sortcolumn, and sortorder asc/desc as URL parameters

Created test database on Network Solutions and imported test table data.

I just figured out code which allows me to connect to the MySQL database both when running on local host and when running on the remote host on Network Solutions; example of code:

solved: PHP - Connect/select local/remote MySQL database based on where code is running
Display generated by function pre_code():
$dbhostname = $local_dbhostname;
$dbuser = $local_dbuser;
$dbpassword = $local_dbpassword;
$dbname = $local_dbname;
if (mysql_connect($hostname, $dbuser, $dbpassword) 
      === false) {
  $hostname = $remote_hostname;
  $dbuser = $remote_dbuser;
  $dbpassword = $remote_dbpassword;
  $dbname = $remote_dbname;
  mysql_connect($hostname, $dbuser, $dbpassword) or 
    die("Unable to connect to the server error="
    .mysql_error());
    }
mysql_select_db($dbname)
    or die("Unable to select the database error="
    .mysql_error());

PROGRESS!!!

I doubt I will be able to migrate new database data to Network Solutions as part of EW FTP update process because of where Network Solutions locates databases but I may look into developing some PHP code to do the migration. 2011/02/13: issue resolved some time ago by using phpAdmin on remote server.

I have converted all the MySQL functions to MySQLi_ functions and cleaned up the code and page display which required modifications to the above example.

Next step is to create code which will allow user to sort on desired column.

2010/12/10   2010/12/12

After spending a lot of time doing a lot of Goggling to find out how to allow a site visitor to select which column upon which to sort and trying other folks code and failing to make any of it work properly, I found, kind of by accident, someone using the $_GET function to get a URL parameter. I thought about it and came up with my own way to allow a site visitor to sort upon the column of their choice.  My technique involved adding links to the page which reference the URL of the page but with column sort parameters. The $_GET function gets the column sort parameter (if not present, a default value is used) and uses it in the MySQLi_query function ORDER option.

2010/12/10   2010/12/14

Much more work...generalized the test table display page to work with both HTML-CSS books and LMC CDs and additionally all cataloging databases with ascending/descanting sorting on Authors/Artists and Titles by modifying the URL parameters!

There is a problem with using the RW CSV extracts and loading importing them into MySQL tables...seems to be some characters in the extract which cause the import to terminate. This will most likely require some editing of the RW databases to change those characters.

Although the new generalized page is XHTML 1.0 Strict, I will hopefully get to cleaning up the code CSS 2.1 clean by removing various <center>, etc. usage!

If someone shows interest in my techniques/code, I may add examples here on this page and provide links to them so they can appear in in search engines.

2010/12/10   2010/12/17

Several major problems have been solved. After cleaning up some ReaderWare data last yesterday and today including replacing field trailing quotes and the matching quotes in fields with apostrophes (because "xxx ""zzz""", fields in the RW .CSV export files cause field count errors in the MySQL phpMyAdmin import processing...I will try to figure out why this happens and go back and change the apostrophes back to quotes in the ReaderWare data), all the current database tables (asian_non_asian_cookbooks, non_asian_cookbooks, webdev_books, lmc_audio, and lmc_video) are working in the test and the production environments.

I figured out how to use PHP URL redirection so I can replace several old pages with the new cataloging process while allowing the previous links which are in search engines to automatically go to the new pages. After spending a lot of time trying to make it work on my local host to no avail, I tried it on my site and I discovered that the PHP redirection works on the site host but not on the local host. I may or may not try to make it work identically on the local host and the site host when I get some more time because all other processes work identically on both the local host and the site host.

Additional work to be done includes

  • expanding the number of columns in the in the database tables
  • cleaning up more of the data in the ReaderWare databases
    (2011/01/02: no cleanup necessary)
  • replacing some current links and adding new links to the new cataloging process where appropriate in the existing pages including a link to LMC Video on the Drumming Info page
  • completing the ReaderWare data entry for the new lmc_video table - 2010/12/19 began cataloging of LMC videos
  • add cooking video table 2010/12/26: done!
  • modify URL redirection to work on local host AND remote host - 2010/12/2 by using HTML redirect instead of PHP header()
2010/12/10   2010/12/18

Cleaned up the RW, AW and VW data replacing doublequote characters with &quot; characters until ReaderWare is fixed.

I modified the generic catalog page by adding the appropriate "group" navigation .inc file and a PHP .inc file which copies the information which was previously shown of various pages. This required that I create appropriate .inc pages containing the previously shown information, The tablename parameter is used to determine the correct .inc file.

I have also added the new LMC Video links.

Some adjustments need be done to left justify the appropriate text in the aforementioned .inc files 2010/12/23 done.

2010/12/10   2010/12/19

By modifying the table data in MySQL to include the triple doublequote string, doing a phpMyAdmin extract, I was able to determine the the triple doublequote strings problem is caused by the lack of an escape character.

Began cataloging my LMC Video collection, 39 entries so far done with Auto Catalog which is about 50% of the collection...the remainder will have to be manually processed.

Discovered that "á" and "é" characters in the MySQL tables, when retrieved by the catalog page, are displayed as small square symbols; I think this has to do with character encoding; I need to figure out how to fix this problem. 2011/01/20: solved!

Maybe create a table-driven URL redirect function to use in in the old page to new page redirection pages

2010/12/10   2010/12/20

Discovered major logic error in using table sorting options , i.e, the following:

Sort by Author Sort by Title
ascending descending ascending descending

sometimes changes to the following and the page will get execution errors:

Sort by Author Sort by Actor1
ascending descending ascending descending

i.e., some Sort by Title hyperlinks do not work giving a non--fatal MySQL query error...need to distinguish book author/title, audio artist/title and maybe video title/actor1 from each other

2010/12/10   2010/12/21

After spinning my wheels for many hours, I finally solved the Sort by Title problem!

Also replaced the old links to various books to use the new catalog page.

Replaced some ": " with " - " in several LMC Video titles (possible problem with remote file import

2010/12/17 3 ENHANCE  

Maybe add LMC books table

2010/12/17 3 ENHANCE  

Maybe add non Latin music books, audio and video collections.

2010/12/17 3 ENHANCE  

Maybe add model train book and video tables.

2010/12/17 3 ENHANCE  

Maybe add Spiritual Quest book and video tables.

2010/12/17    

Fix the new XHTML 1.0 Strict incompatibilities so code is again compatible.

2010/12/17   2011/03/15

Fixed the XHTML 1.0 Strict incompatibilities.

2010/12/26    

Added a new cooking videos table and appropriate links to the Navigation Menu and to cooking_nav.inc.

Tweaked the Navigation Menu for clarity and consistency.

2010/12/26    

Lost "connection" to Apache and MySQ, i.e., the Expression Development Server comes up instead of Apache/MySQL and cannot preview pages which reference the MySQL database.

2010/12/27    

2010/12/27: Still working on problem for many hours, reinstalled EW3 and SP1 & SP2, reinstalled XAMPP to no avail.

2010/12/29: Three days of wheel-spinning but I finally got it to work again!

Two changes to Apache httpd.conf:

  • DocumentRoot "F:/!!!expressionweb_dmreed.com" (note: changed to H://expressionweb_dmreed.com)
  • <Directory "F:/!!!expressionweb_dmreed.com"> (note: changed to H://expressionweb_dmreed.com)

and

One change to EW Site, Site Settings, Preview to use custom URL: http://localhost/

Using many $_SERVER calls as part of debugging, I am able to see that Apache was indeed the local server.

2010/12/30: To make my site more Unix compliant

  • reinstalled XAMPP to f:/xampp and redid above changes
  • renamed !!!expressionweb_dmreed.com directories to expressionweb_dmreed.
    2011/??/??: renamed to dmreed.com
2010/12/17   2011/03/19 Updated

2011/07/21
Updated

As I was writing this entry, I just discovered that these changes cause a problem with  displaying Apache Admin in the XAMPP Control Panel (Apache Friends Edition). I am sure there is a setting somewhere to fix the problem but, for now after all these days/hours,  it is time to get some sleep!

2010/12/?? Using VHOSTS is probably the solution.

Partially solved 2011/01/09: VHOSTS works but the problem with Submit Comments Thank You does not come up? Probably has to do with the localhost:nnnnn

solved 2011/01/14: Reinstalled apache 1.7.3 and with original httpd.conf, httpd-vhosts.conf, and php.ini.

solved: Win7, Apache & Virtual Hosts (VHOSTS) using port numbers for different localhosts

After many attempts using the techniques suggested by many online references with no success, I finally found the following TUTORIAL: Setting Up Virtual hosts on Vista. It is simple, straight-forward, and it WORKS!

Additionally, I had to adjust VHOSTS to use separate ports for h:/dmreed and h:/devsite. I found the solution at VirtualHost Examples: Running different sites on different ports showed how to do it!

  1. I changed h:\dmreed.com and h:devsite.com to h:\8081dmreed and h:\8082devsite so http://dmreed.com and http:/localhost/dmreed.com would not be "confused" with each other and VHOSTS would work correctly
  2. Added the following to C:\Windows\System32\drivers\etc\hosts
    • 127.0.0.1 localhost
    • ::1 localhost
    • 127.0.0.1 8081dmreed
    • 127.0.0.1 8082devsite
  3. Added the following to H:\xampp\apache\conf\httpd.conf after the line "Listen 80":
    • Listen 8080
    • Listen 8081
    • Listen 8082
    • Listen 8083
    • Listen 8084
  4. Added the following to H:\xampp\apache\conf\extra\httpd-vhosts.conf to create named VHOSTS for h:\dmreed and h:\devsite:
    • <VirtualHost 127.0.0.1:8081>
      • ServerName 8081dmreed.localhost
      • DocumentRoot "H:\8081dmreed"
      • <Directory "h:\8081dmreed">
        • Options Indexes FollowSymLinks Includes ExecCGI
        • AllowOverride All
        • Order allow,deny
        • Allow from All
      • </Directory>
    • </VirtualHost>
    • <VirtualHost 127.0.0.1:8082>
      • ServerName 8082devsite.localhost
      • DocumentRoot "H:\8082devsite"
      • <Directory "h:\8082devsite">
        • Options Indexes FollowSymLinks Includes ExecCGI
        • AllowOverride All
        • Order allow,deny
        • Allow from All
      • </Directory>
    • </VirtualHost>
    • .
    • .
    • .
    • Additional Named Virtual Hosts as needed...ports 8083, 8084, etc.
  5. For EW3/EW4, I made the following change to Site/Site Settings/Preview/Preview using custom URL for this website:
    • http://localhost:8081/    (for h:/dmreed)
    • http://localhost:8082/    (for h:/devsite)

Modified the Huggins script by adding appropriate $_SERVER['SERVER_PORT'] to FormNextUrl.

Now everything works: the Apache Admin and the Submit Comments Thank You page!

2010/12/17 2 DEFER  

Accessing the Huggins script on the remote host is still required. Fixing this "problem" will probably require setting up email on the local host.

DEFER

2010/12/17   2011/03/04

Added 2 more virtual hosts using ports 8081 and 8082.

2010/12/31    

After many days/hours of testing and trial and error, I finally found the solution to the problem of the string """, in ReaderWare export files which happens when a ReaderWare field has a trailing quoted string. This string causes an invalid field count when phpMyAdmin imports the ReaderWare export using the CSV option.

The solution is to use the phpMyAdmin import option "CSV using Load Data" instead of the "CSV" option.

Nice way to end the year!

2011/01/02    

Finally, I managed to develop PHP code to allow the optional display of product_info/album_info/video_info and my_comments on catalog pages! This included my first use of PHP OOP which I copied from the internet:

Display generated by function pre_code():
//Get fields (columns) names
$xmeta = mysqli_fetch_field($xresult);
$xfields_array[] = 
  <span class="background-yellow">$xmeta->name</span>;
$xfield = $xfields_array[$i];

I definitely will have to study up on OOP!

I reset the preferences in ReaderWare to use Last, First name formats and it works great in the catalog page!

I tweaked the names of .inc files to use all underscore characters rather than some hyphen characters. I have tried to check all affected pages and they look alright but only time will tell if I managed to make all the changes correctly.

Previously working redirect for lmc-cds.php no longer working. 2011/01/08: Maybe working again?

2011/01/10: using my_redirect() works! Need to fix all redirect pages. 2011/01/22: Done.

Widen Navigation Menu button slightly. 2011/01/22: Done.

Raise all fly-outs one or two lines EXCEPT Navigation Menu fly-out. 2011/01/?? Done.

2011/01/03    

Created a new partition on my HD for Expression Web, ReaderWare, and XAMPP. Renamed folders starting with expressionweb_dmreed.com to expressionweb_dmreed.

2011/01/04    

After adding new partition, CHKDSK runs with every boot. Goggled for reasons. Ran FSUTIL DIRTY QUERY C: and got message that C: was dirty. Tried many of the various techniques described in the Google search and none of them has reset the dirty bit. But CHKDSK no longer runs on every boot. Would like to reset the dirty bit but it will have to wait! froney face

2011/01/04   2011/03/02

Replacing the old HDs with the larger HDs and using Partition Wizard to copy the old disk to the new disk seems to have solved the dirty bit problem smiley face smiley face

2011/01/06    

Began replacing .dwt usage with PHP INCLUDES and removing the large site descriptive text except on the Home Page. Some pages will continue to use the .dwt and all its text as I continue to convert all the pages. Page name will be replace the previously used CSS "id-right-page-container-hdr" which will further reduce the text on a page.

2011/01/06   2011/01/09

All pages completed and working but Submit comments pages need drastic revision although actually working. 2011/01??: done.

Have to fix character encoding to allow special characters ASAP!

Note that using PHP functions instead of EW .dwt does not allow display of actual page layout but the EW Preview button does display the page. This will take some getting used to but I think the effort is worthwhile.

2011/01/06   2011/01/10

Display Page/File & MySQL Table Last Updated Date/Time Using Local Date/Time On Local and Remote Hosts

solved: Display Page/File & MySQL Table Last Updated Date/Time On Local & Remote Hosts
Several of the following entries are required to see the entire sequence of changes to produce the final solution and they are prefixed with ***.
  • *** 2011/01/10: Created file 00_last_updated.inc so I have an easy way to update the information and which consists of the single line:
    • Site Last Updated on 2011/01/10 @ 0500
  • and figured out how to use it in the my_set_title() function using
    • implode (file('00_last_updated.inc') )
  • which displays as
    • Page Last Updated: 20110211 @ 2311
  • *** 2011/01/11: Redesigned the overall design of displaying pages by replacing the .dwt with a PHP function $html_ver = my_dwt_equiv.php used as follows:
    • my_dwt_equiv($page_name_string,$catalog_last_updated)
  • which replaces but uses the former my_set_title and header display functions and the my_footer was modified appropriately.
  • *** 2011/01/11: Previously I had figured out how to use the date() function to get the page last updated date from the page file itself instead of using the 00_last_updated.inc file:
    • $date_last_updated = date("Ymd @ Hi", filemtime($_SERVER["SCRIPT_FILENAME"]));
    • .
    • .
    • $update_dates = 'Page Last Updated: '.$date_last_updated.;
  • which displays as
    • Page Last Updated: 20110211 @ 2311
  • But I discovered last night that it displayed correctly on the local host but not on the remote host where it displayed what I think is the remote server date. I just now figured out how to get the page file date and display it as PST on both the local and remote hosts:
    • date_default_timezone_set('America/Los_Angeles');
    • $date_last_updated = date("Ymd @ Hi T", filemtime($_SERVER["SCRIPT_FILENAME"]));
    • .
    • .
    • $update_dates = 'Page Last Updated:&nbsp;&nbsp;'. $date_last_updated;
  • which displays as
    • Page Last Updated: 2011-02-11 23:11:15
  • which displays as
    • Catalog Database Last Updated: 2011-01-25 01:54:22
2011/01/06   2011/02/12

*** Additionally, I finally got the MySQL table last updated date ($catalog_last_updated) to work using the following:

  • // get table last updated date
  • $last_updated_result = array();
  • $last_updated_query = 'SELECT UPDATE_TIME FROM information_schema.tables'
  •                                       WHERE TABLE_SCHEMA = "'.$dbname.'" AND TABLE_NAME = "'.$tablename.'"';
  • $last_updated_result = mysqli_query($db_link, $last_updated_query) or die(mysql_error());
  • while($row = mysqli_fetch_array($last_updated_result)) { $catalog_last_updated = $row['UPDATE_TIME'];}
  • .
  • .
  • .
  • echo 'Catalog Database Last Updated: '.$catalog_last_updated.';
2011/01/06   2011/02/12

*** Remote host MySQL table last updated date displays remote host last updated time.

Need to see if I can get it to display as local host time (PST).

Also need to check when daylight savings time changes if the times also change.

Unfortunately, the display of international (UTF-8) is again not functioning.

2011/01/06   2011/02/27

*** solved: I think I have fixed the last updated date_time problem and both local and remote hosts now seem to display appropriate last updated PST date_time for pages and catalogs. Note that the remote server times differ from the local server times because the remote server files show when those files were uploaded and not when they were changed on the local server. The resolution of the problem involved the following:

  1. Convert the MySQL LAST_UPDATED to a timestamp format using strtotime()
  2. For the the remote server, subtract 3600*3 from the timestamp
  3. Finally convert the timestamp back to the desired display string format using date()
2011/01/06   2011/01/20

UTF-8 problem solved!

The function $html_ver = my_dwt_equiv($page_title,$catalog_last_updated) does everything a .dwt does except the EW Design View only shows the "page content" but without the CSS formatting.

Inserting the following at the top of each page just before the "page content code":

Display generated by function pre_code():
<?php include '0_my_php_functions.php';
my_dwt_equiv ('page_title',$catalog_last_updated); ?>

creates the appropriate page XHTML "headers" including <title> and my navigation menu and "page headers" including a date last updated obtained from a file (2011/01/11: see above for new last updated date processing) which is applied on every page :

Display generated by function pre_code():
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; 
  charset=utf-8"/>
<link rel="stylesheet" href="0_master.css"/>
<style type="text/css">
</style>
<title>My Mainly Musical Autobiography Overview</title>
</head>
<body>
<span class="right-container">

and a my_footer($html_ver) function which is inserted at the bottom of each page after the "page content code" and creates:

Display generated by function pre_code():
</span class="right-container"> 
</body>
</html>

If anyone is interested in the technique using $html_ver = my_dwt_equiv() and my_footer($html_ver), you may contact me via the Submits Comments Page for details.

2011/01/14   2011/01/20
2011/09/09

The international character (UTF-8) problem has been solved. Description of solution may be added later. "Solution involves adding the following at the bottom of page code after my_footer($html_ver) and appropriate PHP includes:

Display generated by function pre_code():
<!-->
<meta content="text/html; charset=utf-8"...
...http-equiv="Content-Type"/>
<!-->

International characters display OK on coded pages but phpMyAdmin does not import them into MySQL. Using phpMyAdmin, if I add "á" to a field it stays and displays in MySQL but it does not display when catalog.php displays the field. So there are a couple of problems: importing into MySQL and the catalog.php display.

2011/01/20 solved!

Redefined a couple of fields from VARCHAR to VARBINARY using phpMyAdmin and catalog.php displays international character(s) correctly. So the problem is importing them into MySQL.

Display difference of page header between local and remote hosts. Local host displays as desired but remote host is off in spacing.

2011/09/09: Removed the meta from the footer() code and everything seems to work OK!

2011/01/14   2011/01/15

Kind of quirky, I just fiddled around with different ways of displaying the page header and finally found a solution. I do not know why there was a difference???

2011/01/16    

My site has been and continues to be developed on a PC with Win 7 with the US-International Keyboard option and using:

  1. ExpressionWeb 3 (EW) for site development and for change management and FTPing to my remote host;
  2. All pages and includes are .php files;
  3. Apache, PHP and MySQL were installed using xampp-win32-1.7.3.exe
  4. The following has been added to the bottom of each .php page (except for 00_last_updated.php which contains only a text string) after the closing "?>" to allow EW to save the files properly for the display of UTF-8:
    • <!-->
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
      <!-->
2011/01/17    

Per a suggestion by James S. Huggins (see my Submit Comments Page), I downloaded and ran xenu link and discovered many, many link problems and inconsistencies on my site although, except for a few broken external links which I removed, the site performed as expected. It took me quite a while to find all the errors because EW Find does not find strings in the PHP quoted XHTML! I highly recommend this useful and FREE program!

XENU can create a very large report file which begins with "TGH" and can be found by entering "%temp%"  in the browser URL box.

2011/01/17    

How To Make All Solid Borders Around Form Input and TextArea

solved: All Solid Borders Around Form Input & TextArea "Boxes"

After a lot of searching, I finally found the way to make all solid borders around the Form Input and TextArea "boxes" on the Submit Comments Page by adding the following to the CSS file:

input     {border-color: green; border-style: solid; border-width: thin; padding: 3px; }

textarea {border-color: green; border-style: solid; border-width: thin; padding: 3px; }

2011/01/18    

Found a javascript (sorttable.js) to sort tables by clicking on the header of a column at kryogenix.org/code/browser/sorttable/#sortonload. I added the following to the HEADER code in $html_ver = my_dwt_equiv.php:

Display generated by function pre_code():
<script src="sorttable.js"></script>;

To make XHTML table columns sortable, just add sortable as a class for the table!

2011/01/19    

Finished the cleanup of the LMC-Annotated table and made the columns sortable.

Just received Wicked Cool PHP by William Steinmetz with Brian Ward wicked cool phpand on page 5 was a description of how to do "zebra stripping" when displaying the rows from a MySQL table. Using the described function and CSS, I have added "zebra stripping" to catalog.php generated displays and other hard-coded tables!

I also added

Display generated by function pre_code():
error_reporting(E_ALL);

to the top of my_php_functions.php which is included at the top of every page and displaying every page only catalog.php had one "undefined variable" which was was easily fixed! I really expected to have many errors smiley face

2011/01/20    

phpMyAdmin Import of EXCEL UTF-8 CSV files with fields terminated by comma and fields enclosed by doublequote

solved: phpMyAdmin Import of UTF-8 CSV files

I finally solved my problem of using phpMyAdmin Import to load UTF-8 data into MySQL.

I created a PHP function convert_csv_to_utf($csv_file_name,$utf_file_name) which reads and encodes $csv_file_name (xxx.csv) and  writes $utf_file_name (xxx.utf).

The xxx.utf is loaded into MySQL using phpMyAdmin Import. When the data is retrieved from MySQL, each field is again encoded before displaying.

The functions involved are as follows:

  • <?php
  • function convert_csv_to_utf($csv_file_name,$utf_file_name)
    • {
    • if (file_exists($utf_file_name))
      • {
      • echo "<br / >".$utf_file_name." exists";
      • unlink($utf_file_name);<br />
      • if (file_exists($utf_file_name)) {echo $utf_file_name. " not deleted<br />";}
      • else {echo $utf_file_name." deleted<br />";}
    • else { echo $utf_file_name." does not exist <br />"; }
    • $utf8_encoded_file = read_csv_file_encode($csv_file_name);
    • write_utf8_encoded_file($utf_file_name,$utf8_encoded_file);
    • echo "<br /><br />"
    • }
  • function read_csv_file_encode($filename)<br />
    • {
    • //set_time_limit(0); only needed if timeouts occur<br />
    • $utf8_encoded_file="";
    • $file = fopen($filename, "r");
    • $utf8_encoded_file = utf8_encode(file_get_contents($filename));
    • fclose ($file);
    • return $utf8_encoded_file;
    • }
  • function write_utf8_encoded_file($filename,$utf8_encoded_file)
    • {
    • $file=fopen($filename,"w");
    • fwrite($file,$utf8_encoded_file);
    • echo $filename." written<br /><br />";
    • fclose($file);
    • }
  • ?>

In the page "display" code, something like the following is used:

print("<td>".utf8_encode($row[$i]). "</td>");

My largest table currently has about 900 rows and the function is almost instantaneous so I am not aware of how long this function would take for very large tables.

2011/05/29: many modifications/additions have been made to the processes, I may replace the above with the newer code when I get some time.

2011/01/27    

Working to see if using SESSION variables instead of URL parameters for catalog.php will work and leave "clean" URLs.

2011/10/??: Changed so only the $html_ver and $tablename are passed. Now using 00_javascript-table-sort.js for catalog column sorting.

2011/01/27   2011/02/08

Working on making user "screen resolution suggestion" line conditional based upon the user's screen resolution.

2011/02/08: Solved by using a JavaScript from:

Screen resolution detection and notification script © Dynamic Drive (www.dynamicdrive.com)

For full source code, installation instructions, 100s more DHTML scripts, and Terms Of Use, visit dynamicdrive.com

I modified $html_ver = my_dwt_equiv($page_title,'','','best_viewed') to conditionally insert/run the script if the 4th argument is "best_viewed" or 'best_viewed'.

screenres() has been added to 00_javascrip_lib.js along with the other javascript functions which will reduce the amount of code in my_dwt_equiv() as soon as I figure out how to use it as within a PHP function.

I am still trying to figure out how to change the font/color/size of the document.write() output.

2011/01/27   2011/02/10

Needed to understand javascript double quote escape; easy changed " to \" in output string for HTML class="...".

2011/01/27 3 ENHANCE 2011/02/08

Created a best_viewed_msg()  function which I may try to modify to use the actual screenres.js file.

2011/01/27 3 ENHANCE  

Trying to see if  "Liquid Layout" (see Matthew James Taylor "ultimate-3-column-holy-grail" and other liquid/flexible layout online resources) will make pages display better using various screen resolutions.

2011/01/27   2011/02/10

Received "Flexible Web Design: Creating Liquid and Elastic Layouts with CSS by Zoe Mickley Gillenwater book cover flexible web design which looks like it should help with my site redesign!

2011/01/05 2 DEFER
 

Installed Huggins' latest script update and created a new Submit Comments Page.

Everything works except when I try to run the new script using the localhost copy of the script????

2011/01/05 2 DEFER 2011/01/07

I spent time checking what the Huggins' script actually sends to the SMPT server and it looks to be OK. The problem seems to be with the SMTP server smtp.west.cox.net and how it handles the more complex email addresses. For the now, I will access the script on the remote server.

DEFERED: Setup email on local host.

2011/01/05   2011/02/13

Made appropriate changes to httpd.conf and httpd-vhosts.conf to setup named VHOSTS for

Display generated by function pre_code():
h:\dmreed.com and h:\devsite.com

Modified the Huggins script by adding appropriate $_SERVER['SERVER_PORT'] to FormNextUrl.

See solved - Win 7, Apache 1.7.3 & Virtual Hosts (VHOSTS) for details.

2011/02/10 2 DEFER  

Look into making "mobile device friendly".

Will probably have to wait until I get a mobile device. smiley face

2011/02/21    

Easy Way To Check If Javascript Is Enabled In Client/User Browser

solved: Easy Way To Check If Javascript Is Enabled In Client/User Browser
Based up an online post by Azam Sharp ( http://aspadvice.com/blogs/azamsharp/archive/2007/09/30/Check-If-the-JavaScript-is-Enabled-on-the-Client_2700_s-Browser.aspx) which describes a very easy way to check if the client/user browser has JavaScript enabled, I added his JavaScript function to my JavaScript library and added code to the my_dwt_equiv() function to display a message if JavaScript is not enabled.
2011/03/01 2011/10/21

Display Page Appropriately When User Forces Black Background

solved: Display Page Appropriately When User Forces Black Background

A friend who uses black ground as a browser override pointed out that he could not see the black text on my pages.

I added the following to my CSS file:

Display generated by function pre_code():
* {background-color:white}

and uploaded the changed file to production. He now sees a black background with white text!

I think this has solved this particular accessibility problem.

2011/10/21: Disabled this CSs code and now the tr:next-of-type works for IE8 and greater!

2011/03/02    

Replaced both 350GB drives with 2TB drives...they might last longer than I do smiley face

Using Partition Wizard to copy old disks to new disks seems to have cleaned up the dirty bit problem! smiley face smiley face

2011/03/04 2 DEFER  

Began looking at HTML 5 and CSS 3. It looks like it will be a very major project to convert the site. Deferred indefinitely.

2011/03/08    

solved: Modified page header(s) to left align some paragraphs by changing <span class=... to <p class=... and adding margin:0 to definition of each associated task class in 0_master.css.

2011/03/08    

Removed <?xml version="1.0" encoding="utf-8"?> line because the ?> terminated <?php and this is not desireable. I may look into how to reinsert this line at a later date.

2011/03/08   2011/03/12

Actually quite easy, I should have thought of it earlier. I just used the following or something similar:

     echo '<?xml version=\"1.0\" encoding=\"utf-8\"'.'?'.'>';
2011/03/08   2011/03/15

At the recommendation of Jeffrey Zeldman in his book "Designing with Web Standards", I have removed this line.

2011/03/09    

Just discovered that the Submit comments page has alignment problems on local host but looks fine on remote host.. Need to fix ASAP.

2011/03/09   2011/03/14

I just noticed that the localhost Submit Comments alignment problem has disappeared.

I have been doing some "minor" tweaking but I do not know which tweak fixed the problem!

2011/03/09   2011/03/15

Submit Comments alignment problem occurs again.

2011/03/09 3 ENHANCE 2011/03/18

Submit Comments alignment problem fixed by using a table.

But I will work on using CSS instead of a table for alignment.

2011/03/11    

Using Network Solutions "customerror" facility, I have added customized HTTP 404 error handling to provide the link to the Home Page.

Redirect pages will no longer be necessary!

This has allowed me finally to change many page names for consistency and revised meaning. Any changed page names will get the "redirect" message until the various search engines have removed the old names.

2011/03/11    

ACCESSIBILITY

Beginning to work on Accessibility issues:

  • Modified Navigation Menu to use actual text instead of a .gif image for the text "NAVIGATION MENU";
  • Changed text to black with white background...not as "pretty" but should improve accessibility.

Came across tawdis.net/ingles.html (link seems to be broken) which checks accessibility of pages. I will use it periodically to see if I can make additional accessibility changes to the site.

2011/03/11   2011/03/14

Discovered that after adding "font-family: Helvetica, Arial, sans-serif;" the ascending/descending "arrows" used by sortable.js displayed as 5 and 6 (WinDings font numbers?).

After some online searching, I found the HTML entities for ↑ (&uarr;) and ↓ (&darr;) and modified sortable.js to use them rather than the WinDings font. This should allow proper display on computers which do not have WinDings.

ENHANCE: Now the arrows do not refresh appropriately regarding up and down. I will look into this problem as I study and understand JavaScript more.

2011/03/11   2011/03/15 2011/10/22

↑ (&uarr;) and ↓ (&darr;) problem fixed.

ENHANCE: Cannot figure out how to make &uarr; and &darr; bold.

2011/10/22: Unable to find how to bold &uarr; and &darr; so I replaced ↑ with ▲ (&;#x25b2;/&#9650;) and ↓ with ▼ (&#x25bc;/&#9660;).

2011/03/12    

solved just a few tweaks/corrections and site is again HTML 1.0 Strict compliant .gif and css 2.1 compliant .gif.

Just installed IE 9...so far site looks good with IE 9.

After discovering that IE 9 displays my site slightly differently than other browsers, especially regarding font size, I removed IE 9 and am now using IE 8 again. frowney face

2011/03/12   2011/03/16

Reinstalled IE 9 with the official MS release and the display differences seem to have disappeared.

I will use the following on a regular basis to verify that any site changes will still validate as XHTML 1.0 Strict and CSS 2.1:

2011/03/12 2 DEFER 2011/03/17

IE 9 displays OK but the Print Button results in pages printing upside down, i.e., printing on 3-hole paper has the holes on the wrong side.

I uninstalled IE 9 AGAIN! And now, I will continue to use IE 8.

This is getting ridiculous, I guess I will have to wait until MS fixes the problem.

2011/03/15 3 ENHANCE  

I have modified the entire site to use new CSS elements and to remove deprecated/obsolete tags, e.g., <center>...</center>, etc. this is in preparation for making site more accessible by using % or em font sizing.

More work to be done to remove <span>...</span>, etc., to separate semantics, style and structure.

I also need to find and replace appropriate display indentations/lists with <ul>...</ul>, etc.

ENHANCE: I need to revise the use of <h1>...</h1> and <h4>...</h4> in my header and elsewhere to use new CSS classes.

Added new 3rd column for subsequent actions.

2011/03/15   2011/03/19

Use of my modified <h1> thru <h6> tags has been changed to use classes hdr1 thru .hdr6 which are currently applied only to <div> blocks.

2011/03/18    

Created function my_db_connect(&$debug,&$dbhostname,&$dbname,&$db_link,&$dbuser,&$dbpassword) to be used in catalog.php and my_footer to facilitate the following.

Added xx-small font line to the bottom of my_footer($html_ver) which displays the current system configuration including: the XAMPP release version, Apache Version, PHP Version, MySQL Version, and the my_functions.php and 0_master.css last updated dates using:

  • function mysql_ver()
    • {
    • $dbhostname = '';
    • $dbname = '';
    • $db_link = '';
    • my_db_connect($debug, $dbhostname, $dbname, $db_link, $dbuser, $dbpassword);
    • $rs = mysqli_query($db_link, "SELECT VERSION()");
    • $version = mysqli_fetch_row($rs);
    • return $version[0];
    • }
  • function apache_ver()
    • {
    • $version = explode(" ",$_SERVER["SERVER_SOFTWARE"],3);
    • return ($version[0] . " " . $version[1]);
    • }
2011/03/18   2011/10/16

Chrome, Foxfire. Opera and Safari display site differently than IE regarding font size.

Need to make font-size "relative".

2011/10/16: Problem to to have resolved without making font-size "relative".

2011/03/19    

I just discovered that the site validation I was using http://validator.w3.org was only validating the home page. I found a site which validates the entire site. My site is no longer XHTML 1.0 Strict at this time. I will work to make it validate again.

I have enhanced my_php_functions() by adding a new first argument which specifys the (X)HTML version. The default is XHTML 1.0 Transitional and each page will be changed to be XHTML 1.0 Strict when its validation clears.

The Submit Comments page is and will probably remain specified as HTML 4.01 Strict because it uses the Huggin's external software package.

2011/03/19     All pages checked. Some pages need more work. The Submit Comments page needs special considerations.
2011/03/19   2011/03/21

2011/05/16

2011/03/21: All pages checked. Most pages are XHTML 1.0 Strict and CSS 2.1 compliant except for the Submit Comments page. The appropriate images for are displayed on the first page header line.

Note: The code of the catalog.php program is XHTML 1.0 Strict compliant but the code it generates from the RW data may include "&" characters which may make the generated page code XHTML 1.0 Strict non-compliant but I will allow the catalog display to indicate XHTML 1.0 Strict compliant.

It may be possible to scan either the RW input files or the MySQL query results and replace the "&" characters with "&amp;"s.

The Huggins Submit Comments page form code and associated script may be replaced with XHTML 1.0 Strict code and script.

2011/05/16: solved! See 2011/05/16 entry below.

2011/03/23    

Installed EW 4 SP1.

I would like to think that my numerous emails to MS about EW updates not being part of MS Update helped propmt MS to correct this issue.

2011/03/29    

Upgraded internet connection to 26MB download and 3.5 MB upload. I have done a couple of tests and it is faster but I have not achieved those speeds, i.e., I got about 20MB max download and 2MB max upload. But I think it is faster than before!

2011/03/30    

Windows 7 Clearing Dirty Bit

solved: Windows 7: Clearing Disk Dirty Bit

I used the following CMD and it seems to have solved the "dirty bit":

Display generated by function pre_code():
chkdsk /f /r

 

2011/04/30    

Logitech Trackman Marble T-CH11 driver works in Windows 7 when compatibility is set to XP SP3. But previously it worked and then did not work. Currently working fine.

2011/05/02    

Made changes to my_php_functions.php, submit-comments.php, and huggins-email-form-script-v2.2.3.php to make the Submit Comments page validate including adding code to create a $breaker variable to be set to '<br>' if $html_ver = 'HTML 4.01 Transitional' otherwise '<br> />'

similarly for '<hr>' and '<hr />'

and similarly for <img termination.

Also created 00_my_navigation_menu_html.php (an HTML version of 00_my_navigation_menu.php).

2011/05/02 2011/05/16

2011/05/02: Site is no longer XHTML 1.0 Strict...many errors although pages seem to display OK. frowney face

Major work may be required especially catalog.php generated code from RW LMC-AUDIO data.

2011/05/16:

  • Tweaked Huggin's Submit Comments code
  • Modified/enhanced newest version of CSV-TO-UTF process
  • Modified RW LMC-AUDIO to remove the one remaining character validation error

Site validates as XHTML 1.0 Strict except for the Submit Comments page which now validates as HTML 4.01 Transitional.

2011/05/20    

PHP <xmp> Replacement Function

solved: xmp($arg) - PHP Replacement Function for Deprecated HTML <xmp> Tag

I created the following PHP function to replace <xmp> in several of my pages:

Display generated by
dis_func_code($html_ver,"xmp","0_my_php_functions.php")

Display generated by function pre_code():

function xmp($arg) {
  // in the following replacements:
  // the first "<" is the "less than" symbol
  // the second "<" is "&lt;"
  // the first ">" is the "greater than" symbol
  // the second ">" is "&gt;"
  // the first "&" is the "ampersand" symbol
  // the second "&" is "&amp;"

  $arg = str_replace("<","<",$arg);
  $arg = str_replace(">",">",$arg);
  $arg = str_replace("&","&",$arg);
  return $arg;
}

and it seems to have solved the deprecated HTML <xmp> tag issue and allows my pages to validate as XHTML 1.0 Strict! But will not validate as valid HTML5.

2011/05/23 3 ENHANCE 2011/05/28

2011/05/23: Redesigned and simplified site navigation to provide better accessibility. Replaced multi-level my fly-out menu with a simple one level menu. What used to be fly-out links are now simply the previously existing page navigation links on existing pages.

Would like to improve how "page container" relates to navigation menu and page display to  prevent horizontal scrolling.

2011/05/28: Temporarily fixed the horizontal scrolling problem on the catalog and other affected pages by reducing the table text size.

ENHANCE: I hope to resolve the problem while allowinng the original text size at some time in the future.

2011/06/01    

Created a new generalized function redisplay_table_page($html_ver,$_SERVER['REQUEST_URI']) to display the "This table is sortable if JavaScript is enabled, just click on column header. Click here to restore original sort." where the "Click here..." is a link to the page itself.

2011/06/14 0 FUTURE?  

Convert Numerology program written in Basic to PHP. Might be an interesting project!

2011/06/14    

Replaced most <br> and <br /> by br($html_ver), created new htmlterm($html_ver) function to provide appropriate HTML terminations, i.e., " />" or " >", replaced many <br /><br /> making text into paragraphs, and made some changes to 0_master.css to make p margins smaller.

2011/06/30   2011/10/16

Finally, csv-to-uft with substitutions processing has solved all validation problems except for one non-SGML character termination.

2011/10/16: Seems to have been resolved somewhere along the line!

2011/07/01  

Added $additional_scripts to my_php_functions to allow individual jquery/javascript functionality to appropriate pages without have to load entire scripts libraries

Simplified the check to see if javascript is enabled by using

Display generated by function pre_code():
<script type="text/javascript">
  <noscript>
    JavaScript is disabled. This site uses some Javascript. 
    To enable best functionality and viewing, please enable 
    JavaScript.
  </noscript>
</script>
2011/07/03     Using Xenu, I fixed several links which would break on some servers because of capital letters and/or spaces in the link names.
2011/07/23     PHP Function To Add Captions To Images
solved: PHP Function to Add Captions To Images

I created a new PHP function to add captions to images:

function image($html_ver,$img_left_right,$img_width,$img_height,
               $img_href,$img_src,$img_alt,$img_border,$img_caption) {
    $img_div_width = $img_width + 2;
    echo '<div class="picture '.$img_left_right.'" 
          style="width:'.$img_div_width.';" >';
    echo ' <a href="'.$img_href.'">';
    echo ' <img src="'.$img_src.'" width="'.$img_width.
    	     '" height="'.$img_height.'"';
    echo ' alt="'.$img_alt.'" />';
    echo $img_caption.'</div>';
}

Special CSS Image Caption tags:

.picture { background-color: #F9F9F9; border: 1px solid #CCCCCC; 
	padding: 3px; font: 11px/1.4em Arial, sans-serif; } 
.picture img { border: 1px solid #CCCCCC; vertical-align:middle; 
	margin-bottom: 3px; display:block; } 
.picture-right { margin: 0.5em 0pt 0.5em 0.8em; float:right; } 
.picture-left { margin: 0.5em 0.8em 0.5em 0; float:left; }

Idea based upon:

http://www.labnol.org/internet/design/add-text-captions-align-images-html-css/2309/

I have decided not to use this function because of the amount of time it takes to execute and because of some page positioning issues but it does correctly add an appropriate caption. Maybe I may try to find a similar jscript function.

2011/07/29   2011/07/31
2011/08/08
2011/08/09
2011/10/29
Multiple Column CSS Only Tables (without using <table>)
solved: Multiple Column "CSS Only" Tables (without using <table>)
Multiple Column "CSS Only" Tables (without using <table>)

2011/07/31: I created the following functions to simplify making "CSS Only" tables with up to 9 columns and expanded the preceeding CSS to from 3 to 9 columns:

Display generated by
dis_func_code($html_ver,"css_table_functions","0_my_php_functions.php")

Display generated by function pre_code():

function css_table_begin() { 
  // args ($html_ver,$class,$style)
  $num_args = func_num_args();
  if ($num_args > 0)
    $html_ver = func_get_arg(0);
    
   $class_w = 'class="css-table-wrapper border-none"';
    
  if ($num_args > 1) {
    $class_m = 'class="css-table-main '.func_get_arg(1).'"';
  }
  else {
    $class_m = 'class="css-table-main"';
  }
  if ($num_args > 2)
    $style = ' style="'.func_get_arg(2).'"';
  else
    $style = '';
  
  $browser='';$version='';$os_type='';$os_number='';
  $browser_ver = browser_ver($html_ver,&$browser,
                 &$version,&$os_type,&$os_number);
  if ($browser === 'ie' & $version > 7) {
    echo '<div '.$class_w.'>';
    echo '<div '.$class_m.$style.'>';
  }
  else {echo '<table '.$class_m.$style.'><tr>';
  }
}

function css_table_col_begin() {
  // args ($html_ver,$col_num,$class,$style)
  $num_args = func_num_args();
  if ($num_args > 0)
    $html_ver = func_get_arg(0);
    
  if ($num_args > 1)
    $col_num = func_get_arg(1);
  else
    $col_num = 1;
    
  if ($num_args > 2) {
    $class_css = 'class="css-table-column div-pos-top'.
         $col_num.' '.func_get_arg(2).'"';
    $class_td  = 'class="td-pos-top'.func_get_arg(2).'"';
  }
  else {
    $class_css = 'class="css-table-column div-pos-top"';
    $class_td  = 'class="td-pos-top"';
  }  
  if ($num_args > 3)
    $style = ' style="'.func_get_arg(3).'"';
  else
    $style = '';

  $browser='';$version='';$os_type='';$os_number='';
  $browser_ver = browser_ver($html_ver,&$browser,
                 &$version,&$os_type,&$os_number);
  if ($browser === 'ie' & $version > 7) {
    echo '<div '.$class_css.$style.'>';
    //echo '<p>CSS Table</p>';
  }
  else {
    echo '<td '.$class_td.$style.'>';
    //echo '<p>HTML Table</p>';
  }
}

function css_table_col_end($html_ver) {
  // arg ($html_ver)
  $browser='';$version='';$os_type='';$os_number='';
  $browser_ver = browser_ver($html_ver,&$browser,
                 &$version,&$os_type,&$os_number);
  if ($browser === 'ie' & $version > 7)
    echo '</div>';
  else
    echo '</td>';
}

function css_table_end($html_ver) {
  // arg ($html_ver)
  $browser='';$version='';$os_type='';$os_number='';
  $browser_ver = browser_ver($html_ver,&$browser,
                 &$version,&$os_type,&$os_number);
  if ($browser === 'ie' & $version > 7)
  	echo '</div></div>';
  else
    echo '</tr></table>';
}



The following code example uses some of my CSS classes, some CSS styles and some of my PHP functions.


The following code is displayed by function dis_code_exec:

Display generated by function pre_code():

<?php css_table_begin
  ($html_ver,"center","border:4px dotted red");?>
  <?php css_table_col_begin
      ($html_ver,1,"center","border:1px dashed black;");?>
    <p>column 1</p>
    <p class="font-weight-bold">column 1</p>
    <p>column 1</p>
    <?php css_table_col_end($html_ver); ?>
    <?php css_table_col_begin
      ($html_ver,2,"center",
          "border:8px ridge gray;");?>
    <?php echo br($html_ver,5); ?>
    <p>column 2</p>
  <?php css_table_col_end($html_ver); ?>
  <?php css_table_col_begin
      ($html_ver,3,"center","border:16px groove aqua;");?>
    <?php echo br($html_ver,2); ?>
    <?php echo hr($html_ver); ?>
    <p>column 3</p>
    <?php echo hr($html_ver); ?>
  <?php css_table_col_end($html_ver); ?>
  <?php css_table_col_begin
    ($html_ver,4,"center","border:32px solid blue;");?>
    <p>column 4</p>
    <p class="color-red">column 4</p>
  <?php css_table_col_end($html_ver);?>
<?php css_table_end($html_ver); ?>

The following display is created by function dis_code_exec inserting the preceeding code into the page:

column 1

column 1

column 1






column 2




column 3


column 4

column 4

2011/08/08: See 2011/08/08 below regarding IE Compatibility View problem. I reinstalled the <table> version of index.php which works in both Compatibility and Standard Views. The other uses of CSS-only tables display horizontally as expected with Standard View and vertically with Compatibility View.

2011/08/09a: I modified the "CSS Only" functions to create actual HTML tables for IE7 and before using the conditionals:

Display generated by function pre_code():

<!--[if gt IE 7]>
.
.
.
CSS table code
.
.
.
<![endif]-->

and

<!--[if lt IE 8]>
.
.
.
HTML table code
.
.
.

<![endif]-->

The displays are identical except that the HTML code has borders around the <td>...</td> and the CSS code does not have borders. I have not been able to determine how to remove the borders.

2011/08/09b: the above conditionals did not validate as XHTML 1.0 Strict, so I looked for a PHP equivalent. I found the php function ieversion() by by Karol Krizka at how-to-detect-internet-exporer-version-with-php. So I modified the css_table functions to use the new PHP ieversion() function. Using ieversion() instead of the IE conditionals, the pages now validate as XHTML 1.0 Strict.

2011/10/29: I replaced ieversion() with my PHP function browser_ver() some time ago.

2011/07/30    

I have created a PHP function pre_code($code) to allow easy display of HTML and CSS code without modifying the source code. The function replaces '<' with '&lt;', '>' with '&gt;', '$' with '&#36', and 'function' with 'f&zwj;unction'.

Note the use of '&zwj;' which is used to disable the execution of PHP functions and '&#36' to disable PHP function variables but allow correct display of $code on page.

2011/08/31: Replaced by a better PHP function pre_code($html_ver,$code) which does not use '&zwj;' making the display much better. It is used by function dis_func_code():

pre_code($code)

2011/08/05    

I rewrote the solved($args...) function to use the new PHP CSS Table functions.

2011/08/07   2011/08/08

IE8 Displays Page Differently In Compatibility View

solved: IE8 Displays Page Differently In Compatibility View

Suddenly index.php displays differently when accessed from the local host and from the remote host.

In other browsers, both the local host and the remote host display properly. After much testing and comparing the HTML source listings from both hosts, I found that both HTML sources were essentially identical.

I do not know what prompted me to do so but I then looked at the IE8 Compatibility View settings and they were different! I do not know why one invocation of IE8 displayed in Compatibility View?

index.php and maybe other pages does/do not display properly in Compatibility View!

The problem seems to be with displaying CSS-only tables. Turning off Compatibility View allows page(s) to display properly.

Further research provided the answer. IE7 and before do not support "display attributes table, table-row, table-cell, etc., so the CSS-only table codes only display properly with IE8+. Other current browsers seem to work OK

2011/08/08: see 2011/08/09b above for modifications to "CSS Table" functions to create HTML tables or CSS tables depending of IE version.

2011/08/07    

Created a new PHP function nbsp($reps) which is essentially like br($html_ver,$reps) except that it inserts a number of &nbsp; based upon reps.

2011/08/12 2011/10/16

Improved the CSS ONLY TABLE functions and created a new PHP imager() function:

Usage example of 3 column CSS ONLY "table" using function imager with bottom "caption"/description:

The following code is displayed by function dis_code_exec:

Display generated by function pre_code():

<?php css_table_begin ($html_ver,"center border-none"); ?>
  <?php css_table_col_begin($html_ver); ?>
    <?php css_table_begin
      ($html_ver,"border-none center"); ?>
      <?php css_table_col_begin($html_ver,1,"center"); ?>
        <?php imager("images/","images/thumbs/",$html_ver,
          "19600900 dennis 20yrs leaving for 
          berkeley ca from home",
          "19600900-1-dennis_20yrs_leaving_for_berkeley.jpg",
          400,200,0,""); ?>
      <?php css_table_col_end($html_ver); ?>
      <?php css_table_col_begin($html_ver,2,"center"); ?>
        <?php imager("images/","images/thumbs/",$html_ver,
          "19600900 dennis 20yrs leaving for berkeley ca 
          from home",
          "19600900-2-dennis_20yrs_leaving_for_berkeley.jpg",
          400,200,0,""); ?>
      <?php css_table_col_end($html_ver); ?>
      <?php css_table_col_begin($html_ver,3,"center"); ?> 
        <?php imager("images/","images/thumbs/",$html_ver,
          "19600900 dennis 20yrs leaving for berkeley ca 
          from home",
          "19600900-3-dennis_20yrs_leaving_for_berkeley.jpg",
          400,200,0,""); ?>
      <?php css_table_col_end($html_ver); ?>
    <?php css_table_end($html_ver); ?>
    Me (20 years old) on 1960/12/00.
  <?php css_table_col_end($html_ver); ?>
<?php css_table_end($html_ver); ?>

The following display is created by function dis_code_exec inserting the preceeding code into the page:

Me (20 years old) on 1960/12/00.

2011/10/16: Fixed so IE8 and greater use CSS ONLY TABLES!

2011/08/29    

Revised the imager function and created a new PHP function:

Code available on request.

  1. imager($src_dir,$img_dir,$html_ver,$src_alt,$src_file,
    $href_max,$img_max,$img_border,$img_caption)

    which using the thumb function creates and saves 2 thumbnails using the thumb function images from image ($src_file) for page display and for larger clickable image. Also allows for a caption below the image and border attributes. This function is mostly used by the col_table functions.

  2. thumb($src_dir,$src_file,$thumb_dir,$thumb_max)

    which creates and saves a thumbnail image from image ($src_file). Used for sizing images for display and for use by the imager function.

    Usage example:

    The following code is displayed by function dis_code_exec:

    Display generated by function pre_code():
    
    <a href="images/usinternationalkeyboardbig-100kb.jpg">
      <img alt="us international keyboard big" 
       src="<?php echo thumb("images/",
                 "usinternationalkeyboardbig-100kb.jpg",
                 "images/thumbs/",800); ?>"
    <?php echo htmlterm($html_ver); ?></a>
    
    <p>CLICK ON IMAGE TO SEE RESULT!</p>
    

    The following display is created by function dis_code_exec inserting the preceeding code into the page:

    us international keyboard big

    CLICK ON IMAGE TO SEE RESULT!

2011/08/31   2011/09/01

Created a new PHP function dis_func_code to make it easier to display code examples from my PHP function library file. The function code in the function file to be displayed is delimited by /*begin functionname*/ and /*end functionname*/. The following is the new code and is displayed using the new dis_func_code itself; the border is also part of the new function:

Display generated by
dis_func_code($html_ver,"dis_func_code","0_my_php_functions.php")

Display generated by function pre_code():

function dis_func_code() {
// Note that using this function may require
// some adjustment of the actual code to be displayed, 
// i.e., to be moved to the left of the (X)HTML page 
// and sometime splitting code lines so the displayed 
// code fits on the displayed page.
//
  $num_args = func_num_args();
  if ($num_args > 0) $html_ver = func_get_arg(0);
  if ($num_args > 1) $func_name = func_get_arg(1);
  if ($num_args > 2) $func_file = func_get_arg(2);
  else $func_file = '0_my_php_functions.php';
  
  if (!file_exists($func_file)) {
    return 'file "'.$func_file.'" not found';
  }
  else {
    $func_file_str = file_get_contents($func_file);
    $begin_str = '/*begin '.$func_name.'*/';
    $begin_str_pos = strpos($func_file_str,$begin_str);
    if ($begin_str_pos) {
      $end_str   = '/*end '.$func_name.'*/';
      $end_str_pos = strpos($func_file_str,$end_str);
      $start_function_str_pos = 
        $begin_str_pos + strlen($begin_str);
      $end_function_str_pos = $end_str_pos - 1;
      $length_function_str = 
        $end_function_str_pos - $start_function_str_pos;
      $function_code_str = 
          substr($func_file_str,$start_function_str_pos,
            $length_function_str);
    $ret_val =
      '<a id="'.$func_name.'-link"></a>'.
      '<div class="font-size-small '.
        'border-1px-solid-green '.
          'color-green '.
        'padding-4px float-left">'.
        '<p class="center color-green">'.
        'Display generated by'.br($html_ver,1).
        'dis_func_code($html_ver,"'.
        $func_name.'","'.$func_file.'")</p>'.
        pre_code($html_ver,$function_code_str).
      '</div>';
    return $ret_val;
    }
    else {
      return 'function "'.$func_name.
       '" not found in file "'.$func_file.'"';
    }
  }
}

2011/08/31   2011/09/01

Created a new PHP function pre_code to make it easier to display HTML and CSS code:

Display generated by
dis_func_code($html_ver,"pre_code","0_my_php_functions.php")

Display generated by function pre_code():

function pre_code($html_ver,$code) {
// Note that using this function may require some physical 
// adjustment of the actual code to be displayed, i.e., 
// to be moved to the left of the (X)HTML page and sometime 
// splitting code lines so the displayed code fits in the 
// appropriate space on the displayed page.
//
// 1st "<" is "less than" symbol
// 2nd "<" is "&lt;"
// 1st ">" is "greater than" symbol
// 2nd ">" is "&gt;"
// 1st "$" is "dollar" symbol
// 2nd "$" is "&#36;"
//
  // the following line added to allow the display
  // of functions using arguments passed by reference
  $code = str_replace('&$','&$',$code);
  $code = str_replace('$','$',$code);

  $code = str_replace('<','<',$code);
  $code = str_replace('>','>',$code);
  
  $code = str_replace('(','(',$code);
  $code = str_replace(')',')',$code);

  $ret_val =
    '<div class="background-white '.
    'font-size-small '.
    'border-1px-solid-orange '.
    'color-orange '.
    'padding-4px float-left">'.
    'Display generated by function pre_code():'.
    '<pre class="background-white border-0 '.
    'margin-0 padding-0">'.
    '<code class="background-white font-size-small">'.
    $code.
    '</code>'.
    '</pre>'.
    '</div>';
  return $ret_val;
}

2011/09/06   2011/09/10

@11:00:00 Beginning to use html5.js ( http://remysharp.com/2009/01/07/html5-enabling-script) and HTML5 elements starting with <nav> for the navigation menu and <footer> for the footer function.

@11:30:00 OOPS! Using <nav> on the navigation menu will have to be deferred until most/all pages are HTML5 because non-HTML5 pages will not validate!

@11:45:00 Recoded the navigation menu and the footer function to conditionally use <nav> and <footer> or <div> based upon $html_ver.

@11:50:00 Need to resolve <meta ...> end tag issues. But for now, I am taking a break!

2011/09/07: Created a new PHP function html5($html_ver,$html5_element,$html_other_element) to facilitate converting pages to HTML5.

Display generated by
dis_func_code($html_ver,"html5","0_my_php_functions.php")

Display generated by function pre_code():

function html5($html_ver,$html5_element,
               $html_other_element) {
  if ($html_ver === 'HTML5') 
  return $html5_element; //default HTML5
  else return $html_other_element;
}

The PHP variable $html_ver has been used and continues to be used to allow (X)HTML & HTML5 version specific code to be created by various PHP functions:

Display generated by
dis_func_code($html_ver,"br","0_my_php_functions.php")

Display generated by function pre_code():

function br() {
//
// br($html_ver) creates <br> or <br /> tags based upon the 
// required argument $html_ver
//
// a second optional argument may be used to specify how many 
// repetitions of the tag is desired, e.g., br($html_ver,2)
//
  if (func_num_args() > 0) {$html_ver = func_get_arg(0);}
  $reps = 1;
  if (func_num_args() > 1) {$reps = func_get_arg(1);}
  switch ($html_ver) {
    case 'HTML 4.01 Transitional':
      $breaker = '<br>';   // $breaker = <br>
      break;
    case 'HTML5':
      $breaker = '<br>';   // $breaker = <br>
      break;
    default:
      $breaker = '<br />'; // $breaker = <br />
      break;
  }
  $ret_val = '';
  $i = 0;
  do {
    $ret_val = $ret_val .$breaker;
    $i = $i + 1;
  } while ($i < $reps);
  return $ret_val;
}

Display generated by
dis_func_code($html_ver,"hr","0_my_php_functions.php")

Display generated by function pre_code():

function hr($html_ver) {
  switch ($html_ver) {
    case 'HTML 4.01 Transitional':
      $hr = '<hr>';
      break;
    case 'HTML5':
      $hr = '<hr>';
      break;
    default:
      $hr = '<hr />';
      break;
  }
  return $hr;
}

Display generated by
dis_func_code($html_ver,"htmlterm","0_my_php_functions.php")

Display generated by function pre_code():

function htmlterm($html_ver) {
  switch ($html_ver) {
    case 'HTML 4.01 Transitional':
    	$htmlterm = ' >';
    	break;
    case 'HTML5':
    	$htmlterm = ' >';
    	break;
    default:
      $htmlterm = ' />';
      break;
  }
  return $htmlterm;
}

etc., were created and used to allow appropriate "generic" functionality and validation based upon the HTML/XHTML version being used for each page. This allows easy changing of HTML/XHTML versions.

2011/09/10: The functions pre_code($html_ver,$code) and dis_func_code($html_ver,$func_name,$func_file) can be useful for debugging, for example:

Display generated by
dis_func_code($html_ver,"code_example_1","0_code-examples.txt")

Display generated by function pre_code():

<?php echo pre_code($html_ver,'
  echo "code_example_1 - without code execute<br>";
  $html_ver = "HTML5";
  echo pre_code($html_ver,htmlterm($html_ver));
'); ?>

will provide the following:

Display generated by function pre_code():
 >

and

Display generated by
dis_func_code($html_ver,"code_example_2","0_code-examples.txt")

Display generated by function pre_code():

<?php echo pre_code($html_ver,'
  echo "code_example_2 - with code execute<br>";
  $html_ver = "XHTML 1.0 Strict";
  echo pre_code($html_ver,htmlterm($html_ver));
'); ?>

will provide the following:

Display generated by function pre_code():
 />

2011/09/07    

Suspended HTML5 enhancements to finish up several pages changing to using <p> instead of PHP function br($html_ver,2). Also recoded several of the code displays to use dis_func_code() and pre_code() functions.

@230000: Finally cleaned up a lot of displays. Back to HTML5 enhancements!

2011/09/09    

Recoded each nvigation menu file to use an unordered list which is so much simpler and cleaner than my original flyout with flyout sub menus:

See 2011/09/20 below for code listing.

I also removed all the

Display generated by function pre_code():
<!-->
  <meta content="text/html; charset=utf-8" 
  http-equiv="Content-Type" />
<!-->

from the bottom of each page (I hope the utf-8 coding remains OK).

2011/09/10    

Continuing to modify this page to display code examples using pre_code($html_ver,$code).

When finsished, then back to HTML5.

2011/09/11   2011/09/12

13:00:00 - I just discovered that the navigation menu no longer works on the Submit Comments page. Immediate resolution is needed.

14:20:00 - I created a temporary Submit Comments page which requests sending me an email while I try to figure out why the original Submit Comments page is no longer workiing correctly.

2011/09/12 @ 20:00:00 - Fixed by adding

Display generated by function pre_code():
<META http-equiv="Content-Style-Type" content="text/css">

to the header code in 0_my_php_functions.php.

2011/09/14    

I purchased Total Validator Pro (TVP) after preliminary testing with the free version of Total Validator.

total validator logo   total validator logo   total validator logo

I will use TVP as my main site validation program because it provides the ability to perform:

  • single page and full site validation on my local host
  • single page and full site validation on my remote host
  • HTML5 validation which will help me in upgrading my site to HTML5
  • accessibility validation which will hel me make my site more accessible
2011/09/14   2011/09/15
2011/09/16

Using Total Validator Pro, I have completed the first HTML5 version of my site!

All pages are now HTML5 validated.

  • In less than a day, using TVP, I was able to convert my entire site (some 142 pages with 1018 links) from XHTML 1.0 Strict to validate as HTML5 on my local host.
  • TVP also allowed me to make a couple of corrections and enhancements to my process for converting .csv files to utf-8 files so my catalog display pages (some of which had “bad” characters in the data) now validate as HTML5.
  • I now use the TV icon to show HTML5 validation.
  • The first test had 1500+ errors/warnings (some were repeats so a single change fixed multiple errors/warnings) and I am now down to 1 link error and 2 link warnings! And the error is not really an error.
  • Finding the required changes would have taken many frustrating days if I had had to do one page at a time and/or having to upload pages to my remote site to find each required change.
  • I look forward to using TVP to improve some site accessibility issues.

Although all pages validate as HTML5, I am not currently using any HTML5 only code.

Now I can continue looking into actually beginning to use some HTML5 only code.

2011/09/15 and 2011/09/16: Some minor tweaking and clean-up.

2011/09/17    

After a lot of Googling, I found and added a new PHP function " browser_detecton" to facilitate "conditional code" for HTML5. The description and code can be found at

http://techpatterns.com/downloads/php_browser_detection.php.

I created a PHP function which uses the above the function browser_detection which returns "$browser.' '.$version" and also provides both $browser and $version via "passed by reference":

Display generated by
dis_func_code($html_ver,"browser_ver","0_my_php_functions.php")

Display generated by function pre_code():

function browser_ver($html_ver,&$browser,
            &$version,&$os_type,&$os_number) {
// uses browser_detection() from
// http://techpatterns.com/downloads/php_browser_detection.php
//
// returns browser-version string but also provides
// $browser and $version via arguments passed by reference
  
  $array = browser_detection('full_assoc');
  //print_r($array); echo br($html_ver,2);
  $os_type = $array['os'];
  $os_number = $array['os_number'];
  $browser_working = $array['browser_working'];
  $browser_number = $array['browser_number'];
  $browser_name = $array['browser_name'];

  switch ($browser_working) {
  	case 'ie':
    	$browser = $browser_working;
    	$version = $browser_number;
   	 	break;
	 case 'moz':
  		$moz_data = $array['moz_data'];
    	$browser = $moz_data['0'];
    	$version = $browser_number;
    	break;
  	case 'op':
    	$browser = $browser_name;
    	$version = $browser_number;
    	break;
  	case 'webkit':
    	$browser = $browser_name;
    	$version = $browser_number;
    	break;
  	default:
  		$browser = $browser_working;
    	$version = $browser_number;
    	break;
  }
  //$browser = upperx($browser);
  return 'Detected Operating System: '.
  mb_strtoupper($os_type,'UTF-8').' '.$os_number.
  ' Detected Browser: '.mb_strtoupper($browser,'UTF-8').
  ' '.$version;
}

function upperx($browser) {
	$ret = strtoupper($browser);
return $ret;
}

include '0_browser_detection.php';

2011/09/20    

After reworking 0_my_php_functions to load appropriate versions of navigation menu files and a new based upon detected browser version and similarly for 0_master.css and 0_master-ie6.css (the "-new" is a version which is being redone: reorganizing, removing unused entries, etc.), I finally managed to get site to at least display in IE6/IE7. Not exactly the same as IE8 but close enough for government work!

Currently both .css files are identical and, if no further changes are discovered, I will eliminate the -ie6 version.

I used IETester to verify that the changes work in with IE6/IE7...it also shows that the changes also work with IE5.5!

The following is the code for 0_nav_menu_ie9.php:

Display generated by
dis_func_code($html_ver,"0_nav_menu_ie9","0_nav_menu_ie9.php")

Display generated by function pre_code():
?>
<?php /* note: the above "?>" 
       is not part of executable code */?>

<?php $arrowgif = '<img alt="animated arrow" 
  src="images/@animated-arrow-right-4kb.gif" 
  height="7" width="21" class="border-none"'.
  htmlterm($html_ver);?>
  
<?php echo html5($html_ver,'<nav','<div').
  ' class="nav-menu">';?>
<ul class="nav-menu">
  <li><span class="color-red font-weight-bold">
      MAIN NAVIGATION MENU (IE9)</span>
      <?php echo br($html_ver,1); ?>
      multiple pages indicated by
      <?php echo $arrowgif;?>
      </li>
  <li><a class="text-decoration-none"
      href="index.php">
      Home Page</a></li>
  <li><a class="text-decoration-none"
      href="autobio_overview.php">
      Autobiography
      <?php echo br($html_ver,1);?>
      (Mainly_Musical)
      <?php echo br($html_ver,1);?>
      <?php echo $arrowgif?></a></li>
  <li><a class="text-decoration-none"
      href="cooking_overview.php">
      Cooking & Food: 
      <?php echo br($html_ver,1);?>
      Asian & Non-Asian
      <?php echo br($html_ver,1);?>
      <?php echo $arrowgif;?></a>
  </li>
  <li><a class="text-decoration-none"
      href="drumming-info.php">
      Drumming Info</a></li>
  <li><a class="text-decoration-none"
      href="ew-webdev_overview.php">
      XHTML, PHP, MySQL & 
      <?php echo br($html_ver,1);?>
      Site Development History
      <?php echo br($html_ver,1);?>
      <?php echo $arrowgif;?></a></li>
  <li><a class="text-decoration-none"
      href="family-info.php">
      Family History</a></li>
  <li><a class="text-decoration-none"
      href="favorite-links.php">
      Favorite Links</a></li>
  <li><a class="text-decoration-none"
      href="help.php">HELP</a></li>
  <li><a class="text-decoration-none"
      href="lmc_overview.php">
      Latin Music Collection
      <?php echo br($html_ver,1);?>
      <?php echo $arrowgif;?></a></li>
  <li><a class="text-decoration-none"
      href="model-trains.php">
      Model Trains</a></li>
  <li><a class="text-decoration-none"
      href="my-arabian-horses.php">
      My Arabian Horses</a>
  </li>
  <li><a class="text-decoration-none"
      href="zeno-touzet.info.php">
      Rene Touzet Info 
      By Zeno</a></li>
  <li><a class="text-decoration-none"
      href="rmal.php">RMAL
      <?php echo br($html_ver,1);?>
      (Rec.Music.Afro-Latin)</a></li>
  <li><a class="text-decoration-none"
      href="rumba-info.php">
      Rumba Info</a></li>
  <li><a class="text-decoration-none"
      href="santeria-ifa-yoruba.php">
      Santería-Ifá-Yoruba</a></li>
  <li><a class="text-decoration-none"
      href="spiritual-quest.php">
      Spiritual Quest(s) & Other Weird Stuff</a>
  </li>
  <li><a class="text-decoration-none"
      href="submit-comments.php">
      Submit Comments</a></li>
  <li><a class="text-decoration-none"
      href="us-international-keyboard.php">
      US/International Keyboard
      <?php echo $arrowgif?></a>
      <?php echo br($html_ver,1);?>
      <span class="color-black">
      For easy keyboard entry of
      <?php echo br($html_ver,1);?>
      á ä å æ ç © é í ñ ó ú ü ¼ ...</span>
      <?php echo br($html_ver,1);?></li>
      
  <li><a class="text-decoration-none"
      href="inkline-pc-booster-ripoff.php">
      <span class="center color-red">
      inKline Global lies 
      about<?php echo br($html_ver,1);?>
      PC Booster Refund</span>
      <?php echo br($html_ver,2);?>
      </a></li>
</ul>
<?php echo html5($html_ver,'</nav>','</div>').
  ' <!-- id=nav-menu -->';?>
<?php /*note: the following "<?php" 
        is not part of the executable code*/?>
<?php

The following is the code for 0_nav_menu_ie6.php:

Display generated by
dis_func_code($html_ver,"0_nav_menu_ie6","0_nav_menu_ie6.php")

Display generated by function pre_code():
?>
<?php /* note: the above "?>" 
       is not part of executable code */?>

<?php $arrowgif = '<img alt="animated arrow" 
  src="images/@animated-arrow-right-4kb.gif" 
  height="7" width="21" class="border-none"'.
  htmlterm($html_ver);?>
  
<table class="border-1px-solid-blue">
<tr>
  <td class="font-size-xsmall">
  <span class="color-red font-weight-bold">
      MAIN NAVIGATION MENU (IE6)</span>
      multiple pages indicated by 
      <?php echo $arrowgif;?></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="index.php">
      Home Page</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="autobio_overview.php">
      Autobiography
      (Mainly_Musical)
      <?php echo br($html_ver,1);?>
      <?php echo $arrowgif?></a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="cooking_overview.php">
      Cooking & Food: 
      Asian & Non-Asian
      <?php echo $arrowgif;?></a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="drumming-info.php">
      Drumming Info</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="ew-webdev_overview.php">
      XHTML, PHP, MySQL & 
      Site Development History
      <?php echo $arrowgif;?></a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="family-info.php">
      Family History</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="favorite-links.php">
      Favorite Links</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="help.php">HELP</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="lmc_overview.php">
      Latin Music Collection
      <?php echo $arrowgif;?></a></td>
</tr>
<tr>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="model-trains.php">
      Model Trains</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="my-arabian-horses.php">
      My Arabian Horses</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="zeno-touzet.info.php">
      Rene Touzet Info 
      By Zeno</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="rmal.php">RMAL
      (Rec.Music.Afro-Latin)</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="rumba-info.php">
      Rumba Info</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="santeria-ifa-yoruba.php">
      Santería-Ifá-Yoruba</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="spiritual-quest.php">
      Spiritual Quest(s) & Other Weird Stuff</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="submit-comments.php">
      Submit Comments</a></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="us-international-keyboard.php">
      US/International Keyboard
      <?php echo $arrowgif?></a>
      <span class="color-black">
      For easy keyboard entry of
      á ä å æ ç © é í ñ ó ú ü ¼ ...</span>
      <?php echo br($html_ver,1);?></td>
  <td class="font-size-xsmall">
  <a class="text-decoration-none"
      href="inkline-pc-booster-ripoff.php">
      <span class="center color-red">
      inKline Global lies about PC Booster 
      Refund</span></a></td>
</tr>
</table>
<?php /*note: the following "<?php" 
        is not part of the executable code*/?>
<?php

2011/10/04    

Major rewrite of catalog.php:

  • Changed to use class=sortable (sorttable.js) to sort columns instead of of doing MySQL query with sort order which has reduced the amount of PHP code
  • Changed to always display Product Info and My Comments
  • Modified function redisplay_table_page($html_ver,$script_name)
    • Added $script_name parameter replacing the use of
      $_SERVER['SCRIPT_NAME']
    • Replaced all redisplay_table_page($html_ver) calls with
      redisplay_table_page($html_ver,$_SERVER['REQUEST_URI'])
  • These changes have reduced the use of all URL parameters except for $tablename which also reduced the number of pages validated by Total Validator from 141 to 51

Display generated by
dis_func_code($html_ver,"redisplay_table_page","0_my_php_functions.php")

Display generated by function pre_code():

function redisplay_table_page($html_ver,$script_name) {
  echo 'The following table is 
    sortable if JavaScript is enabled, '.
  	'just click on a column header.'.br($html_ver,1).
  	'Please allow sufficient time for the page to load 
  	and for sorts to complete.'.
  	br($html_ver,1).'<a href="'.$script_name.
     '"> Click here to restore original sort.</a>'; 
}
2011/10/05   2011/10/16

Installed IE9 again after discovering how to display in IE8 Compatibility Mode. I will use IE9 unless I find inconsistencies.

Trying to figure out how to make IE9 default to IE8 Browser Mode.

Found slight display difference between IE9 and IE8: catalog.php pages are slightly wider with IE9 which required a few changes to shorten code display lines.

TEST NEEDED: need to test and fix application of class and style in CSS TABLE functions.

2011/10/16: IE9 seems to work OK.

2011/10/15   2011/10/16

During the past few days, I have made some changes to the navigation menu for IE6. It now is sized and positioned correctly but it still scrolls. Continuing to work on making the IE6 navigation menu the same as IE7 and greater.

2011/10/16: Fixed CSS ONLY TABLE functions to correctly use class and style arguments.

2011/10/21    

During the past few days, I have made some changes to the border displays of the "solved" and "CSS Only Table" functions. I also removed the "* {background-color:white}" from the .css files to allow "zebra striping" of table rows to work properly.

Removed <table> formatting from Drumming Info page.

2011/10/26 2011/10/30    

Because of problems with the IE6 navigation menu display and after many hours trying to "fix" the vertical navigation menu in IE6, I decided to change the vertical display to a horizontal navigation menu for IE6 as part of page header using <table>.

Continuing to make minor cleanup and consistency changes.

2011/10/30   2011/10/31

Created a new PHP function dis_code_exec($html_ver,$code_str) to display both the original code and to execute and display the output of the code.

Display generated by
dis_func_code($html_ver,"dis_code_exec","0_my_php_functions.php")

Display generated by function pre_code():

function dis_code_exec($html_ver,$code_str) {
// Note that using this function may require
// some adjustment of the actual code to be displayed, 
// i.e., to be moved to the left of the (X)HTML page 
// and sometime splitting code lines so the displayed 
// code fits on the displayed page.
//
// Usage:
//
//    <?php
//    $code_str = 
//'code
//...
//code';
//
//    dis_code_exec($html_ver,$code_str)
//
  //create file from $code_str
  $filename = "@@@@@code_str_file.txt";
  $fh = fopen($filename, 'w') or die("can't open file");
  fwrite($fh, $code_str);
  fclose($fh);
  
  $fh = fopen($filename, 'r');
  $code_exec_str = fread($fh,filesize($filename));
  fclose($fh);
  
  echo '<div class="center background-white '.
                   'font-size-small '.
                   'border-1px-solid-green '.
                   'color-orange '.
                   'padding-4px float-left">'.
         '<div class="border-0 clear center padding-4px '.
         	 'color-green">'.
           'The following code is displayed by '.
           'function dis_code_exec:'.
         '</div>'.
         br($html_ver,1).
         pre_code($html_ver,$code_str).
         '<div class="border-0 clear center padding-4px '.
         	 'color-green">'.
           br($html_ver,1).
           'The following display is created by function '.
              'dis_code_exec inserting the preceeding code '.
              'into the page:'.
           br($html_ver,1).
         '</div>'.
         br($html_ver,1).
         '<div class="clear center background-white '.
                     'font-size-small '.
                     'border-1px-solid-orange '.
                     'color-orange '.
                     'padding-4px float-left">'.
            '<div class="clear padding-4px float-left">';
              include "@@@@@code_str_file.txt";
  echo      '</div>'.
           '</div>'.
         '</div>'.
         '<div class="clear"></div>';
}

2011/10/31: Replaced several code displays on this page to use dis_code_exec.

2012/02/18   2012/04/?? Added the ability to print individual recipes.

2012/04/??: Discovered that < IE7 will not print the individual recipes.
2012/02/27     Tweaked Program and Catalog Last Updated Dates for consistency including hard coding Program Last Updated Dates because EW4 frequently does not properly handle &quot;changed files&quot;  which can cause incorrect Last Updated Dates.
2012/04/30     I installed MS Virtual XP some time ago so I could test using actual IE6. Because of Windows Update problems I have uninstalled and reinstalled several times. I think the problems have finally been solved.
2012/05/01 3 ENHANCE   Trying to implement simplified catalog display where hovering on simplified row displays popup with all row data.
2012/05/01 3 ENHANCE   Trying to implement image hover to display larger image.
2012/05/13 3 ENHANCE   Created Weird Stuff Books catalog database, renamed Spiritual Quest(s) page to Spiritual Quest(s) &amp; Other Weird Stuff. Modified the renamed page to use new spiritual-quest_nav.php and spiritual-quest_ws-books_pageintro.php. Added ws-books to  catalog.php.
Web Development Pages: Overview   HTML & ASCII Codes   International_Characters_Test-(UTF-8)   SOLVED:_Site_Development_Problems   Web_Development_Books_CATALOG   Web_Development_Techniques_&_Site_Status_History  

Note: _CATALOG links may take a little time to load, please wait!