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

ZAZmaster

Новичок
Есть поля фамилия, имя и отчество в таблице MySQL, в таблице jqGrid выводится это одним полем
PHP:
'fio' => array('label' => 'ФИО',
    'db' => "CONCAT(p.surname, ' ', p.name, ' ', p.patronymic)",
    'width' => 35,
    'editrules' => array('required' => true),
    'hgroup' => 'main',
),
Всё отображается замечательно, но как быть с редактирование и добавлением записей? Там также отображается одним полем. Как сделать при добавлении/редактировании 3 поля?
 
Последнее редактирование:

ZAZmaster

Новичок
Сам себе и отвечу:
PHP:
            'fio' => array('label' => 'ФИО',
                'db' => "CONCAT(p.surname, ' ', p.name, ' ', p.patronymic)",
                'width' => 35,
                'editrules' => array(
                    'required' => false,
                    'edithidden' => true,
                ),
                'editable' => false,
                'hgroup' => 'main',
            ),

            'surname' => array('label' => 'Фамилия',
                'db' => "p.surname",
                'width' => 35,
                'hidden'=> true,
                'editrules' => array(
                    'required' => true,
                    'edithidden' => true,
                ),
                'hgroup' => 'main',
            ),

            'name' => array('label' => 'Имя',
                'db' => "p.name",
                'width' => 35,
                'hidden'=> true,
                'editrules' => array(
                    'required' => true,
                    'edithidden' => true,
                ),
                'hgroup' => 'main',
            ),

            'patronymic' => array('label' => 'Отчество',
                'db' => "p.patronymic",
                'width' => 35,
                'hidden'=> true,
                'editrules' => array(
                    'required' => true,
                    'edithidden' => true,
                ),
                'hgroup' => 'main',
            ),
 
Последнее редактирование:

morozzz

Новичок
Добрый день.

Всё выводится нормально, но сумма всех записей в nav toolbar почему-то выводится неверно, она равна кол-ву записей на страницу.
Кто-нибудь знает откуда она берется и что на неё может влиять.

В firebug есть записи "count" и "userdata->agg->_count" у них одинаковые значения и они соответсвуют действительности!
 

morozzz

Новичок
И ещё вопрос.
Можно ли как-то динамически назначить значение параметру в 'editoptions' =>
т.е. мне нужно добавить параметр 'editoptions' =>'data-img' в зависимости от id
 

morozzz

Новичок
И ещё вопрос.
Можно ли как-то динамически назначить значение параметру в 'editoptions' =>
т.е. мне нужно добавить параметр 'editoptions' =>'data-img' в зависимости от id
А нет, 'editoptions' =>'data-img' добавляет атрибут в тег <select>, а мне нужно чтобы динамический атрибут 'data-img' встраивался в тег <option role="option" value="1"> (должно быть примерно так: <option role="option" value="1" data-img='foto_id_xxxxx.jpg'>)

Пробовал создать массив с уже заданными как нужно строками option с помощью
'editoptions' => array(
'value' => array;
)
но при генерации поля select получается что-то типа этого
<option role="option" value="1">
<option value="1" data-img="teacher_1_89e7726ef19016fc27adc89b778ec16f.jpg" role="option">Иванов Иван Иванович</option>
</option>
т.е. в тег option вкладывается всё содержимое строки..

Получается нужно изменить вывод массива для поля select. Может кто сталкивался как?
 

el-vis30

Новичок
Спасибо за прекрасную реализацию обработки и вывода таблиц..
Споткнулся о создание кастомных функций. А именно, как ПЕРЕДАТЬ значения в функцию, назначаемую через onClickButton в методе navButtonAdd.
Подскажите, а то никак не соображу

в выводе таблиц используются фильтры для поиска в основном классе


