Web-Development

The Issue

You have a PHP page which generates a HTML form.  When the user submits the form, you want the same PHP page to process the data.

Solution

I've seen a lot of people write CGI requests but if you left the action attribute blank, this would do the same thing:

 

<form method="post" action="">
...

 


What?
This is an example of Javascript code to update and display the elapsed/remaining hours minutes and seconds in real-time.

Why?
I know there are a lot of articles out there that write about the same, but this is an example that I was coding and found to be one of the most reduced cut down formats I've made. I thought I'd make a note of it to not have to search elsewhere...

This example specifically displays the time remaining on an access_token which is generated from an OAuth 2.0 process. I want to display to the user how much time is left before another access token will be generated and how long ago was the last token created.

How?
So almost pure JS. I'm working out the seconds remaining and seconds elapsed in PHP first then passing these as two variables to the below code but you could get your values from anywhere:

What?
An article on how to quickly adapt an array code and sort by its values. Surprising how many examples are on the web and everyone saying you're doing it wrong... Which is true but quite unhelpful. The original code is not my own either but that's not an excuse. I also found that examples across the web were only partial and thought I'd write a full example here. No jQuery and using the Google Chrome browser. I wanted to:
  1. Sort the array by its values
    my_records.sort();
  2. Iterate through and output these in HTML
    for(i=0;i<my_records.length;i++){
            // do something to my_records[i]
    }

What?
This is to describe how to change the value of a field of a form from it's default when it is clicked on so that it auto-clears and changes to how it normally works.

Example?
Note the value in the below field. Now click on it and it disappears, allowing you to type normally. Clear whatever you type so the field is empty and click somewhere on the page (not on a link as this will take you to another page) and the field returns to displaying "Name:".

Why?
I've noticed a lot of solutions now use JQuery or Mootools but most of these will not work in Internet Explorer 7 which is unfortunately still in use. I needed a back-to-basics solution and this is the one I have used since my fad of JavaScript 1.2 in the 90s. For broader compatibility, this is my recommended solution.

Somewhat incomplete! Will post a final solution but here are the basics

What?
This article is a quick note to myself on the idea of a slideshow with the MooTools javascript framework. Basically, I want to create a div layer that I can see through (like a window with no glass) and for all the flashy stuff, to only appear within the boundary of the parent div layer.

Why?
I'm making a slideshow from scratch.

How?
The idea is:

Why?
This has taken me too long to figure out and I hope I don't lose this note again. The only website that was titled similarly kept slowing down my computer too much so I decided to work out my own. The complexity is due to content also being dynamically resized in height.

What?
Basically I have a menu in a sidebar, I don't want it to overlap the header nor the footer.I have a content page next to it which changes in height dynamically (a separate mootool function to this one).

How?
PHP Script: Make your own Thumbnail Generator via API

What?
Looking for an online tool that will take an image and make a thumbnail copy? This article is for me if I ever want to recreate an online tool capable of receiving an image URL and which both generates and outputs a thumbnail image and makes it downloadable via URL.

Why?
Performance. I have a client with about 10k images of products that they want to appear in a dropdown menu of a JavaScript widget. When the user first loads up the webpage containing the widget, 10k images are downloaded. I have put in a lazy loading process where it will load the first few images and as the user scrolls down the dropdown, more are loaded. This still gets buggy on certain mobile devices as some images are over 1Mb.

So I needed a tool that every time a new product is added, a thumbnail gets generated and stored in the same application. Trawling through the first few pages of Google, all the online tools that did the same had a pricing page. I can understand why you would need to limit users so I don't blame them. But if you can, why not make your own?

How?
So you will need a webserver of your own running PHP 8. The following PHP script was only tested using PHP version 8.x so I can't say whether it will work for previous versions.

I cannot take credit for this script, as I asked OpenAI's ChatGPT to write it initially, and to build upon it as I kept moving the goal posts, figuratively speaking, and changing the requirements. I am impressed however that every version it iterated, worked exactly as I asked with only 1 error where it mixed a method with a comment but thereafter, a working script every time.

What?
A quick article to stop me running into this issue again. This article serves to address the issue of importing characters from an XML in a different language character set and trying to load it in PHP with the function simplexml_load_string(). The error I get is something similar to:

PHP Warning:
simplexml_load_string(): Entity: line #: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xA0 0x3C 0x2F 0x73 in /home/public_html/my_folder/my_xml_processing_script.php on line 160


Why?
I'm downloading an XML feed to our servers, and then loading the downloaded file into memory with simplexml_load_string(). I get the above error when it is attempting to load an XML feed which is mostly in Spanish and breaks at the following XML node:

<baños>2</baños>

-> yields issue: PHP Warning:  simplexml_load_string():     <baños>2</baños> in /home/public_html/my_folder/my_xml_processing_script.php on line 160

should read

<baños>2</baños>


How?