[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите разобраться со скриптом JQGrid php
sctr
Люди добрые помогите. Изучаю jqgrid с сайта http://www.linkexchanger.su/2010/523.html . Последний пример Ведущая и ведомая jqGrid. У меня никак не получается отобразить в двух таблицах данные. А уж и темболее связать их.
У меня задача такая: Имеется две таблицы . надо 1 запись с одной таблицы связать с другим с другой таблицы по клике на кнопку Связать.
Структура таблицы test : id(int), cod(int), fam(varchar), otch(varchar)
Структура таблицы tests : id(int), cod(int), name(varchar), names(varchar)
p3e5.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
Осваиваем jqGrid с Linkexchanger</title>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />

<link
rel="stylesheet" type="text/css" media="screen" href="css/flick/jquery-ui-1.7.2.custom.css" />
<link
rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />

<style
type="text/css">
html, body {
margin: 0;
padding: 0;
font-size: 80%;
}

label{
font-size: 20px;
}


.ui-state-error { height: 250px; line-height: 0px; }
#interfaceBody .ui-state-error{
margin-top: 10px;
}
</style>


<script
type="text/javascript" src="js/jquery-1.4.2.min.js"></script>

<script
type="text/javascript" src="js/jquery-ui-1.8.custom.min.js"></script>

<script
type="text/javascript" src="js/i18n/grid.locale-ru.js"></script>
<script
type="text/javascript" src="js/jquery.jqgrid.min.js"></script>

<script
type="text/javascript">
$(function(){
//-------------------------------------------------------------------
// Функция-обработчик

function stickTogether(){
if($('#link').is(':checked')){
// Флаг "Связать таблицы" утановлен
var masterId = $('#interfaceBody > DIV:first').attr('id'); //Определяем ID контейнера "ведущей таблицы"
var masterPostData = $('#table_'+masterId).jqGrid('getGridParam','postData'); //Получаем весь объект postData "ведущей таблицы"
var selId = $('#table_'+masterId).jqGrid('getGridParam','selrow'); //Получаем id записи в выделенной строке
//не путайте с rowIndex
// Проверяем какое текущее значение фильтра ведущей таблицы, он должен быть сброшен (например null)

if(masterPostData.filterBy){
$('#table_'+masterId).jqGrid('setGridParam',{'postData':{'filterBy':null}}); //Сбрасываем значение фильтра
$('#table_'+masterId).trigger('reloadGrid'); //Перезагружаем данные в таблицу
}

var slaveId = $('#interfaceBody > DIV:last').attr('id'); //Определяем ID контейнера "ведомой таблицы"
$('#table_'+slaveId).jqGrid('setGridParam',{'postData':{'filterBy':selId}}); //Применяем в качестве фильтра ведомой таблицы
//id выбранной записи в ведущей таблице

$('#table_'+slaveId).trigger('reloadGrid'); //Перезагружаем данные в таблицу
}else{
// Флаг "Связать таблицы" не утановлен
var coutriesT = $('#table_countries');
var countriesPost = coutriesT.jqGrid('getGridParam','postData');

if(countriesPost.filterBy){ //Сбрасываем фильтр т.к. ничего не нужно фильтровать
coutriesT.jqGrid('setGridParam',{'postData':{'filterBy':null}})
coutriesT.trigger('reloadGrid');
}
//-----------------------
var citiesT = $('#table_cities');
var citiesPost = citiesT.jqGrid('getGridParam','postData');

if(citiesPost.filterBy){ //Сбрасываем фильтр т.к. ничего не нужно фильтровать
citiesT.jqGrid('setGridParam',{'postData':{'filterBy':null}})
citiesT.trigger('reloadGrid');
}
}
}

//-------------------------------------------------------------------
// Настройка плагинов

var tcountries = $('#table_countries').jqGrid({
caption: 'Страны',
hidegrid: false,
url:'p3e5.php',
postData: {'filterBy':null},
datatype: 'json',
mtype: 'GET',
colNames:['Код ','Имя','Фамиля'],
colModel :[
{name:'cod', index:'cod', width:80},
{name:'fam', index:'fam', width:60},
{name:'otch', index:'otch', width:60}
],
pager: $('#table_countriesPager'),
rowNum: 100,
scroll: true,
viewrecords: true,
sortname: 'fam',
sortorder: 'asc',
height: 200,
autowidth: true,
onSelectRow: stickTogether
});

var tcities = $('#table_cities').jqGrid({
caption: 'Города',
hidegrid: false,
url: 'p3e4.php',
postData: {'filterBy':null},
datatype: 'json',
mtype: 'GET',
colNames: ['cod', 'Imy', 'Opiss'],
colModel: [
{name: 'cod', index: 'cod', width:130},
{name: 'name', index: 'name', width:80, align: 'right'},
{name: 'names', index: 'names', width:80, align: 'right'}
],
height: 200,
autowidth: true,
rownumbers: true,
rownumWidth: 40,
rowNum: 100,
sortname: 'name',
sortorder: 'asc',
pager: $('#table_citiesPager'),
scroll: true,
viewrecords: true,
onSelectRow: stickTogether
});

$("#interfaceBody").sortable({
connectWith: '.grid',
placeholder: 'ui-state-error',
opacity: 0.7,
stop: stickTogether
});

//-------------------------------------------------------------------
// Назначаем обработчик на событие

$('#link').change(stickTogether);

});

</script>


</head>
<body>
<input
type="checkbox" id="link">
<label
for="link">Связать таблицы</label>

<div
id="interfaceBody" style="margin: 10px 10px 10px 10px; padding: 0px 10px 10px 10px; border: 2px solid gray">
<div
class="grid" id="countries" style="padding: 10px 10px 10px 10px; margin-top: 10px; border: 2px solid red">
<table
id="table_countries"></table>
<div
id="table_countriesPager"></div>
</div>
<div
class="grid" id="cities" style="padding: 10px 10px 10px 10px; margin-top: 10px; border: 2px solid green">
<table
id="table_cities"></table>
<div
id="table_citiesPager"></div>
</div>
</div>



</body>
</html>


Файл p3e5.php

<?php
// Подключение и выбор БД
mysql_connect('localhost', 'root', '');
mysql_select_db('example');
# ВНИМАНИЕ!!!
# Данный код не имеет проверок запрашиваемых данных
# что может стать причиной взлома! Обязательно проверяйте все данные
# поступающие от клиента


$page = $_GET['page']; // Номер запришиваемой страницы
$limit = $_GET['rows']; // Количество запрашиваемых записей
$sidx = $_GET['sidx']; // Номер элемента массива по котору следует производить сортировку
// Проще говоря поле, по которому следует производить сортировку

$sord = $_GET['sord']; // Направление сортировки

// Если не указано поле сортировки, то производить сортировку по первому полю

if(!$sidx) $sidx =1;

// Выполним запрос, который вернет суммарное кол-во записей в таблице
$result = mysql_query("SELECT COUNT(*) AS count FROM test");
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$count = $row['count']; // Теперь эта переменная хранит кол-во записей в таблице

// Рассчитаем сколько всего страниц займут данные в БД

if( $count > 0 && $limit > 0) {
$total_pages = ceil($count/$limit);
} else {
$total_pages = 0;
}
// Если по каким-то причинам клиент запросил
if ($page > $total_pages) $page=$total_pages;

// Рассчитываем стартовое значение для LIMIT запроса
$start = $limit*$page - $limit;
// Зашита от отрицательного значения
if($start <0) $start = 0;

// Запрос выборки данных
$query = "SELECT id, cod, fam, otch FROM test ORDER BY ".$sidx." ".$sord." LIMIT ".$start.", ".$limit;
$result = mysql_query($query);


// Начало формирование массива
// для последующего преобразоования
// в JSON объект

$data->page = $page;
$data->total = $total_pages;
$data->records = $count;

// Строки данных для таблицы
$i = 0;
while($row = mysql_fetch_assoc($result)) {
$data->rows[$i]['id'] = $row[id];
$data->rows[$i]['cell'] = array($row[cod],$row[fam],$row[otch]);
$i++;
}

// Перед выводом не забывайте выставить header
// с типом контента и кодировкой

header("Content-type: text/script;charset=utf-8");
echo json_encode($data);
?>

Файл p3e4.php

<?php
// Подключение и выбор БД
mysql_connect('localhost', 'root', '');
mysql_select_db('example');

# ВНИМАНИЕ!!!
# Данный код не имеет проверок запрашиваемых данных
# что может стать причиной взлома! Обязательно проверяйте все данные
# поступающие от клиента


$page = $_GET['page']; // Номер запришиваемой страницы
$limit = $_GET['rows']; // Количество запрашиваемых записей
$sidx = $_GET['sidx']; // Номер элемента массива по котору следует производить сортировку
// Проще говоря поле, по которому следует производить сортировку

$sord = $_GET['sord']; // Направление сортировки
if($_REQUEST['filterBy'] != 'null') // Фильтр
$WHERE = " WHERE cod = '".$_REQUEST['filterBy']."' ";
else
$WHERE = '';
// Если не указано поле сортировки, то производить сортировку по первому полю
if(!$sidx) $sidx =1;

// Выполним запрос, который вернет суммарное кол-во записей в таблице
$result = mysql_query("SELECT COUNT(*)AS count FROM tests".$WHERE);
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$count = $row['count']; // Теперь эта переменная хранит кол-во записей в таблице

// Рассчитаем сколько всего страниц займут данные в БД

if( $count > 0 && $limit > 0) {
$total_pages = ceil($count/$limit);
} else {
$total_pages = 0;
}
// Если по каким-то причинам клиент запросил
if ($page > $total_pages) $page=$total_pages;

// Рассчитываем стартовое значение для LIMIT запроса
$start = $limit*$page - $limit;
// Зашита от отрицательного значения
if($start <0) $start = 0;

// Запрос выборки данных
$result = mysql_query("SELECT cod, name, names FROM tests ".$WHERE." ORDER BY ".$sidx." ".$sord." LIMIT ".$start.", ".$limit);
$result = mysql_query($query);


// Начало формирование массива
// для последующего преобразоования
// в JSON объект

$data->page = $page;
$data->total = $total_pages;
$data->records = $count;

// Строки данных для таблицы
$i = 0;
while($row = mysql_fetch_assoc($result)) {
$data->rows[$i]['id'] = $row[id];
$data->rows[$i]['cell'] = array($row[cod],$row[name],$row[names]);
$i++;
}

// Перед выводом не забывайте выставить header
// с типом контента и кодировкой

header("Content-type: text/script;charset=utf-8");
echo json_encode($data);
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.