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

acanthis

Новичок
Лучше всего повесить event на открытие формы. И в нем делать либо ajax-запрос на сервер, либо выбирать уже загруженную строку из самого грида, если она есть - функция getRowData, кажется.
После получения данных - заполняем форму через jQuery. Прямо $(form).find('#foo').val(foo);
А можно поподробнее про вешенье event-а на открытие формы? Что, куда, зачем?
 

klev2004

Новичок
Подскажите, как на форме редактирования/добавления записи подключить кнопку для генерации случайного значения в конкретном поле (в моем случае в поле Key)? Сама функция генерации написана, вызывается так:
var Key = GenerateKey();
1.PNG
 

acanthis

Новичок
в св-во поля вставляем:

PHP:
'formoptions' => array('elmsuffix' => '<input type="submit" onclick="GenerateKey();" value="Моя кнопка"/>'),
Как то так
 

klev2004

Новичок
Кто знает - как в поле даты выводить форматированный unixtime?
'formatter' => 'date' выводит NaN/NaN/NaN, кроме того хотелось бы самому настроить формат вывода: dd.mm.yy

Как и где определить свой формат для formatter?

Есть какой-то режим отладки? При попытке добавить/редактировать новую запись вываливается ошибка с обрезанным SQL запросом или вовсе закрывается форма и запись в БД не добавляется.
 

klev2004

Новичок
Кто знает - как в поле даты выводить форматированный unixtime?
'formatter' => 'date' выводит NaN/NaN/NaN, кроме того хотелось бы самому настроить формат вывода: dd.mm.yy
Решил эту проблем таким образом:

PHP:
    protected function parseRow($r)
    {        
        $r['Created'] = date('d.m.Y', $r['Created']);
        $r['Expired'] = date('d.m.Y', $r['Expired']);
        
        return $r;
    }
ВОПРОС ОТКРЫТ:
Подскажите какую функцию перегрузить для предварительной обработки данных перед отправкой в БД.
К примеру: перевести дату в unixtime
 

acanthis

Новичок
Решил эту проблем таким образом:

PHP:
    protected function parseRow($r)
    {        
        $r['Created'] = date('d.m.Y', $r['Created']);
        $r['Expired'] = date('d.m.Y', $r['Expired']);
        
        return $r;
    }
ВОПРОС ОТКРЫТ:
Подскажите какую функцию перегрузить для предварительной обработки данных перед отправкой в БД.
К примеру: перевести дату в unixtime
я использую ф-ию operData, в ней можно изменять данные как при добавлении так и при редактировании:
PHP:
	protected function operData($data)
	{		
		$data['date'] = date('Y-m-d', strtotime($data['date']));
		return $data;
	}
В этом примере я как раз меняю формат даты (из дд.мм.гггг в Y-m-d)
 

klev2004

Новичок
я использую ф-ию operData, в ней можно изменять данные как при добавлении так и при редактировании:
PHP:
	protected function operData($data)
	{		
		$data['date'] = date('Y-m-d', strtotime($data['date']));
		return $data;
	}
В этом примере я как раз меняю формат даты (из дд.мм.гггг в Y-m-d)
Спасибо еще раз! Получилось.

Есть какой-то режим отладки? При попытке добавить/редактировать новую запись вываливается ошибка с обрезанным SQL запросом или вовсе закрывается форма и запись в БД не добавляется.
 

acanthis

Новичок
Есть какой-то режим отладки? При попытке добавить/редактировать новую запись вываливается ошибка с обрезанным SQL запросом или вовсе закрывается форма и запись в БД не добавляется.
Я в таких случаях смотрю лог апача :)
 

klev2004

Новичок
Ерунда такая получилась - все добавляется. А одно поле пустое остается. Если в protected function operData($data) присвоить любое значение переменной - в базу уходят все поля. Если из формы это поле заполнять - оно пустое.
 

acanthis

Новичок
Ерунда такая получилась - все добавляется. А одно поле пустое остается. Если в protected function operData($data) присвоить любое значение переменной - в базу уходят все поля. Если из формы это поле заполнять - оно пустое.
Проверяйте файрбагом что находится в переменной $data, сделайте echo $date и смотрите что возвращает сервер
 

klev2004

Новичок
Проверяю, в файрбаге - поле отправляется с информацией, но если делать проверку в operData($data) - то оно уже там считается пустым. Думаю, проблема где-то на поверхности. Не хватает только нормальной отладки. echo не работают
 

acanthis

Новичок
Проверяю, в файрбаге - поле отправляется с информацией, но если делать проверку в operData($data) - то оно уже там считается пустым. Думаю, проблема где-то на поверхности. Не хватает только нормальной отладки. echo не работают
дайте весь код ф-ии operData
 

klev2004

Новичок
PHP:
    protected function operData($data)
    {        
        // проблема с полем $data['Session4']
        //
        // ниже в проверке выставляется всегда значение по условию в true
        //(empty($data['Session4'])) ? $data['Session4'] = '1111' : $data['Session4'] = '2222';
        // если определять переменную прямо тут, то она нормально добавится в БД
        // $data['Session4'] = '1234';
        // в файрбаге видно, что эта переменная уходит с правильным значением POST'ом


        $data['Created'] = strtotime($data['Created']);
        $data['Expired'] = strtotime($data['Expired']);
        return $data;
    }
 

acanthis

Новичок
PHP:
    protected function operData($data)
    {        
        // проблема с полем $data['Session4']
        //
        // ниже в проверке выставляется всегда значение по условию в true
        //(empty($data['Session4'])) ? $data['Session4'] = '1111' : $data['Session4'] = '2222';
        // если определять переменную прямо тут, то она нормально добавится в БД
        // $data['Session4'] = '1234';
        // в файрбаге видно, что эта переменная уходит с правильным значением POST'ом


        $data['Created'] = strtotime($data['Created']);
        $data['Expired'] = strtotime($data['Expired']);
        return $data;
    }
У вас поля Created и Expired какой тип данных имеют? И какая БД у вас?
 

klev2004

Новичок
MySQL
`Session4` varchar(4) NOT NULL,
`Key32` varchar(32) NOT NULL,
`Created` int(11) NOT NULL,
`Expired` int(11) NOT NULL,
 

acanthis

Новичок
странно если честно, все должно отрабатывать, только что проверил:
PHP:
$r = "09.08.2012";
echo strtotime($r);
вернуло - 1344448800
 

klev2004

Новичок
В том то и дело, что есть 2 одинаковых по типу поля
Session4 и Key32 (VARCHAR)
В одно поле сохраняется информация из формы, в другое нет.
Пробовал в Session4 и Key32 сохранять из поля Key32 - все сохраняет, только в первое поле кладутся первые 4 символа (потому как VARCHAR(4)).
Грешить остается только на саму форму. Именно на поле Session4.
Была проблема и с полем Key - когда переименовал его в Key32 - проблема ушла, вероятно что Key - предописанная константа. А вот с Session4 никак не пойму что делать.
 
Сверху