Loading ...

Auto Suggest

This page demonstrates the auto suggest using xajax. This example was inspired by Ajax Suggest Tutorial and the data of U.S. states came from Wikipedia of U.S. States.

Please enter U.S. state:

Model: us_state_model.php

<?php
class us_state_model extends Model 
{
    function 
us_state_model()
    {
        
parent::Model();
    }

    function 
search_us_states($state)
    {
        
$query $this->db->query("select * from us_state where name like '" addslashes($state) . "%' order by name");

        return (
$query);
    }
}
?>

Controller: autosuggest.php

<?php
class autosuggest extends Controller
{
    function 
autosuggest()
    {
        
parent::Controller();

        
$this->load->model('us_state_model''us_state_model'true);
    }

    function 
index()
    {
        
// XAJAX
        
$this->load->library('xajax');
        
$this->xajax->registerFunction(array("auto_suggest", &$this"auto_suggest"));
        
$this->xajax->processRequests();
        
$data['xajax_js'] = $this->xajax->getJavascript(null'/js/xajax.js');

        
// load views
        
$data['head_title'] = WEBSITE_NAME " - Examples: Auto Suggest";
        
$data['highlighted_controller'] = highlight_file("autosuggest.php"TRUE);

        
// load example MVC
        
$example = new example('autosuggest'true);
        
$data['highlighted_model'] = $example->model;
        
$data['highlighted_view'] = $example->view;

        
$data['subheader'] = $this->load->view('examples_subheader'$datatrue);
        
$data['sidebar'] = $this->load->view('examples_sidebar'$datatrue);
        
$data['body_content'] = $this->load->view('autosuggest_tpl'$datatrue);        
        
$this->load->view('site_layout'$data);
    }

    function 
auto_suggest($state)
    {
        
$objResponse = new xajaxResponse();

        
$result "";

        if (isset(
$state) && $state != "")
        {
            
$query $this->us_state_model->search_us_states($state);

            if (
$query->row() > 0)
            {
                foreach (
$query->result() as $row)
                {
                    
$result .= "<div title='"$row->name "' onmouseover='javascript:suggest_over(this);'";
                    
$result .= " onmouseout='javascript:suggest_out(this);'";
                    
$result .= " onclick='javascript:set_search(this.title);' class='suggest_link'>";
                    
$result .= "<table border='0' width='170'><tr><td width='115'><b>" $row->name "</b></td><td>";
                    
$result .= "<img src='" $row->flag "' width='45' height='24' alt='" $row->name "' />";
                    
$result .= "</td></tr></table></div>";
                }

                
$objResponse->addAssign("txt_result""style.display"'block');
                
$objResponse->addAssign("txt_result""innerHTML"$result);
            }
            else 
            {
                
$objResponse->addAssign("txt_result""style.display"'none');
            }
        }
        else 
        {
            
$objResponse->addAssign("txt_result""style.display"'none');
        }

        return 
$objResponse;
    }
}
?>

View: autosuggest_tpl.php

<style type="text/css" media="screen">
    .
suggest_link {
        
background-color#FFFFFF;
        
padding2px 6px 2px 6px;
    }
    .
suggest_link_over {
        
colorwhite;
        
background-colorrgb(100,135,220);
        
padding2px 6px 2px 6px;
    }
    
#txt_result {
        
positionabsolute;
        
left336px;
        
background-color#FFFFFF; 
        
text-alignleft
        
border1px solid #000000;    
        
displaynone;
    }        
</
style>
<
script type="text/javascript">
<!--
    
xajax.loadingFunction = function(){xajax.$('loading_message').style.display='block';};
    
xajax.doneLoadingFunction = function(){xajax.$('loading_message').style.display='none';};
// -->
</script>
<script type="text/javascript">
<!--
//Mouse over function
function suggest_over(div_value) 
{
    div_value.className = 'suggest_link_over';
}

//Mouse out function
function suggest_out(div_value) 
{
    div_value.className = 'suggest_link';
}

//Click function
function set_search(value) 
{
    document.getElementById('txt_search').value = value;
    document.getElementById('txt_result').innerHTML = '';
    document.getElementById('txt_result').style.display = 'none';
}

function auto_suggest()
{
    document.getElementById('txt_result').style.display = 'none';
    xajax_auto_suggest(escape(document.getElementById('txt_search').value));
}
// -->
</script>
<div id="loading_message" class="loadingMessage">Loading ...</div>
<h1 id="introduction">Auto Suggest</h1>
<p>
This page demonstrates the auto suggest using <?=XAJAX_LINK_POPUP?>. This example was inspired by <a href="http://www.dynamicajax.com/fr/AJAX_Suggest_Tutorial-271_290_312.html" target="_new">Ajax Suggest Tutorial</a> and the data of U.S. states came from <a href="http://en.wikipedia.org/wiki/U.S._state" target="_new">Wikipedia of U.S. States</a>.
</p>

<p>
Please enter U.S. state: <input type="text" id="txt_search" name="txt_search" autocomplete="off" onkeyup="auto_suggest()" />
</p>

<div id="txt_result"></div>

<h1 id="introduction">Model: us_state_model.php</h1>
<p>
<?=$highlighted_model?>
</p>

<h1 id="introduction">Controller: autosuggest.php</h1>
<p>
<?=$highlighted_controller?>
</p>

<h1 id="introduction">View: autosuggest_tpl.php</h1>
<p>
<?=$highlighted_view?>
</p>