Verification: a143cc29221c9be0

Online voting system in php

Step 1) Database Connectivity

This section assumes knowledge of MySQL and how to administer it, if you are not familiar with these MySQL, check our SQL tutorials section.

Our application will have one table only with 3 fields namely;

  • id – auto-generate number as the primary key
  • choice – the number representing a presidential candidate
  • ts – the timestamp for the vote

The script below creates our js_libraries table.

Step 2) Coding our application

Let’s now create our business logic layer that will handle the database connectivity. 'opinion_poll_model.php'

db_handle = mysqli_connect($this->host, $this->uid, $this->pwd); //connect to MySQL server

        if (!$this->db_handle) die("Unable to connect to MySQL: " . mysqli_error());

        if (!mysqli_select_db($this->db_handle,$this->db)) die("Unable to select database: " . mysqli_error());


    private function execute_query($sql_stmt) {

        $result = mysqli_query($db_handle,$sql_stmt); //execute SQL statement

        return !$result ? FALSE : TRUE;


    public function select($sql_stmt) {

        $result = mysqli_query($db_handle,$sql_stmt);

        if (!$result) die("Database access failed: " . mysqli_error());

        $rows = mysqli_num_rows($result);

        $data = array();

        if ($rows) {

            while ($row = mysqli_fetch_array($result)) {

                $data = $row;



        return $data;


    public function insert($sql_stmt) {

        return $this->execute_query($sql_stmt);


    public function __destruct(){






  • “public function __construct()” is the class constructor method that is used to establish the database connection
  • “public function execute_query(…)” is the method for executing queries such as insert, update and delete
  • “public function select” is the method for retrieving data from the database and returning a numeric array.
  • “public function insert(…)” is the insert method that calls the execute_query method.
  • “public function __destruct()” is the class destructor that closes the database connection.

Let’s now create the front controller index.php

alert('You did not vote!');";


if (count($_POST) > 1) {

    $ts = date("Y-m-d H:i:s");

    $option = $_POST['vote'][0];

    $sql_stmt = "INSERT INTO js_libraries (`choice`,`ts`) VALUES ($option,'$ts')";


    $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries;";

    $choices_count = $model->select($sql_stmt);

    $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow");

    $table_rows = '';

    for ($i = 1; $i select($sql_stmt);

        $table_rows .= "
" . $ libraries [$i] . " Got:

" . $result[0] . " votes


    require 'results.html.php';



require 'opinion.html.php';



  • “require 'opinion_poll_model.php';” loads the business logic class
  • “$model = new Opinion_poll_model();” creates an instance of the business logic class
  • “if (count($_POST) == 1)…” performs the data validation and uses JavaScript to display a message box if not candidate has been voted for.
  • “if (count($_POST) > 1)…” checks if a vote has been selected by counting the number of items in the $_POST array. If no item has been select, the $_POST will only contain the submit item. If a candidate has been chosen, the $_POST array will two elements, the submit and vote item. This code is also used to insert a new vote record and then display the results page
  • “exit;” is used to terminate the script execution after the results have been displayed so that the opinion poll form is not displayed.
  • “require 'opinion.html.php';” displays the opinion poll form if nothing has been selected.

Let’s now create the views. opinion.html.php


        JavaScript Libraries - Opinion Poll




JavaScript Libraries - Opinion Poll


What is your favorite JavaScript?


YUI Library                





        JavaScript Libraries Poll Results




Opinion Poll Results


What is your favorite JavaScript Library?


people have thus far taken part in this poll:



Step 3) Testing our application

Assuming you have saved the files in opinionpoll folder, browse to the URL http://localhost/opinionpoll/

If you click on the Ok button without selecting a JS library, you will get the following message box.

Select a JS library then click on OK button. You will get the results page similar to the one shown below.