Показать сообщение отдельно
  #1 (permalink)  
Старый 22.01.2014, 15:53
Аватар для arahmanov
Профессор
Отправить личное сообщение для arahmanov Посмотреть профиль Найти все сообщения от arahmanov
 
Регистрация: 26.01.2011
Сообщений: 197

jqGrid передача дополнительного параметра
Есть динамическая таблица с возможность редактирования и.т.д

Столкнулся с проблемой передачи параметра php обработчику на вывод табличных данных, нужно чтобы выбирал не все поля а по заданному
id_zakaz_baza но как его передать не могу разобраться с этим плагином.

http://******.ru/craete_zakaz.php?p=121
$id = $_GET['p']; раньше брал из строки браузера, но в данном не работает и понятно почему.

craete_zakaz.php--------я так понимаю что видимо существует вариант функции которая могла бы отправить параметр в getdata.php но что то не где не нашел
<script type="text/javascript">
    jQuery(document).ready(function(){
        var lastSel;
        jQuery("#list").jqGrid({
            url:'getdata.php',
            datatype: 'json',
            mtype: 'POST',
            colNames:['#', 'Заказ', 'Работа', 'Сена/час', 'норма', 'Сумма', 'Исполнитель'],
            colModel :[
                {name:'id', index:'id', width:50, align:'right', search:false}
                ,{name:'id_zakaz', index:'id_zakaz', width:50, align:'right', editable:true, edittype:"text", searchoptions:{sopt:['eq','ne','bw','cn']}}
                ,{name:'rabota', index:'rabota', width:200, align:'right', editable:true, edittype:"text", searchoptions:{sopt:['eq','ne','bw','cn']}}
                ,{name:'norma', index:'norma', width:50, align:'right', editable:true, edittype:"text", searchoptions:{sopt:['eq','ne','bw','cn']}}
				 ,{name:'n4', index:'n4', width:50, align:'right', editable:true, edittype:"text", searchoptions:{sopt:['eq','ne','bw','cn']}}
				  ,{name:'sum', index:'sum', width:100, align:'right', editable:false, edittype:"text", searchoptions:{sopt:['eq','ne','bw','cn']}}
				  ,{name:'ispol', index:'ispol', width:200, align:'right', editable:true, edittype:"select", editoptions:{dataUrl:'sot.php'}}
				  
                ],
            pager: jQuery('#pager'),
            rowNum:20,
			width:900,
			height:400,
            rowList:[20,35,50],
            sortname: 'id',
            sortorder: "asc",
            viewrecords: true,
            caption: 'Выполенные работы',
            ondblClickRow: function(id) {
                if (id && id != lastSel) {
                    jQuery("#list").restoreRow(lastSel);
                    jQuery("#list").editRow(id, true);
                    lastSel = id;
                }
            },
            editurl: 'saverow.php'
        }).navGrid('#pager',{view:false, del:false, add:false, edit:true}, 
			{}, //  default settings for edit
			{}, //  default settings for add
			{},  // delete instead that del:false we need this
			{closeOnEscape:true, multipleSearch:true, closeAfterSearch:true}, // search options
			{} /* view parameters*/
		); 
    }); 
    </script>





ОБРАБОТЧИК getdata.php
<?php
require_once('dbdata.php');

try {
    //читаем параметры
	$id_zakaz_baza =121; ----КАКИМ ОБРАЗОМ ПЕРЕДАТЬ ПАРАМЕТР
    $curPage = $_POST['page'];
    $rowsPerPage = $_POST['rows'];
    $sortingField = $_POST['sidx'];
    $sortingOrder = $_POST['sord'];
    
    //подключаемся к базе
    $dbh = new PDO('mysql:host='.$dbHost.';dbname='.$dbName, $dbUser, $dbPass);
    //указываем, мы хотим использовать utf8
    $dbh->exec('SET CHARACTER SET utf8');
	$dbh->exec('set character_set_client="utf8"');
$dbh->exec('set character_set_results="utf8"');
$dbh->exec('set collation_connection="utf8"');

	$qWhere = '';
	//определяем команду (поиск или просто запрос на вывод данных)
	//если поиск, конструируем WHERE часть запроса
	if (isset($_POST['_search']) && $_POST['_search'] == 'true') {
		$allowedFields = array('surname', 'fname', 'lname');
		$allowedOperations = array('AND', 'OR');
		
		$searchData = json_decode($_POST['filters']);

		//ограничение на количество условий
		if (count($searchData->rules) > 10) {
			throw new Exception('Cool hacker is here!!! :)');
		}

		$qWhere = ' WHERE ';
		$firstElem = true;

		//объединяем все полученные условия
		foreach ($searchData->rules as $rule) {
			if (!$firstElem) {
				//объединяем условия (с помощью AND или OR)
				if (in_array($searchData->groupOp, $allowedOperations)) {
					$qWhere .= ' '.$searchData->groupOp.' ';
				}
				else {
					//если получили не существующее условие - возвращаем описание ошибки
					throw new Exception('Cool hacker is here!!! :)');
				}
			}
			else {
				$firstElem = false;
			}
			
			//вставляем условия
			if (in_array($rule->field, $allowedFields)) {
				switch ($rule->op) {
					case 'eq': $qWhere .= $rule->field.' = '.$dbh->quote($rule->data); break;
					case 'ne': $qWhere .= $rule->field.' <> '.$dbh->quote($rule->data); break;
					case 'bw': $qWhere .= $rule->field.' LIKE '.$dbh->quote($rule->data.'%'); break;
					case 'cn': $qWhere .= $rule->field.' LIKE '.$dbh->quote('%'.$rule->data.'%'); break;
					default: throw new Exception('Cool hacker is here!!! :)');
				}
			}
			else {
				//если получили не существующее условие - возвращаем описание ошибки
				throw new Exception('Cool hacker is here!!! :)');
			}
		}
	}
	
    //определяем количество записей в таблице
    $rows = $dbh->query("SELECT COUNT(id) AS count FROM rabot WHERE id_zakaz='$id_zakaz_baza'".$qWhere);
    $totalRows = $rows->fetch(PDO::FETCH_ASSOC);

    $firstRowIndex = $curPage * $rowsPerPage - $rowsPerPage;
    //получаем список пользователей из базы
    $res = $dbh->query("SELECT * FROM rabot WHERE id_zakaz='$id_zakaz_baza' ".$qWhere." ORDER BY ".$sortingField." ".$sortingOrder." LIMIT ".$firstRowIndex.", ".$rowsPerPage);
	
    //сохраняем номер текущей страницы, общее количество страниц и общее количество записей
    $response->page = $curPage;
    $response->total = ceil($totalRows['count'] / $rowsPerPage);
    $response->records = $totalRows['count'];

    $i=0;
    while($row = $res->fetch(PDO::FETCH_ASSOC)) {
        $response->rows[$i]['id']=$row['id'];
        $response->rows[$i]['cell']=array($row['id'], $row['id_zakaz'], $row['rabota'], $row['norma'], $row['n4'], $row['sum'], $row['ispol']);
        $i++;
    }
    echo json_encode($response);
}
catch (Exception $e) {
    echo json_encode(array('errMess'=>'Error: '.$e->getMessage()));
}

// end of getdata.php
Ответить с цитированием