• twitter image
  • facebook image
  • youtube image
  • linkedin image
Language: CMS Made Simple Czech CMS Made Simple France CMS Made Simple Spain CMS Made Simple Hungary CMS Made Simple Russia CMS Made Simple Netherlands

All times are UTC




Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: Тэг для сохранения данных formbuilder в базе
PostPosted: Wed Feb 29, 2012 10:27 am 
Offline
Power Poster
Power Poster
User avatar

Joined: Thu Nov 01, 2007 3:11 pm
Posts: 337
Понадобилось сделать простой опросник. Модуль poll не подходит. Альтернатив не нашел. Писать свой - лень. Решил поколдовать с Form Builder. Результат ниже, может кому интересно будет. Версия cms - 1.10.3

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

Тэг проверяет наличие таблицы, если нет - создает. Затем сохраняет результаты в базе в таблице вида (id - поля, значение поля).

Результат планирую собирать вручную из базы тоже тэгом.

Код тэга:
Code:
$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']);
}


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC


Who is online

Users browsing this forum: No registered users


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Arvixe - A CMSMS Partner