Coding With Fun
Home Docker Django Node.js Articles Python pip guide FAQ Policy

AJAX database


May 08, 2021 AJAX


Table of contents


AJAX database


Database: The database can be regarded as an electronic filing cabinet - the place where electronic files are stored, users can add, intercept, update, delete and other data in the file.

Common relationship databases are MySQL, SQLSERVER, Oracle, Sybase, DB2, and more.

You can find tutorials on using databases on the w3cschool home page.

AJAX can be used to communicate dynamically with the database.

Through this section, you'll learn about AJAX's dynamic loading of databases.

AJAX database instance

The following example shows how a web page can read information from a database through AJAX: Select a customer in the drop-down list below:

Example

Select a customer:Alfreds FutterkisteNorth/SouthWolski Zajazd
Customer info will be listed here...

Try it out . . .

Example Interpretation - ShowCustomer() function


When a user selects a customer in the drop-down list above, a function named "showCustomer()" is executed. The function is triggered by the "onchange" event:

function showCustomer(str)
{
var xmlhttp;
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getcustomer.html?q="+str,true);
xmlhttp.send();
}

The showCustomer() function performs the following tasks:

  • Check to see if a customer has been selected

  • Create an XMLHttpRequest object

  • The function created is executed when the server response is ready

  • Send the request to the file on the server

  • Note that we added a parameter q to the URL (with content in the input field)


AJAX server page


The server page called by JavaScript above is a PHP file named "getcustomer .php."

It is also easy to write server files with PHP, or in other server languages. Take a look at the corresponding examples written with PHP.

The source code in getcustomer .php is responsible for querying the database and returning the results in HTML tables:

<%        
response.expires=-1        
sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="        
sql=sql & "'" & request.querystring("q") & "'"        
        
set conn=Server.CreateObject("ADODB.Connection")        
conn.Provider="Microsoft.Jet.OLEDB.4.0"        
conn.Open(Server.Mappath("/db/northwind.mdb"))        
set rs=Server.CreateObject("ADODB.recordset")        
rs.Open sql,conn        
        
response.write("<table>")        
do until rs.EOF        
    for each x in rs.Fields        
          response.write("<tr><td><b>" & x.name & "</b></td>")        
          response.write("<td>" & x.value & "</td></tr>")        
    next        
    rs.MoveNext        
loop        
response.write("</table>")        
%>


Instance Interpretation - AJAX accesses information from the database


To make it clear how easy it is to access information from a database using AJAX, we will dynamically build MySQL queries and display the results .html "ajax". Before we begin, let's do the basics and create the table using the following commands.

Note: We assume that you have sufficient permissions to perform the following MySQL operations.

CREATE TABLE 'ajax_example' (
   'name' varchar(50) NOT NULL,
   'age' int(11) NOT NULL,
   'sex' varchar(1) NOT NULL,
   'wpm' int(11) NOT NULL,
   PRIMARY KEY  ('name')
)

Now use the following SQL statement to dump the following data into this table:

INSERT INTO 'ajax_example' VALUES ('Jerry', 120, 'm', 20);
INSERT INTO 'ajax_example' VALUES ('Regis', 75, 'm', 44);
INSERT INTO 'ajax_example' VALUES ('Frank', 45, 'm', 87);
INSERT INTO 'ajax_example' VALUES ('Jill', 22, 'f', 72);
INSERT INTO 'ajax_example' VALUES ('Tracy', 27, 'f', 0);
INSERT INTO 'ajax_example' VALUES ('Julie', 35, 'f', 90);

Client HTML file

Now let's have the client HTML file, the ajax .html, which will have the following code:

<html>
   <body>
      <script language = "javascript" type = "text/javascript">
         <!-- 
         //Browser Support Code
         function ajaxFunction() {
            var ajaxRequest;  // The variable that makes Ajax possible!
            
            try {        
               // Opera 8.0+, Firefox, Safari
               ajaxRequest = new XMLHttpRequest();
            } catch (e) {
               
               // Internet Explorer Browsers
               try {
                  ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
               } catch (e) {
                  
                  try {
                     ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                  } catch (e) {
                     // Something went wrong
                     alert("Your browser broke!");
                     return false;
                  }
               }
            }
            
            // Create a function that will receive data
            // sent from the server and will update
            // div section in the same page.
            ajaxRequest.onreadystatechange = function() {
            
               if(ajaxRequest.readyState == 4) {
                  var ajaxDisplay = document.getElementById('ajaxDiv');
                  ajaxDisplay.innerHTML = ajaxRequest.responseText;
               }
            }
            
            // Now get the value from user and pass it to
            // server script.
            var age = document.getElementById('age').value;
            var wpm = document.getElementById('wpm').value;
            var sex = document.getElementById('sex').value;
            var queryString = "?age = " + age ;
            
            queryString +=  "&wpm = " + wpm + "&sex = " + sex;
            ajaxRequest.open("GET", "ajax-example.php" + queryString, true);
            ajaxRequest.send(null); 
         }
         //-->
      </script>

      <form name = 'myForm'>
         Max Age: <input type = 'text' id = 'age' /> <br />
         Max WPM: <input type = 'text' id = 'wpm' /> <br />
         Sex: 
         
         <select id = 'sex'>
            <option value = "m">m</option>
            <option value = "f">f</option>
         </select>
         
         <input type = 'button' onclick = 'ajaxFunction()' value = 'Query MySQL'/>
      </form>
      
      <div id = 'ajaxDiv'>Your result will display here</div>
   </body>
</html>

Note: The way variables are passed in Qury is based on HTTP standards and has a formA.

URL?variable1 = value1;&variable2 = value2;

The code above will provide you with the following interface:

AJAX database

Server-side PHP files

Your client script is ready. Now we have to write our server-side script, which takes theage, wpm, and sex from the database and sends it back to the client.

Put the following code into the file "ajax-.php".

<?php
$dbhost = "localhost";
$dbuser = "dbusername";
$dbpass = "dbpassword";
$dbname = "dbname";
	
//Connect to MySQL Server
mysql_connect($dbhost, $dbuser, $dbpass);
	
//Select Database
mysql_select_db($dbname) or die(mysql_error());
	
// Retrieve data from Query String
$age = $_GET['age'];
$sex = $_GET['sex'];
$wpm = $_GET['wpm'];
	
// Escape User Input to help prevent SQL Injection
$age = mysql_real_escape_string($age);
$sex = mysql_real_escape_string($sex);
$wpm = mysql_real_escape_string($wpm);
	
//build query
$query = "SELECT * FROM ajax_example WHERE sex = '$sex'";

if(is_numeric($age))
   $query .= " AND age <= $age";

if(is_numeric($wpm))
   $query .= " AND wpm <= $wpm";
	
//Execute query
$qry_result = mysql_query($query) or die(mysql_error());

//Build Result String
$display_string = "<table>";
$display_string .= "<tr>";
$display_string .= "<th>Name</th>";
$display_string .= "<th>Age</th>";
$display_string .= "<th>Sex</th>";
$display_string .= "<th>WPM</th>";
$display_string .= "</tr>";

// Insert a new row in the table for each person returned
while($row = mysql_fetch_array($qry_result)) {
   $display_string .= "<tr>";
   $display_string .= "<td>$row[name]</td>";
   $display_string .= "<td>$row[age]</td>";
   $display_string .= "<td>$row[sex]</td>";
   $display_string .= "<td>$row[wpm]</td>";
   $display_string .= "</tr>";
}

echo "Query: " . $query . "<br />";
$display_string .= "</table>";

echo $display_string;
?>

Now try entering a valid value (for example, 120) in Max Age or any other box, and then click the Queen MySQL button.


Database-related tutorials


SQL tutorial

Redis tutorial

MongoDB tutorial