PHP:
 $this->cols = array(
  'id' => array('label' => 'ID',
  'db' => 't1.id',
        'width' => 15,
  'align' => 'center',
  'editable' => true,
  ),
  'shops' => array('label' => 'Магазины',
  'db' => "(select group_concat(shops) from {$this->table_shops2goods} t2 where t2.goods = t1.id)",
        'width' => 20,
  'align' => 'center',
  'search_op' => 'like',
        'editable' => false, //id is non-editable
        'stype' => 'select',
  'searchoptions' => array('value' => new jqGrid_Data_Value($this->all_shops, 'All'))
   
  ),
   
      'cat' => array('label' => 'Категория',
  'db' => 't1.cat',
        'width' => 25,
  'formatter' => 'ext_replace',
  'formatoptions' => array('value' => $this->all_categories),
  'editable' => true,
  'edittype' => 'select',
  'editoptions' => array('value' => new jqGrid_Data_Value($this->all_categories)),
        //'search_op' => 'like',
        //'editrules' => array('required' => false),
        'stype' => 'select',
  'searchoptions' => array('value' => new jqGrid_Data_Value($this->all_categories, 'All'))
     
  )
);
где $this->all_categories и $this->all_shops массивы данных.

По аналогии с
http://jqgrid-php.net/examples/?render=jqOperCustom
прикручиваю свою функцию, суть которой на набор записей массово менять значения.
Собственно хочу в модальное окно выводить несколько полей ввода (в данном случае селекты с данными, которые используются в фильтрах из кода выше, но не суть, главное что они в основном классе)
и на основании выставленных данных изменять значения в наборе ячеек.
Но никак не соображу как в это модальное окно передать значения.


Таких функций надо прикручивать несколько к одной таблице.
Помогите, если кто сталкивался. Спасибо.
 
Последнее редактирование:

el-vis30

Новичок
Спасибо за прекрасную реализацию обработки и вывода таблиц..
Споткнулся о создание кастомных функций. А именно, как ПЕРЕДАТЬ значения в функцию, назначаемую через onClickButton в методе navButtonAdd.
Подскажите, а то никак не соображу

в выводе таблиц используются фильтры для поиска в основном классе


PHP:
 $this->cols = array(
  'id' => array('label' => 'ID',
  'db' => 't1.id',
        'width' => 15,
  'align' => 'center',
  'editable' => true,
  ),
  'shops' => array('label' => 'Магазины',
  'db' => "(select group_concat(shops) from {$this->table_shops2goods} t2 where t2.goods = t1.id)",
        'width' => 20,
  'align' => 'center',
  'search_op' => 'like',
        'editable' => false, //id is non-editable
        'stype' => 'select',
  'searchoptions' => array('value' => new jqGrid_Data_Value($this->all_shops, 'All'))
  
  ),
  
      'cat' => array('label' => 'Категория',
  'db' => 't1.cat',
        'width' => 25,
  'formatter' => 'ext_replace',
  'formatoptions' => array('value' => $this->all_categories),
  'editable' => true,
  'edittype' => 'select',
  'editoptions' => array('value' => new jqGrid_Data_Value($this->all_categories)),
        //'search_op' => 'like',
        //'editrules' => array('required' => false),
        'stype' => 'select',
  'searchoptions' => array('value' => new jqGrid_Data_Value($this->all_categories, 'All'))
    
  )
);
где $this->all_categories и $this->all_shops массивы данных.

По аналогии с
http://jqgrid-php.net/examples/?render=jqOperCustom
прикручиваю свою функцию, суть которой на набор записей массово менять значения.
Собственно хочу в модальное окно выводить несколько полей ввода (в данном случае селекты с данными, которые используются в фильтрах из кода выше, но не суть, главное что они в основном классе)
и на основании выставленных данных изменять значения в наборе ячеек.
Но никак не соображу как в это модальное окно передать значения.


Таких функций надо прикручивать несколько к одной таблице.
Помогите, если кто сталкивался. Спасибо.
Отвечу сам себе.
в общем не нашел ничего лучше, как отдавать данные в параметры через options в функции init и получать данные методом getGridParam.
видимо не очень правильная реализация, но другой пока не вижу.
 

zacar

Новичок
Доброе время суток.

Подскажите как запихнуть checkbox в поиск в шапке таблицы.

спс.
 

