χάμστερ :: :: :: :: ::
Feci, quod potui, faciant meliora potentes
Понадобилось сделать простой опросник. Модуль poll не подходит. Альтернатив не нашел. Писать свой - лень. Решил поколдовать с Form Builder. Результат ниже, может кому интересно будет. Версия cms - 1.10.3
Создал форму, в качестве обработчика указал тэг пользователя. Альясы у полей не проставлял.
Тэг проверяет наличие таблицы, если нет - создает. Затем сохраняет результаты в базе в таблице вида (id - поля, значение поля).
Результат планирую собирать вручную из базы тоже тэгом.
Код тэга:
$db = cmsms()->GetDb();
$table = cms_db_prefix() . 'fbvalues';
// проверяем наличие таблицы, Если нет - создаем
// '; --' - этот кусок нужен, чтобы в GetOne запросе отсечь Limit
$query = "Show tables from `{$db->database}` like ? ; --";
$dbresult = $db->GetOne($query, array($table));
if (!$dbresult) {
$data = array(
'id' => 'I KEY AUTOINCREMENT',
'field_id' => 'I',
'field_val' => 'C(255)',
);
$flds = array();
foreach ($data as $field => $type) {
$flds[] = "`$field` {$type}";
}
$dict = NewDataDictionary($db);
$sqlarray = $dict->CreateTableSQL(
$table,
implode(',', $flds),
array('mysql' => 'TYPE=MyISAM')
);
$dict->ExecuteSQLArray($sqlarray);
}
// кусок выше можно закомментировать
// после того, как таблица будет создана.
// Собираем данные
$data = array();
foreach ($params as $k => $v) {
if (substr($k, 0, 4) == 'fld_' && $v) {
$k = explode('_', $k);
$data['q'][] = '(?, ?)';
$data['p'][] = $k[1];
$data['p'][] = $v;
}
}
// сохраняем
if ($data) {
$query = "INSERT INTO `{$table}`
(`field_id`, `field_val`) VALUES "
. implode(',', $data['q']);
$db->execute($query, $data['p']);
}
Новое на сайте:
- Node.js
- PHP
- Python
- Apache и другие
- Git
- Postgres и локаль
- mysqldump с удаленного сервера
- unity ios build
- Включение и просмотр логов запросов mysql
- Could not find a valid tablespace file for 'database/#sql-*'
- JavaScript, CustomEvent, dispatchevent и jquery.on()
- rabbitmq побился индекс, когда закончилось место