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(){

        mysqli_close($this->db_handle);

    }

}

?>

  HERE,

  • “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')";

    $model->insert($sql_stmt);

    $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';

    exit;

}

require 'opinion.html.php';

?>

  HERE,

  • “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?

       
           

JQuery                
MooToolsl                
YUI Library                
Glow            

           

       
   

  results.html.php


    

        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.