Thursday, 4 April 2013

jQuery Sliding Boxes with Captions on Mouseover using HTML5, CSS3

When i am working on one of my project, i need to work on AJAX. So i started googling about AJAX how to's. So i started learning AJAX slowly and steadily. After completion of learning AJAX i started working on AJAX Auto complete suggest feature. So i tried hard to work on that finally i got the solution from one of the online resource. I hope you are also one of the guy who is looking for such kind of solution. So i thought i should share this to my online users. One thing every one should get this in their mind that what actually an AJAX Auto complete is? Perhaps i too didn't have any idea but after working on that i came to know.

So let's see what an AJAX Auto complete suggest is? As a web developer almost all us in our daily life, use Google at its best. When we start googling like "how to" or "AJAX tutorial" etc then the Google will show some results beneath its search text box. See below picture for better understanding. So this feature is called as AJAX Auto complete Suggest Feature. Now a days all of the websites have this feature.


Now Let's see how to design such an application.

Step 1: Design the Database. 

See the below picture for better understanding of database design. In this tutorial, i have just created one table for demonstration purpose. The process is same for the bigger database also. In this tutorial i assumed the database name as "phphunger_ajax_autocomplete" and table name as "games". Change the names as your wish.


Create the table as "games"

CREATE TABLE IF NOT EXISTS `games` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM  DEFAULT CHARSET=latin1;


Dump some data into the table "games"

INSERT INTO `games` (`id`, `name`) VALUES (1, 'Angry Birds'), (2, 'Angry Birds Space'), (3, 'Angry Birds Space Battle'), (4, 'Babe Rescue'), (5, 'Ball Defence'), (6, 'Ball Defence  2');

Once the database design phase is over the next step is to design the front end for the user from where he starts searching the content.

Step 2: Design the HTML Form

Here add one Textbox on the HTML Form which communicates with AJAX and fetches data from the back-end to the front-end. See below picture how the form looks like. Name the file as "index.html"




Step 3: Write AJAX Code

Write some javascript code which includes the AJAX Request, Response logic. See below code. Name the file as "suggest.js"

suggest.js
function getXmlHttpRequestObject() {
 if (window.XMLHttpRequest) {
  return new XMLHttpRequest();
 } else if(window.ActiveXObject) {
  return new ActiveXObject("Microsoft.XMLHTTP");
 } else {
  alert("Your Browser Sucks!");
 }
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest() {
 if (searchReq.readyState == 4 || searchReq.readyState == 0) {
  var str = escape(document.getElementById('dbTxt').value);
  searchReq.open("GET", 'searchSuggest.php?search=' + str, true);
  searchReq.onreadystatechange = handleSearchSuggest;
  searchReq.send(null);
 }
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
 if (searchReq.readyState == 4) {
         var ss = document.getElementById('layer1');
  var str1 = document.getElementById('dbTxt');
  var curLeft=0;
  if (str1.offsetParent){
      while (str1.offsetParent){
   curLeft += str1.offsetLeft;
   str1 = str1.offsetParent;
      }
  }
  var str2 = document.getElementById('dbTxt');
  var curTop=20;
  if (str2.offsetParent){
      while (str2.offsetParent){
   curTop += str2.offsetTop;
   str2 = str2.offsetParent;
      }
  }
  var str =searchReq.responseText.split("\n");
  if(str.length==1)
      document.getElementById('layer1').style.visibility = "hidden";
  else
      ss.setAttribute('style','position:absolute;top:'+curTop+';left:'+curLeft+';width:250;z-index:1;padding:5px;border: 1px solid #000000; overflow:auto; height:105; background-color:#F5F5FF;');
  ss.innerHTML = '';
  for(i=0; i < str.length - 1; i++) {
   //Build our element string.  This is cleaner using the DOM, but
   //IE doesn't support dynamically added attributes.
   var suggest = '<div class="small" onclick="javascript:setSearch(this.innerHTML);" onmouseout="javascript:suggestOut(this);" onmouseover="javascript:suggestOver(this);" suggest="">
' + str[i] + '</div>';
   ss.innerHTML += suggest;
  }
 }
}

//Mouse over function
function suggestOver(div_value) {
 div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
 div_value.className = 'suggest_link';
}
//Click function
function setSearch(value) {
 document.getElementById('dbTxt').value = value;
 document.getElementById('layer1').innerHTML = '';
 document.getElementById('layer1').style.visibility = "hidden";
}





Step 4: Connect to Database and Fetch Results.

This is the file for database connection and fetching results from table. Name it as searchSuggest.php That's what an AJAX Autocomplete feature. Use this code snippet if your requirement matches. Do play with this code. Happy coding.

Thursday, 14 March 2013

Sliding Boxes and Captions with JQuery

Ben 10 Game

Click To Play

Ben 10 Game

Click To Play

Ben 10 Game

Click To Play

Tuesday, 26 February 2013

test 1

Generally dynamic websites hosts tons of data with them. Searching for a particular thing is very tedious task if websites don't have proper searching functionality. For such requirement this search tool is perfect if you want a quick and easy way to search your dynamic websites.

Having a search feature on a dynamic website is very handy for helping users find exactly what they are looking for. Almost all users now prefer different search engines to find what they are looking for. Search engines range from something very simple to very complicated as Google, MSN, Bing, Yahoo etc. In this tutorial, our scope is limited to searching a simple database table and extract those results from database. I hope it gives a little idea to build bigger search engine for developing more complex search engine like Google.

This tutorial assumes whatever the data you want to search will be stored in the MySQL Database table. In this tutorial, we will use a simple query to search the data from the MySQL database table. No complex algorithms will be used. Using of such complex algorithms is beyond our tutorial's limit.

Before we start off this tutorial, we need a database. The code below will create a testing database to use as you work through the tutorial.

 Step 1: Creating a database called "search-engine" and table called "mobiles".
<script type="syntaxhighlighter" class="brush:html">
--
-- Database: `search-engine`
--

-- --------------------------------------------------------

--
-- Database creation for `search-engine`
--

CREATE DATABASE search-engine;

--
-- Table structure for table `mobiles`
--

CREATE TABLE IF NOT EXISTS `mobiles` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `type` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Dumping data for table `mobiles`
--

INSERT INTO `mobiles` (`id`, `name`, `type`) VALUES
(1, 'Samsung Wave', 'Bada OS'),
(2, 'Samsung Note', 'Android'),
(3, 'Nokia Lumia', 'Windows OS'),
(4, 'IPhone', 'IOS'),
(5, 'Motorola', 'Android'),
(6, 'Samsung Galaxy', 'Android');
</script>