kot_k_k

Новичок
Добрый день, по гриду пара вопросов.
1. Подскажите как в jqgrid передать свои переменные?
2. Как запомнить эти переменные и передавать их в следующее обращение к гриду (при сортировке)?

Ситуация - получаю POST-ом 2 даты, обработал, прикрутил (криво-криво) в грид - отправил.
Отработало, вывело. При нажатии на сортировку - никаких изменений не происходит, а в дебагере пишет
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in ....
судя по всему теряются мои переменные при повторном обращении к гриду.

отправляю их таким образом (не пинайте).

Код:
<?php   
// получил
$end_gln=$_POST['GLN_Filter'];
//.......... обработал
$data_ss=$F_gln."_".$_POST['DATE_S']."_".$_POST['DATE_F'];
?>

далее идет HTML
.......
<script type="text/javascript">
var dd="<?php echo $data_ss ?>"  ;   
$(function(){
                $('#le_table').jqGrid({
                    ........
---        вот тут ничего лучше не придумал, как передать таким образом
              sortorder: 'asc_'+dd  });
    });
</script>
вот собственно такой бред. не ругайте на php и проч начинающий.
 

dasser

Новичок
всем привет!
кто сталкавался с подобной проблемой ?
установил jqGridPHP c установщика install.php база в utf8_general_ci все таблицы и строки тоже в utf8_general_ci. Как я понимаю скприпт отсылает в utf-8 в базу mysql. В итоге в таблице после выполнения php выводит русский текст ("текст"), а в базе (mysql) записывает крякозябры - "текст".
Заранее благодарю за помощь!
 

zacar

Новичок
всем привет!
кто сталкавался с подобной проблемой ?
установил jqGridPHP c установщика install.php база в utf8_general_ci все таблицы и строки тоже в utf8_general_ci. Как я понимаю скприпт отсылает в utf-8 в базу mysql. В итоге в таблице после выполнения php выводит русский текст ("текст"), а в базе (mysql) записывает крякозябры - "текст".
Заранее благодарю за помощь!
В конфиг файл хоста - AddDefaultCharset UTF-8
 

dasser

Новичок
В конфиг файл хоста - AddDefaultCharset UTF-8
доабивил, - не поменяло результат. пробовал копался в настройках /etc/mysql/my.cnf
(поменял [client] default-character-set = utf8
[mysqld] default-character-set = utf8
character_set_server=utf8
collation-server = utf8_unicode_ci
init_connect=‘SET collation_connection = utf8_unicode_ci’
default-character-set = utf8
[mysqldump] default-character-set = utf8
[mysql] default-character-set = utf8)
результат тот же.
 
Последнее редактирование:

kamelions

Новичок
PHP:
header("Content-Type: text/html; charset={$_CONFIG['encoding']};");
доабивил, - не поменяло результат. пробовал копался в настройках /etc/mysql/my.cnf
(поменял [client] default-character-set = utf8
[mysqld] default-character-set = utf8
character_set_server=utf8
collation-server = utf8_unicode_ci
init_connect=‘SET collation_connection = utf8_unicode_ci’
default-character-set = utf8
[mysqldump] default-character-set = utf8
[mysql] default-character-set = utf8)
результат тот же.
зайди в Index.php и 5 строку поменяй на:
PHP:
header("Content-Type: text/html; charset={$_CONFIG['encoding']};");
потом попробуй добавить новую запись с грида и посмотри что получилось в базе.

Соответственно в файле config.php у тебя должна быть 7 строка:
PHP:
'encoding' => 'utf-8',
 

zacar

Новичок
PHP:
В Index.php 5 строка
header("Content-Type: text/html; charset={$_CONFIG['encoding']};");

Соответственно в файле config.php у тебя должна быть 7 строка:
'encoding' => 'utf-8',
Это все по умолчанию вроде как, поэтому незачем менять.
А вот с кодировками в настройках апача была заморочка.
 

dasser

