Skip to main content

PHP: Recording Page Hits

Wanted to create something that was easy to use, maintain and grow. It's extremely basic as it is. It stores the page visited and if the user is logged in, their id; if the user is not logged in, it currently stores "0" as the user id.

Later, this class might expand to store the user's browsing history by recording their IP address and the pages that they visit.

You'll first need to create 2 tables within your database: pages and statistics. You'll need 3 but I'll show you how to create two. The third one is users that you should probably already have if your users are logging in at all. Note: I'll show you how to create the ReportError class in my next post.

The pages stores the URI for each page. You don't want to store the page within the statistics table, just the id. This is for optimization and to minimize repetitiveness.


The next table is the statistics table. This table contains the id's referencing other tables and the times the page was accessed by the individual user. All non-logged-in users are grouped together. The users_id references your users table (you'll need to have a constant id for the user logged in). If the user is not logged in, he or she is assigned the value of 0. The page_id stores the id for that particular page located in the pages table. The times_accessed column stores the amount of times that particular combination occurred (i.e. the unique id and page id combination: you'll need to have both the users_id and page_id set to PRIMARY to use the ON DUPLICATE KEY UPDATE feature listed in the code below).


When the user logs in, you'll need to save their id into the session variable.

When the main() method within the StoreHistory class gets called, the following steps take place:
  • Instantiate the Database Connection and Error Reporting classes
  • Establish connection to the database
  • Initialize the $_page_id property
  • If the page was never accessed before, store the page URI and the today's date.
  • If the page was previously accessed update the last_accessed column with today's date.
  • You'll notice in the code that I also set id = LAST_INSERT_ID(id). You'll need to use this when the ON DUPLICATE KEY UPDATE is called and you want to still retrieve the last insert_id.
  • Check whether $_SESSION['users_id'] is active and not empty. If not, store the users_id otherwise store "0" as the value.
  • If this is the first time that this unique combination is being stored within the statistics table, insert the value of "1" into the times_accessed column; otherwise, update the times_accessed table by adding 1 to it.

Comments

Popular posts from this blog

Beginner Java Exercise: Sentinel Values and Do-While Loops

In my previous post on while loops, we used a loop-continuation-condition to test the arguments. In this example, we'll loop at a sentinel-controlled loop. The sentinel value is a special input value that tests the condition within the while loop. To jump right to it, we'll test if an int variable is not equal to 0. The data != 0 within the while (data != 0) { ... } is the sentinel-controlled-condition. In the following example, we'll keep adding an integer to itself until the user enters 0. Once the user enters 0, the loop will break and the user will be displayed with the sum of all of the integers that he/she has entered. As you can see from the code above, the code is somewhat redundant. It asks the user to enter an integer twice: Once before the loop begins, and an x amount of times within the loop (until the user enters 0). A better approach would be through a do-while loop. In a do-while loop, you "do" something "while" the condition...

Programming Language Concepts Test Questions/Answers

One of the easiest methods that I use to learn new topics is by creating notes on the subject and then by turning those notes into questions and answers. Remembering answers to questions just seems more natural. I was able to memorize 323 questions and answers in a matter of a couple of days. I wanted to start doing this for some topics that I find pretty interesting. To begin, here are some questions and answers to Programming Language Concepts (PLC). I'm reading your mind right now and the answer is yes, there will be more. 1. Name 3 reasons for studying PLC. - Better understanding of current programming languages - Advancement of computing - Increased capability to express ideas - Increased capability to learn new programming language. - Better understanding of which programming language to choose.  2. Name the 5 programming domains and languages best suited for each. - Scientific (Fortran, ALGOL 60) - Business (COBOL) - AI (Lisp, Scheme, Prolog) - Web (PHP, ...

Laravel 6.x with React and react-router

This will get you started on getting your first React/Laravel application deployed to your server. We'll cover everything from installation to deployment. Start by reading the installation instructions on  https://laravel.com/docs/6.x#installing-laravel . We'll cover those details below. Setting Up Laravel Check that you have the latest version of PHP installed on your computer.  It must be >= 7.2.0. Open terminal to get the Laravel installation tool. Type in composer global require laravel/installer Type in laravel to verify installation. Navigate to a directory on your computer where you want to install your project on your terminal. Run the following command: laravel new project_name (replace project_name with your project name). Once complete, cd into your new project. Type the following command: php artisan serve. You'll get a message like the following if it's running successfully: Laravel development server started: http://127.0.0.1:8000 ...