jqGridPHP - таблицы на ajax без головной боли

4aki.zp

Новичок
Ну я не знаю даже. Почти все примеры как раз работают через toolbar search:
http://jqgrid-php.net/examples/
Не знаю там ничего нет по этому поводу или я плохо искал.
А обьясните вообще принцип работы Toolbar search он обрабатывается же скриптом который указвается в url, я думаю я правильно понял? и т.е. там все должно быть нормально, но как они передаются?

От чего вопрос, проблема в том что у меня переменные: $_GET['_search'] - возвращает True а такие как $_GET['searchField'], $_GET['searchOper'], $_GET['searchString'] - вообще пустые от чего это?
 

4aki.zp

Новичок
Решил проблему тем, что прочитал просто
PHP:
json_decode($_GET['filters']);
и дальше уже из массива сделал запрос. все отлично работает.
 

4aki.zp

Новичок
Может кто знает как организовать отображение и скрытие колонок и изменения их порядка?
 

klev2004

Новичок
Объясните как связать с MySQL.
Я делаю так:

PHP:
    require_once 'jqGridPHP/jqGridLoader.php';
    $loader = new jqGridLoader;
    
    #Set grid directory
    $loader->set("grid_path", 'reports/');
     
    #Use PDO for database connection
    $loader->set("db_driver", "Mysql");
          
    #Set PDO-specific settings
    $loader->set('db_host', 'localhost');
    $loader->set('db_user', 'root');
    $loader->set('db_pass', '');
    $loader->set('db_name', 'jqgrid');
    
    $loader->autorun();

    $name = 'jqtest';

    $rendered_grid = $loader->render($name);

    echo $rendered_grid;
PHP:
class jqtest extends jqGrid
{
    protected function init()
    {
        $this->table = 'tbl_customer';
        $this->DB->query('SELECT * FROM tbl_customer');
        $this->DB->fetch($this->DB->query('SELECT * FROM tbl_customer'));
        $this->base_url = 'core/functions.php';
        $this->cols = array(
            'id'          => array('label' => 'ID',
                                   'width' => 100,
                                   'align' => 'center',
                                   ),
 
            'first_name'  => array('label' => 'First name',
                                   'width' => 250,
                                   'editable' => true,
                                   ),
 
            'last_name'   => array('label' => 'Last name',
                                   'width' => 250,
                                   'editable' => true,
                                   ),
 
            'discount'    => array('label' => 'Discount',
                                   'width' => 150,
                                   'formatter' => 'numeric',
                                   'align' => 'center',
                                   'editable' => true,
                                   ),
        );
    }
}
Таблица выводится пустая. Если вывести содержимое результата $this->DB->fetch($this->DB->query('SELECT * FROM tbl_customer')) - видно, что информация из БД получена, но в таблицу почему-то не загружается, с таким же параметром base_url через PDO работало нормально.
 

klev2004

Новичок
4aki.zp, не помогло.

Делал так:

PHP:
    $loader->set('db_host', 'localhost');
    $loader->set('db_user', 'root');
    $loader->set('db_pass', '');
    $loader->set('db_name', 'jqgrid');
    
    $loader->addInitQuery('SET NAMES utf8');
UPD:
Спасибо, помогло. Был не внимательный.
 

klev2004

Новичок
Кто нибудь реализовывал форму поиска вне грида? Опыта немного, подтолкните на идею.
 

klev2004

Новичок
То есть реализовать свою форму поиска на странице:

к примеру:
PHP:
<form method="POST" action="..."> 
<input type="text" name="search">
<input type="submit" value="Go">
</form>
и чтоб по информации из поля "search" и по событию onclick на кнопке "Go" перезагружалась информация в таблице
то есть также как работает стандартный Toolbar search.
 

4aki.zp

Новичок
То есть реализовать свою форму поиска на странице:

к примеру:
PHP:
<form method="POST" action="..."> 
<input type="text" name="search">
<input type="submit" value="Go">
</form>
и чтоб по информации из поля "search" и по событию onclick на кнопке "Go" перезагружалась информация в таблице
то есть также как работает стандартный Toolbar search.
ссылка - почитай, а там где ты уже инпут прилепишь это уже не имеет значения
 

Jnas

Новичок
Здравствуйте, из-за новых добавлении решил перейти из одной из первых версии jqGridPHP в самую последнюю версию.
Я так понял, немного изменился (с тех пор) принцип рендера?

Моя ситуация такова, имеется некая страница (подгружаются всё jquery и т.д.) с кнопками, при нажатии на определенную кнопку, допустим кнопка "Проверка1" вызывается скрипт (скрипт вызывается с помощью метода $.ajax , без передачи данных, находящийся в другой папке) , полученные данные выводятся через dialog.
Сам вызываемый скрипт
PHP:
<?php
require 'config.php';
require_once($_CONFIG['root_path'] . 'jqGridLoader.php');

$jq_loader = new jqGridLoader();
$jq_loader->set('grid_path', 'grids' . DIRECTORY_SEPARATOR);
$jq_loader->set('pdo_dsn', $_CONFIG['pdo_dsn']);
$jq_loader->set('pdo_user', $_CONFIG['pdo_user']);
$jq_loader->set('pdo_pass', $_CONFIG['pdo_pass']);
$jq_loader->set('debug_output', true);



$jq_loader->addInitQuery("SET NAMES 'utf8'");
$jq_loader->autorun();

//-----------
// Get grid
//-----------

$grid = 'jqSimple';

$rendered_grid = $jq_loader->render('jqSimple');

require 'templates' . DIRECTORY_SEPARATOR . $grid . '.php';
Выводится таблица, но без данных, то есть сохраняя всё формы, но данные отсутвуют, firebug не показывает ошибки....


что делаю не так?
________________________________________________________________


Примечание:
Только что обнаружил, после нажатия идут два запроса....
1) http://localhost/jqgrid/mygrid/knopka_01.php
2) http://localhost/jqgrid/?jqgrid=jqSimple
От незнания что делать, попробовал добавить
PHP:
...
var dataToSend = { jqgrid: 'jqSimple'};
$.ajax
({
type: "GET",
data: dataToSend,
.....
на этот раз вывел пустое диалоговое окно, но через firebug видно, что данные таблицы получены, но будто не получена форма таблицы


к сожалению в этом деле я слаб, что делаю не так?
 

~WR~

Новичок
Что-то не так с URL'ом, на который отправляется запрос к данным.

По вашему примеру, должно быть
http://localhost/jqgrid/mygrid/knopka_01.php?jqgrid=jqSimple

А отправляется на:
http://localhost/jqgrid/?jqgrid=jqSimple

Посмотрите функцию renderGridUrl - что из неё возвращается.
Вообще, лучше всего делать отдельный entry-point для ajax-запросов. Как-то так:
PHP:
$this->base_url = '/jqgrid/ajax.php';
 
  • Like
Реакции: Jnas

Jnas

Новичок
renderGridUrl возвращает
PHP:
?jqgrid=jqSimple
с помощью
PHP:
$this->base_url
проблема решена, спасибо.
 

acanthis

Новичок
Доброго времени суток, господа!
Уже как 2 дня бьюсь над тем что таблица выводится пустая. Прошу подсказать что я делаю не так. Заранее спасибо.

PHP:
    require_once 'php/jqGridLoader.php';
    $loader = new jqGridLoader;

    #Set grid directory
    $loader->set("grid_path", 'tables/');
     
    #Use PDO for database connection
    $loader->set("db_driver", "Mysql");
          
    #Set PDO-specific settings
    $loader->set('db_host', 'localhost');
    $loader->set('db_user', 'root');
    $loader->set('db_pass', '123');
    $loader->set('db_name', 'rashod');
	
    $loader->addInitQuery('SET NAMES utf8');
    $loader->autorun();

    $name = 'rashod_tbl';
    $rendered_grid = $loader->render($name);
    echo $rendered_grid;
PHP:
class rashod_tbl extends jqGrid
{
    protected function init()
    {

        $this->DB->query('SELECT * FROM truck_table');
        $this->cols = array(
            'id'          => array('label' => 'ID',
                                   'width' => 100,
                                   'align' => 'center',
                                   ),
 
            'date'  => array('label' => 'date',
                                   'width' => 250,
                                   'editable' => true,
                                   ),
 
            'car'   => array('label' => 'car',
                                   'width' => 250,
                                   'editable' => true,
                                   ),
 
            'driver'    => array('label' => 'driver',
                                   'width' => 150,
                                   'align' => 'center',
                                   'editable' => true,
                                   ),
            'customer'    => array('label' => 'customer',
                                   'width' => 150,
                                   'align' => 'center',
                                   'editable' => true,
                                   ),
            'res_per'    => array('label' => 'res_per',
                                   'width' => 150,
                                   'align' => 'center',
                                   'editable' => true,
                                   ),
            'sup_cos'    => array('label' => 'sup_cos',
                                   'width' => 150,
                                   'align' => 'center',
                                   'editable' => true,
                                   ),
            'time_filing'    => array('label' => 'time_filing',
                                   'width' => 150,
                                   'align' => 'center',
                                   'editable' => true,
                                   ),
            'info_loads'    => array('label' => 'info_loads',
                                   'width' => 150,
                                   'align' => 'center',
                                   'editable' => true,
                                   ),								   
            'route'    => array('label' => 'route',
                                   'width' => 150,
                                   'align' => 'center',
                                   'editable' => true,
                                   ),
            'ttn'    => array('label' => 'ttn',
                                   'width' => 150,
                                   'align' => 'center',
                                   'editable' => true,
                                   ),
            'status'    => array('label' => 'status',
                                   'width' => 150,
                                   'align' => 'center',
                                   'editable' => true,
                                   ),								   
        );
    }
}
З.Ы. Данные точно выводятся, но в таблицу не попадают. $loader->addInitQuery('SET NAMES utf8'); не помог ((
 

~WR~

Новичок
Ну посмотрите, как в примерах сделано.

Где вы видите такое?
PHP:
$this->DB->query('SELECT * FROM truck_table');
Замените на:
PHP:
$this->table = 'truck_table';
 

acanthis

Новичок
Ну посмотрите, как в примерах сделано.

Где вы видите такое?
PHP:
$this->DB->query('SELECT * FROM truck_table');
Замените на:
PHP:
$this->table = 'truck_table';
Видел я этот пример чуть выше. $this->table = 'truck_table'; есесено делал, эффекта нет. файрбаг показывает что возвращает json данные, однако в таблицу они не попадают.. Уже голову сломал
З.Ы. Заметил еще что в файрбаге вообще нет вкладки json, как у товарища выше
 

~WR~

Новичок
Ок, а какой конкретно ответ? Что на вкладке Response (Ответ)? Она точно есть.
 

acanthis

Новичок
Ок, а какой конкретно ответ? Что на вкладке Response (Ответ)? Она точно есть.
Вот что возвращается в ответе:

{ "page": "1", "total": "1", "records": "3", "rows": [ { "id": "1", "cell": [ "1", "2012-07-04", "Ситроен", "Лямзин", "СМУ 14", "Манишова", "Новоказанцево", "Днем", "материалы для сварки", "Троицкий тр - Павелецкая", "1123", "0" ] }, { "id": "2", "cell": [ "2", "0000-00-00", "укен", "укен", "укен", "укен", "укен", "кен", "укен", "укен", "укен", "0" ] }, { "id": "3", "cell": [ "3", "0000-00-00", "q34523", "5234", "52345", "2345", "3452", "23452", "34523", "4523", "45234", "52345" ] } ], "userdata": { "agg": { "_count": "3" } } }
З.Ы. Причем данные добавляются без проблем в таблицу
Добавлю так же что в ответе у файрбага находятся не только json данные но и html с явой, а если точнее, то вот так:

<!DOCTYPE html>
<html>
<head>
<title>Examples</title>
<meta http-equiv="Content-Type" content="text/json;charset=utf-8">
<!--jQuery-->
<script src="http://yandex.st/jquery/1.7.2/jquery.min.js"></script>

<!--jQuery UI-->
<script src="http://yandex.st/jquery-ui/1.8.11/jquery-ui.min.js"></script>
<link href="http://yandex.st/jquery-ui/1.8.11/themes/redmond/jquery.ui.all.min.css" rel="stylesheet" type="text/css" />

<script src="./jqgrid/plugins/ui.multiselect.js"></script>
<link href="./jqgrid/plugins/ui.multiselect.css" rel="stylesheet" type="text/css" />

<!--jqGrid-->
<link href="./jqgrid/css/ui.jqgrid.css" rel="stylesheet" type="text/css" />
<script src="./jqgrid/js/i18n/grid.locale-ru.js"></script>
<script src="./jqgrid/js/jquery.jqGrid.min.js"></script>

<!--jqGrid Extension-->
<link href="./client/jqgrid-ext.css" rel="stylesheet" type="text/css" />
<script src="./jqgrid/js/jqgrid-ext.js"></script>

<!-- Other plugins -->
<script src="http://yandex.st/jquery/form/2.67/jquery.form.min.js"></script>
<script>
$.extend($.jgrid.defaults,
{
altRows: false,
altclass: 'altrow',
hidegrid: false,
hoverrows: false,

viewrecords: true,
scrollOffset: 21,

width: 1200,
height: 300
});
//$.jgrid.defaults.height = '400px';
$.jgrid.nav.refreshtext = 'Refresh';
$.jgrid.formatter.date.newformat = 'ISO8601Short';

$.jgrid.edit.closeAfterEdit = true;
$.jgrid.edit.closeAfterAdd = true;
</script>
<style>
bode {font-size: 11px;}
body {background: #F5F5F5; font-size: 11px; padding: 10px;} #descr {display: none;}
.ui-widget {font-family: verdana; font-size: 12px;}

.ui-jqgrid {font-family: tahoma, arial;}
.ui-jqgrid TR.jqgrow TD {font-size: 11px;}
.ui-jqgrid TR.jqgrow TD {padding-left: 5px; padding-right: 5px;}
.ui-jqgrid TR.jqgrow A {color: blue;}

.ui-jqgrid INPUT,
.ui-jqgrid SELECT,
.ui-jqgrid TEXTAREA,
.ui-jqgrid BUTTON {font-family: tahoma, arial;}
</style>
</head>
<body>
{ "page": "1", "total": "1", "records": "3", "rows": [ { "id": "1", "cell": [ "1", "2012-07-04", "Ситроен", "Лямзин", "СМУ 14", "Манишова", "Новоказанцево", "Днем", "материалы для сварки", "Троицкий тр - Павелецкая", "1123", "0" ] }, { "id": "2", "cell": [ "2", "0000-00-00", "укен", "укен", "укен", "укен", "укен", "кен", "укен", "укен", "укен", "0" ] }, { "id": "3", "cell": [ "3", "0000-00-00", "q34523", "5234", "52345", "2345", "3452", "23452", "34523", "4523", "45234", "52345" ] } ], "userdata": { "agg": { "_count": "3" } } }
А если смотреть в ваши экземплы то там чисто json
 
Сверху