Новичок
PHP:
header("Content-Type: text/html; charset={$_CONFIG['encoding']};");
зайди в Index.php и 5 строку поменяй на:
PHP:
header("Content-Type: text/html; charset={$_CONFIG['encoding']};");
потом попробуй добавить новую запись с грида и посмотри что получилось в базе.

Соответственно в файле config.php у тебя должна быть 7 строка:
PHP:
'encoding' => 'utf-8',
со всем уважением, но если бы была проблема в этом, зачем бы я лез в настройки мускула ? а ?
код был загружен в первичном состоянии, простетен, не работал, потом изменялись на пробу каждого !отдельного скрипта в index.php, config.php, jqGrid.php, jqGridLoader.php, и опять тестилось. по итогу всех тестов в базу обновляет в кривой кодировке. Привел все значения на сервере в UTF-8, - *опа та же. Пробовал создать новую базу с изначальной кодировкой в UTF-8 и строки в UTF-8 + сопоставление кодировки соединения с MySQL - результат = ( )*( ). Не пойму что я упустил. Если же в мускуле русский текст выдет ????????, если с формы ввожу "русский" результат в базе - "русский"
 

dasser

Новичок
Это все по умолчанию вроде как, поэтому незачем менять.
А вот с кодировками в настройках апача была заморочка.
я боюсь что в мое отсутствие (отпуск) кто то лазил в настройки сервера, "добрая душа", и никто не сознается. Откатить не могу, так как много было изменений в мое отсутствие, да и не осталось у меня изначальных настроек. на свой страх и риск менять приходиться.
 

kamelions

Новичок
Перепутал немного. Помню что менял, что то в index.php. 19 строка:
PHP:
if(isset($_SERVER['HTTP_HOST']) and $_SERVER['HTTP_HOST'] == 'jqgrid-php.net')
{
    $jq_loader->addInitQuery("SET NAMES 'utf8'");
}
можно поменять jqgrid-php.net на свой домен.
После этого в базу стало писать нормально. По крайней мере у меня.
Попробуйте поменять и добавить запись, и посмотреть что ушло в базу.
Сразу предупреждаю, что всякого рода русский, будут так и выводиться в гриде, если записей много будет не гуд :)
 

dasser

Новичок
Перепутал немного. Помню что менял, что то в index.php. 19 строка:
PHP:
if(isset($_SERVER['HTTP_HOST']) and $_SERVER['HTTP_HOST'] == 'jqgrid-php.net')
{
    $jq_loader->addInitQuery("SET NAMES 'utf8'");
}
можно поменять jqgrid-php.net на свой домен.
После этого в базу стало писать нормально. По крайней мере у меня.
Попробуйте поменять и добавить запись, и посмотреть что ушло в базу.
Сразу предупреждаю, что всякого рода русский, будут так и выводиться в гриде, если записей много будет не гуд :)
прислушался, засомневался, но все таки попробовал. добавил свой домен, послал в базу "рус" полчил в итоге "рус". не вариант, я так тоже шаманил в одном из вариантов. Что интересно, что сам код неменял, окромя, настроек соединения, и все равно не пашет, 100пудово с муускулом косяк.
Короч, ребят у кого работает, можете скинуть настройки my.cnf (my.ini) и все настроки базы, строк и т.д. сюда. Заранее спс!
 

zacar

Новичок
Короч, ребят у кого работает, можете скинуть настройки my.cnf (my.ini) и все настроки базы, строк и т.д. сюда. Заранее спс!
Ненужно в мускуле ковыряться.

проверь настройки в апаче для твоего сайта и для, скорее всего, phpMyAdmin.

<Directory "/var/www/https">
Options FollowSymLinks
AllowOverride All
Options FollowSymlinks Includes

<IfModule mod_php5.c>
AddType application/x-httpd-php .php

php_value file_uploads On
php_value upoad_tmp_dir /var/tmp
php_value upload_max_filesize 10M

php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals On
php_value register_globals On
php_admin_flag allow_url_fopen Off
</IfModule>

ErrorDocument 404 /missing.php
AddDefaultCharset UTF-8
SSLOptions +StdEnvVars
</Directory>
 
Сверху