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
- Тип разработки:
- скрипт
- Просмотров:
- 1830