Advertising sustains the DA. Ads are hidden for members. Join today

Computed Field

Storing checkboxes in a single CCK field as comma separated values for performance reasons

Last updated on
30 April 2025

You are browsing documentation for an older version of Drupal, which is not supported any longer, and the information may not be correct. See current documentation for Contributed modules

I was unhappy with the way CCK stores multi value options widgets, as for each value it adds a separate row in a content field table. I had a content type where 100 selections (checkboxes) were needed and that meant 100 table rows per node created by CCK. As the table would get larger this might be a problem with all the Joins Views and CCK makes...
In order to save on space and hosting fees I decided to store the selected values in a single text field as a comma separated value.

Here is the code for the
Computed Code:

// Remove "0" Values, do not store unselected keys
$new_array_without_nulls = array_filter($node->completed_services);

// Store checked boxes
$node_field[0]['value'] = implode(',',$new_array_without_nulls);

And in hook form alter, add the checkboxes to your form:


function mymodulename_form_alter(&$form, &$form_state, $form_id) {
  if($form_id == "my_node_form")
  	{
	$nodes = db_query("CUSTOM SQL TO GET CHECKBOX KEYS AND VALUES");
	
	while ($node = db_fetch_object($nodes)) {
	  $checkboxarray[$node->nid] = $node->title;   // In my case I used as node ids as keys and node titles as values from content type
	}

  $form['my_checkboxes'] = array
  	(
	'#title' => "My Checkboxes",
	'#type' => 'checkboxes',
	'#options' => $checkboxarray,
	'#default_value'   =>  	'#default_value'   =>  explode(",",$form['#node']->field_computed['0']['value'])
	);
  }

}

Help improve this page

Page status: Not set

You can: