📌#DayOneYouTubeChannel

Have just created my YouTube channel:)(No video yet - description of video tutorial below) My really top skills are building website with PHP/JavaScript languages . Would really appreciate if I get subscribers💕. I would be uploading my first video tomorrow😍 (Live MySQL database search feature using PHP and Ajax.) . Drop a comment below on any recommendation you can give🙏

YouTube channel link : youtube.com/channel/UCBqtVqtuKCqUeBtx6FAAdPg

Steps In this tutorial you'll learn how to create a live MySQL database search feature using PHP and Ajax.

Step 1: Creating a Database Table with MySQL

You'll need a sample table .Execute the following SQL query to create the countries table in your MySQL. After creating the table, you need to populate it with some data using the SQL INSERT statement.

CREATE TABLE countries (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL
);

SQL INSERT statement

INSERT INTO Countries (Name) VALUES('Afghanistan');  
INSERT INTO Countries (Name) VALUES('Albania');  
INSERT INTO Countries (Name) VALUES('Algeria');  
INSERT INTO Countries (Name) VALUES('Andorra');  
INSERT INTO Countries (Name) VALUES('Angola');  
INSERT INTO Countries (Name) VALUES('Anguilla');  
INSERT INTO Countries (Name) VALUES('Antigua & Barbuda');  
INSERT INTO Countries (Name) VALUES('Argentina');  
INSERT INTO Countries (Name) VALUES('Armenia');  
INSERT INTO Countries (Name) VALUES('Australia');  
INSERT INTO Countries (Name) VALUES('Austria');  
INSERT INTO Countries (Name) VALUES('Azerbaijan');  
INSERT INTO Countries (Name) VALUES('Bahamas');  
INSERT INTO Countries (Name) VALUES('Bahrain');  
INSERT INTO Countries (Name) VALUES('Bangladesh');  
INSERT INTO Countries (Name) VALUES('Barbados');  
INSERT INTO Countries (Name) VALUES('Belarus');  
INSERT INTO Countries (Name) VALUES('Belgium');  
INSERT INTO Countries (Name) VALUES('Belize');  
INSERT INTO Countries (Name) VALUES('Benin');  
INSERT INTO Countries (Name) VALUES('Bermuda');  
INSERT INTO Countries (Name) VALUES('Bhutan');  
INSERT INTO Countries (Name) VALUES('Bolivia');  
INSERT INTO Countries (Name) VALUES('Bosnia & Herzegovina');  
INSERT INTO Countries (Name) VALUES('Botswana');  
INSERT INTO Countries (Name) VALUES('Brazil');  
INSERT INTO Countries (Name) VALUES('Brunei Darussalam');  
INSERT INTO Countries (Name) VALUES('Bulgaria');  
INSERT INTO Countries (Name) VALUES('Burkina Faso');  
INSERT INTO Countries (Name) VALUES('Myanmar/Burma');  
INSERT INTO Countries (Name) VALUES('Burundi');  
INSERT INTO Countries (Name) VALUES('Cambodia');  
INSERT INTO Countries (Name) VALUES('Cameroon');  
INSERT INTO Countries (Name) VALUES('Canada');  
INSERT INTO Countries (Name) VALUES('Cape Verde');  
INSERT INTO Countries (Name) VALUES('Cayman Islands');  
INSERT INTO Countries (Name) VALUES('Central African Republic');  
INSERT INTO Countries (Name) VALUES('Chad');  
INSERT INTO Countries (Name) VALUES('Chile');  
INSERT INTO Countries (Name) VALUES('China');  
INSERT INTO Countries (Name) VALUES('Colombia');  
INSERT INTO Countries (Name) VALUES('Comoros');  
INSERT INTO Countries (Name) VALUES('Congo');  
INSERT INTO Countries (Name) VALUES('Costa Rica');  
INSERT INTO Countries (Name) VALUES('Croatia');  
INSERT INTO Countries (Name) VALUES('Cuba');  
INSERT INTO Countries (Name) VALUES('Cyprus');  
INSERT INTO Countries (Name) VALUES('Czech Republic');  
INSERT INTO Countries (Name) VALUES('Democratic Republic of the Congo');  
INSERT INTO Countries (Name) VALUES('Denmark');  
INSERT INTO Countries (Name) VALUES('Djibouti');  
INSERT INTO Countries (Name) VALUES('Dominican Republic');  
INSERT INTO Countries (Name) VALUES('Dominica');  
INSERT INTO Countries (Name) VALUES('Ecuador');  
INSERT INTO Countries (Name) VALUES('Egypt');  
INSERT INTO Countries (Name) VALUES('El Salvador');  
INSERT INTO Countries (Name) VALUES('Equatorial Guinea');  
INSERT INTO Countries (Name) VALUES('Eritrea');  
INSERT INTO Countries (Name) VALUES('Estonia');  
INSERT INTO Countries (Name) VALUES('Ethiopia');  
INSERT INTO Countries (Name) VALUES('Fiji');  
INSERT INTO Countries (Name) VALUES('Finland');  
INSERT INTO Countries (Name) VALUES('France');  
INSERT INTO Countries (Name) VALUES('French Guiana');  
INSERT INTO Countries (Name) VALUES('Gabon');  
INSERT INTO Countries (Name) VALUES('Gambia');  
INSERT INTO Countries (Name) VALUES('Georgia');  
INSERT INTO Countries (Name) VALUES('Germany');  
INSERT INTO Countries (Name) VALUES('Ghana');  
INSERT INTO Countries (Name) VALUES('Great Britain');  
INSERT INTO Countries (Name) VALUES('Greece');  
INSERT INTO Countries (Name) VALUES('Grenada');  
INSERT INTO Countries (Name) VALUES('Guadeloupe');  
INSERT INTO Countries (Name) VALUES('Guatemala');  
INSERT INTO Countries (Name) VALUES('Guinea');  
INSERT INTO Countries (Name) VALUES('Guinea-Bissau');  
INSERT INTO Countries (Name) VALUES('Guyana');  
INSERT INTO Countries (Name) VALUES('Haiti');  
INSERT INTO Countries (Name) VALUES('Honduras');  
INSERT INTO Countries (Name) VALUES('Hungary');  
INSERT INTO Countries (Name) VALUES('Iceland');  
INSERT INTO Countries (Name) VALUES('India');  
INSERT INTO Countries (Name) VALUES('Indonesia');  
INSERT INTO Countries (Name) VALUES('Iran');  
INSERT INTO Countries (Name) VALUES('Iraq');  
INSERT INTO Countries (Name) VALUES('Israel and the Occupied Territories');  
INSERT INTO Countries (Name) VALUES('Italy');  
INSERT INTO Countries (Name) VALUES('Ivory Coast (Cote d''Ivoire)');  
INSERT INTO Countries (Name) VALUES('Jamaica');  
INSERT INTO Countries (Name) VALUES('Japan');  
INSERT INTO Countries (Name) VALUES('Jordan');  
INSERT INTO Countries (Name) VALUES('Kazakhstan');  
INSERT INTO Countries (Name) VALUES('Kenya');  
INSERT INTO Countries (Name) VALUES('Kosovo');  
INSERT INTO Countries (Name) VALUES('Kuwait');  
INSERT INTO Countries (Name) VALUES('Kyrgyz Republic (Kyrgyzstan)');  
INSERT INTO Countries (Name) VALUES('Laos');  
INSERT INTO Countries (Name) VALUES('Latvia');  
INSERT INTO Countries (Name) VALUES('Lebanon');  
INSERT INTO Countries (Name) VALUES('Lesotho');  
INSERT INTO Countries (Name) VALUES('Liberia');  
INSERT INTO Countries (Name) VALUES('Libya');  
INSERT INTO Countries (Name) VALUES('Liechtenstein');  
INSERT INTO Countries (Name) VALUES('Lithuania');  
INSERT INTO Countries (Name) VALUES('Luxembourg');  
INSERT INTO Countries (Name) VALUES('Republic of Macedonia');  
INSERT INTO Countries (Name) VALUES('Madagascar');  
INSERT INTO Countries (Name) VALUES('Malawi');  
INSERT INTO Countries (Name) VALUES('Malaysia');  
INSERT INTO Countries (Name) VALUES('Maldives');  
INSERT INTO Countries (Name) VALUES('Mali');  
INSERT INTO Countries (Name) VALUES('Malta');  
INSERT INTO Countries (Name) VALUES('Martinique');  
INSERT INTO Countries (Name) VALUES('Mauritania');  
INSERT INTO Countries (Name) VALUES('Mauritius');  
INSERT INTO Countries (Name) VALUES('Mayotte');  
INSERT INTO Countries (Name) VALUES('Mexico');  
INSERT INTO Countries (Name) VALUES('Moldova, Republic of');  
INSERT INTO Countries (Name) VALUES('Monaco');  
INSERT INTO Countries (Name) VALUES('Mongolia');  
INSERT INTO Countries (Name) VALUES('Montenegro');  
INSERT INTO Countries (Name) VALUES('Montserrat');  
INSERT INTO Countries (Name) VALUES('Morocco');  
INSERT INTO Countries (Name) VALUES('Mozambique');  
INSERT INTO Countries (Name) VALUES('Namibia');  
INSERT INTO Countries (Name) VALUES('Nepal');  
INSERT INTO Countries (Name) VALUES('Netherlands');  
INSERT INTO Countries (Name) VALUES('New Zealand');  
INSERT INTO Countries (Name) VALUES('Nicaragua');  
INSERT INTO Countries (Name) VALUES('Niger');  
INSERT INTO Countries (Name) VALUES('Nigeria');  
INSERT INTO Countries (Name) VALUES('Korea, Democratic Republic of (North Korea)');  
INSERT INTO Countries (Name) VALUES('Norway');  
INSERT INTO Countries (Name) VALUES('Oman');  
INSERT INTO Countries (Name) VALUES('Pacific Islands');  
INSERT INTO Countries (Name) VALUES('Pakistan');  
INSERT INTO Countries (Name) VALUES('Panama');  
INSERT INTO Countries (Name) VALUES('Papua New Guinea');  
INSERT INTO Countries (Name) VALUES('Paraguay');  
INSERT INTO Countries (Name) VALUES('Peru');  
INSERT INTO Countries (Name) VALUES('Philippines');  
INSERT INTO Countries (Name) VALUES('Poland');  
INSERT INTO Countries (Name) VALUES('Portugal');  
INSERT INTO Countries (Name) VALUES('Puerto Rico');  
INSERT INTO Countries (Name) VALUES('Qatar');  
INSERT INTO Countries (Name) VALUES('Reunion');  
INSERT INTO Countries (Name) VALUES('Romania');  
INSERT INTO Countries (Name) VALUES('Russian Federation');  
INSERT INTO Countries (Name) VALUES('Rwanda');  
INSERT INTO Countries (Name) VALUES('Saint Kitts and Nevis');  
INSERT INTO Countries (Name) VALUES('Saint Lucia');  
INSERT INTO Countries (Name) VALUES('Saint Vincent''s & Grenadines');  
INSERT INTO Countries (Name) VALUES('Samoa');  
INSERT INTO Countries (Name) VALUES('Sao Tome and Principe');  
INSERT INTO Countries (Name) VALUES('Saudi Arabia');  
INSERT INTO Countries (Name) VALUES('Senegal');  
INSERT INTO Countries (Name) VALUES('Serbia');  
INSERT INTO Countries (Name) VALUES('Seychelles');  
INSERT INTO Countries (Name) VALUES('Sierra Leone');  
INSERT INTO Countries (Name) VALUES('Singapore');  
INSERT INTO Countries (Name) VALUES('Slovak Republic (Slovakia)');  
INSERT INTO Countries (Name) VALUES('Slovenia');  
INSERT INTO Countries (Name) VALUES('Solomon Islands');  
INSERT INTO Countries (Name) VALUES('Somalia');  
INSERT INTO Countries (Name) VALUES('South Africa');  
INSERT INTO Countries (Name) VALUES('Korea, Republic of (South Korea)');  
INSERT INTO Countries (Name) VALUES('South Sudan');  
INSERT INTO Countries (Name) VALUES('Spain');  
INSERT INTO Countries (Name) VALUES('Sri Lanka');  
INSERT INTO Countries (Name) VALUES('Sudan');  
INSERT INTO Countries (Name) VALUES('Suriname');  
INSERT INTO Countries (Name) VALUES('Swaziland');  
INSERT INTO Countries (Name) VALUES('Sweden');  
INSERT INTO Countries (Name) VALUES('Switzerland');  
INSERT INTO Countries (Name) VALUES('Syria');  
INSERT INTO Countries (Name) VALUES('Tajikistan');  
INSERT INTO Countries (Name) VALUES('Tanzania');  
INSERT INTO Countries (Name) VALUES('Thailand');  
INSERT INTO Countries (Name) VALUES('Timor Leste');  
INSERT INTO Countries (Name) VALUES('Togo');  
INSERT INTO Countries (Name) VALUES('Trinidad & Tobago');  
INSERT INTO Countries (Name) VALUES('Tunisia');  
INSERT INTO Countries (Name) VALUES('Turkey');  
INSERT INTO Countries (Name) VALUES('Turkmenistan');  
INSERT INTO Countries (Name) VALUES('Turks & Caicos Islands');  
INSERT INTO Countries (Name) VALUES('Uganda');  
INSERT INTO Countries (Name) VALUES('Ukraine');  
INSERT INTO Countries (Name) VALUES('United Arab Emirates');  
INSERT INTO Countries (Name) VALUES('United States of America (USA)');  
INSERT INTO Countries (Name) VALUES('Uruguay');  
INSERT INTO Countries (Name) VALUES('Uzbekistan');  
INSERT INTO Countries (Name) VALUES('Venezuela');  
INSERT INTO Countries (Name) VALUES('Vietnam');  
INSERT INTO Countries (Name) VALUES('Virgin Islands (UK)');  
INSERT INTO Countries (Name) VALUES('Virgin Islands (US)');  
INSERT INTO Countries (Name) VALUES('Yemen');  
INSERT INTO Countries (Name) VALUES('Zambia');  
INSERT INTO Countries (Name) VALUES('Zimbabwe');

Step 2: Creating the Search Form Now, let's create a simple web interface that allows user to live search the names of countries available in our countries table, just like an autocomplete or typeahead.

Create a PHP file named "form.php" and put the following code inside of it.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> Live  Database Search</title>
<style type="text/css">
    body{
        font-family: Arail, sans-serif;
    }
    /* Formatting search box */
    .search-box{
        width: 300px;
        position: relative;
        display: inline-block;
        font-size: 14px;
    }
    .search-box input[type="text"]{
        height: 32px;
        padding: 5px 10px;
        border: 1px solid #CCCCCC;
        font-size: 14px;
    }
    .result{
        position: absolute;        
        z-index: 999;
        top: 100%;
        left: 0;
    }
    .search-box input[type="text"], .result{
        width: 100%;
        box-sizing: border-box;
    }
    /* Formatting result items */
    .result p{
        margin: 0;
        padding: 7px 10px;
        border: 1px solid #CCCCCC;
        border-top: none;
        cursor: pointer;
    }
    .result p:hover{
        background: #f2f2f2;
    }
</style>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('.search-box input[type="text"]').on("keyup input", function(){
        /* Get input value on change */
        var inputVal = $(this).val();
        var resultDropdown = $(this).siblings(".result");
        if(inputVal.length){
            $.get("backend-search.php", {term: inputVal}).done(function(data){
                // Display the returned data in browser
                resultDropdown.html(data);
            });
        } else{
            resultDropdown.empty();
        }
    });

    // Set search input value on click of result item
    $(document).on("click", ".result p", function(){
        $(this).parents(".search-box").find('input[type="text"]').val($(this).text());
        $(this).parent(".result").empty();
    });
});
</script>
</head>
<body>
    <div class="search-box">
        <input type="text" autocomplete="off" placeholder="Search country..." />
        <div class="result"></div>
    </div>
