I am trying to make simple user group module. I want to assign more then one user for a single group and also want to assign more then one groups for a single user. but groups to users data is not storing in database. All Files given Bellow
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
CREATE TABLE IF NOT EXISTS `fuel_users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`first_name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`last_name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`language` varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'english',
`reset_key` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`super_admin` enum('yes','no') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'no',
`active` enum('yes','no') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'yes',
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
INSERT INTO `fuel_users` (`id`, `user_name`, `password`, `email`, `first_name`, `last_name`, `language`, `reset_key`, `super_admin`, `active`) VALUES
(1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', '', 'Admin', '', 'english', '', 'yes', 'yes'),
(2, 'aslam', 'e10adc3949ba59abbe56e057f20f883e', 'aslampatwary@gmail.com', 'Md. Aslam', 'Patwary', 'english', '', 'no', 'yes'),
(3, 'administrator', '123456', 'administrator@admin.com', 'Administrator', 'person', 'english', '', 'no', 'yes'),
..................................................................................
CREATE TABLE IF NOT EXISTS `ufcm_groups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`active` enum('yes','no') NOT NULL DEFAULT 'yes',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `ufcm_groups` (`id`, `title`, `active`) VALUES
(1, 'php', 'yes'),
(2, 'ASP', 'yes'),
(3, 'Science & technology', 'yes');
..................................................................................
CREATE TABLE IF NOT EXISTS `ufcm_groups_to_users` (
`group_id` int(10) NOT NULL,
`user_id` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
.................................................................................
ufcm_users_model.php
----------------------------------
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
require_once(FUEL_PATH.'models/base_module_model.php');
require_once(MODULES_PATH.'/ufcm/config/ufcm_constants.php');
class Ufcm_users_model extends Base_module_model {
function __construct()
{
parent::__construct('fuel_users', UFCM_FOLDER); // table name
}
function list_items($limit = NULL, $offset = NULL, $col = 'id', $order = 'asc')
{
$data = parent::list_items($limit, $offset, $col, $order);
return $data;
}
}
class Ufcm_user_model extends Base_module_record{
}
.................................................................................
ufcm_groups_model.php
----------------------------------
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
require_once(FUEL_PATH.'models/base_module_model.php');
class Ufcm_groups_model extends Base_module_model {
function __construct()
{
parent::__construct('ufcm_groups', UFCM_FOLDER); // table name
}
function list_items($limit = NULL, $offset = NULL, $col = 'id', $order = 'asc')
{
$data = parent::list_items($limit, $offset, $col, $order);
return $data;
}
function form_fields($values = array()){
$fields = parent::form_fields();
$CI =& get_instance();
$CI->load->module_model(UFCM_FOLDER, 'ufcm_users_model');
$CI->load->module_model(UFCM_FOLDER, 'ufcm_groups_model');
$CI->load->module_model(UFCM_FOLDER, 'ufcm_groups_to_users_model');
$ufcm_config = $CI->config->item('ufcm');
$user_options = $CI->ufcm_users_model->options_list('id', 'user_name', array('active' => 'yes'), 'user_name');
$user_values = (!empty($values['id'])) ? array_keys($CI->ufcm_groups_to_users_model->find_all_array_assoc('user_id', array('group_id' => $values['id'], 'fuel_users'.'.active' => 'yes'))) : array();
print_r($user_values);
$fields['users'] = array('label' => 'Users', 'type' => 'array', 'options' => $user_options, 'class' => 'add_edit ufcm/users combo', 'value' => $user_values, 'mode' => 'multi');
return $fields;
}
}
class Ufcm_group_model extends Base_module_record{
}
.................................................................................
ufcm_groups_to_users_model.php
----------------------------------
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Ufcm_groups_to_users_model extends Base_module_model {
public $required = array();
public $record_class = 'Ufcm_group_to_user';
public $key_field = array('group_id', 'user_id');
public $_tables = array();
function __construct(){
$CI =& get_instance();
$CI->config->module_load(UFCM_FOLDER, UFCM_FOLDER);
parent::__construct('ufcm_groups_to_users',UFCM_FOLDER);
}
}
class Ufcm_group_to_user_model extends Base_module_model {
}
======================AND OTHERS CONFIG FILE [NO LIBRARY FILE CREATED]=================
So please View my All Files and Sql Statment Provide a Solution. I am a Student. IT is Important for my graduation program.
Comments
------------------------------------
A Database Error Occurred
Error Number: 1054
Unknown column 'fuel_users.active' in 'where clause'
SELECT `ufcm_groups_to_users`.* FROM (`ufcm_groups_to_users`) WHERE `ufcm_groups_to_users`.`group_id` = '4' AND `fuel_users`.`active` = 'yes'
Filename: \xampp\htdocs\ufcm\fuel\codeigniter\database\DB_driver.php
Line Number: 330
self::$tables = array_merge(self::$tables, $config_tables, $module_tables, $fuel_tables);
------------config/ufcm.php-------------------
-----------------------------------
<?php
$config['nav']['ufcm'] = array(
'ufcm/users' => 'User',
'ufcm/groups' =>'Groups'
);
// tables for UFCM
$config['tables']['ufcm_users'] = 'fuel_users';
$config['tables']['ufcm_groups_to_users'] = 'ufcm_groups_to_users';
$config['tables']['ufcm_groups'] = 'ufcm_groups';
--------------------------------------------
------------config/ufcm_constant.php-------------------
-----------------------------------
<?php
define('UFCM_VERSION', '1.0');
define('UFCM_FOLDER', 'ufcm');
define('UFCM_PATH', MODULES_PATH.UFCM_FOLDER.'/');
--------------------------------------------
------------config/ufcm_fuel_module.php-------------------
-----------------------------------
<?php
$config['modules']['ufcm_users'] = array(
'module_name' => 'Users',
'module_uri' => 'ufcm/users',
'model_name' => 'ufcm_users_model',
'model_location' => 'ufcm',
'table_headers' => array(
'id',
'first_name',
'user_name',
'email',
'active',
),
'display_field' => 'id',
'preview_path' => 'ufcm/users/{id}',
'permission' => 'ufcm/users',
'instructions' => lang('module_instructions_default', 'ufcm users'),
'archivable' => TRUE,
'configuration' => array('ufcm' => 'ufcm'),
'nav_selected' => 'ufcm/users',
// 'language' => array('ufcm' => 'ufcm')
);
$config['modules']['ufcm_groups'] = array(
'module_name' => 'Groups',
'module_uri' => 'ufcm/groups',
'model_name' => 'ufcm_groups_model',
'model_location' => 'ufcm',
'table_headers' => array(
'id',
'title',
'active',
),
'display_field' => 'id',
'preview_path' => 'ufcm/groups/{id}',
'permission' => 'ufcm/groups',
'instructions' => lang('module_instructions_default', 'ufcm groups'),
'archivable' => TRUE,
'configuration' => array('ufcm' => 'ufcm'),
'nav_selected' => 'ufcm/groups',
// 'language' => array('ufcm' => 'ufcm')
);
--------------------------------------------
------------config/ufcm_fuel_module.php-------------------
-----------------------------------
<?php
$ufcm_controllers = array('users', 'groups');
foreach($ufcm_controllers as $c)
{
$route[FUEL_ROUTE.'ufcm/'.$c] = FUEL_FOLDER.'/module';
$route[FUEL_ROUTE.'ufcm/'.$c.'/(.*)'] = FUEL_FOLDER.'/module/$1';
}
$route[FUEL_ROUTE.'ufcm/settings'] = UFCM_FOLDER.'/settings';
-------------------------------------------------------------------
Above is my Config files. Please I identify the problem. I did not understand your recent comment.
function __construct() { parent::__construct('ufcm_users', UFCM_FOLDER); // table name }
Also, this following line you are using the fuel_users.active in the where clause and by default that column doesn't exist for that model since it is a model for the ufcm_groups_to_users table:
$user_values = (!empty($values['id'])) ? array_keys($CI->ufcm_groups_to_users_model->find_all_array_assoc('user_id', array('group_id' => $values['id'], 'fuel_users'.'.active' => 'yes'))) : array();
To include the fuel_users table fields you can add a _common_query() method to your model to include that join and select on all model "find" methods:
function _common_query() { parent::_common_query(); $this->db->join('fuel_users', 'fuel_users.id = ufcm_groups_to_users.user_id', 'left'); $this->db->select('ufcm_groups_to_users.*, fuel_users.active'); }