Autocomplite (автозаполнение) из MySQL

Функция для автозаполнения input данными из таблицы `Classificator_XXXX`.

Может быть использовано в формах, упростит выбор данных из массивных списков пользователю. Используемый тип поля в CMS "список". Код не претендует на оригинальность решения.

1. index.php

<?
$classificator_item 
'item'//название поля списка (например, Region)
?>

<input name="<?=$classificator_item?>" type="text" id="<?=$classificator_item?>" class="autocomplite" value=""> 
<input type="hidden" name="f_<?=$classificator_item?>" value="">
<div id='<?=$classificator_item?>_result' ></div>

2. autocomp.php

Добавляем файл autocomp.php для выборки из таблицы списка в папку /netcat/modules/default/

<?
$NETCAT_FOLDER 
join(strstr(__FILE__"/") ? "/" "\\"array_slice(preg_split("/[\/\\\]+/"__FILE__), 0, -4)) . (strstr(__FILE__"/") ? "/" "\\");
include_once(
$NETCAT_FOLDER "vars.inc.php");
require(
$INCLUDE_FOLDER "index.php");

$autocomplite_name $_REQUEST[autocomplite_name]; //строка поиска
$autocomplite_table $_REQUEST[autocomplite_table]; //таблица для выборки

?>

<ul class='multi'>

<? 
$nc_core
->db->query("
SELECT * 
FROM  `Classificator_
{$autocomplite_table}`
WHERE `
{$autocomplite_table}_Name` LIKE '%{$autocomplite_name}%'
AND `Checked` = 1
ORDER BY `
{$autocomplite_table}_Name`
LIMIT 10
"
);
$arr $nc_core->db->last_result;
if (
$arr) {
foreach (
$arr as $row) {
  
//название
  
$autocomplite_table_name $autocomplite_table.'_Name';
    
$autocomplite_name $row->$autocomplite_table_name;
    
//id
    
$autocomplite_table_id $autocomplite_table.'_ID';
    
$autocomplite_id $row->$autocomplite_table_id;
     
//Value
    
$autocomplite_table_value $row->Value;
?>
  <li id='<?=$autocomplite_id?>' name='<?=$autocomplite_table_value?>'><?=$autocomplite_name?></li>
<? //foreach ($arr as $row)?>
<? 
} else { ?>
 <li id='not_found'>По вашему запросу <b><?=$autocomplite_name?></b> ничего не найденно.</li>
<? //if ($arr)?>

</ul>

3. script.js

Добавляем в footer, не забываем подключить библиотеку jQuery

function autocomplite() {
    $('.autocomplite').keyup(function(){
        var autocomplite_name = $(this).val(); //текст, который вводим
        var autocomplite_table = $(this).attr('id'); //таблица для выборки
        var autocomplite_result_search = '#' + autocomplite_table + '_result'; //ищем нужное поле для подстановки автокомплит
        $.ajax({
            url: "/netcat/modules/default/autocomp.php",
            data: ({
                autocomplite_name:autocomplite_name,
                autocomplite_table:autocomplite_table,
            }),  
            success: function(result){
                $(autocomplite_result_search).html(result);
                //действия после клика
                $('.multi li').click(function(){
                    var multi_id = $(this).attr('id');//находим кликнутый id
                    var multi_name = $(this).text(); //находим кликнутое название
                    var multi_value = $(this).attr('name'); //находим кликнутое название                
                    $('.multi').css({'display':'none'});//скрываем ul
                    var autocomplite_table_search = '[name=' + autocomplite_table + ']'; //находим предыдущий autocomplite
                    $(autocomplite_table_search).val(multi_name);//подставляем в поле value
                    var autocomplite_table_search_id = '[name=f_' + autocomplite_table + ']'; //находим предыдущий autocomplite для id
                    $(autocomplite_table_search_id).val(multi_id); //подставляем в поле value
                    $(autocomplite_table_search_id).attr('id', multi_value);//подставляем в поле id значение из таблицы Value
                });
            }
        });
    })
}

$(document).ready(function () {
    autocomplite(); //запуск ф-ии
})

Обзор

Платформа:
NetCat
Технологии:
PHP / JavaScript
Тип разработки:
скрипт
Просмотров:
1615
Скачать