</body>
</html>

Every time the content of search input is changed or keyup event occur on search input the jQuery code sent an Ajax request to the "live_search.php" file which retrieves the records from countries table related to the searched term. Those records later will be inserted inside a

by the jQuery and displayed on the browser.

Step 3: Processing Search Query in Backend And here's the source code of our "live_search.php" file which searches the database based on query string sent by the Ajax request and send the results back to browser.

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "databasename");

// Check connection
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}

if(isset($_REQUEST["term"])){
    // Prepare a select statement
    $sql = "SELECT * FROM countries WHERE name LIKE ?";

    if($stmt = $mysqli->prepare($sql)){
        // Bind variables to the prepared statement as parameters
        $stmt->bind_param("s", $param_term);

        // Set parameters
        $param_term = $_REQUEST["term"] . '%';

        // Attempt to execute the prepared statement
        if($stmt->execute()){
            $result = $stmt->get_result();

            // Check number of rows in the result set
            if($result->num_rows > 0){
                // Fetch result rows as an associative array
                while($row = $result->fetch_array(MYSQLI_ASSOC)){
                    echo "<p>" . $row["name"] . "</p>";
                }
            } else{
                echo "<p>No matches found</p>";
            }
        } else{
            echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
        }
    }

    // Close statement
    $stmt->close();
}

// Close connection
$mysqli->close();
?>

Click here to check out my YouTube Channel🙂🙂