When creating a custom form, how does one store the data in drupal db and then retrieve for display? I'm new to Drupal and things that seem easy are apparently abstracted to oblivion.

I've created a module that displays a survey form. I would like to collect the data and store it in the database, and then allow the admin of the site to view the data that has been collected.

What is the "Drupal way" to do this? 

Thank you in advance!

&lt;?php

function member_survey_menu() {

  $items['member_survey'] = array(
    'title' =&gt; t('Member Survey'),
    'page callback' =&gt; 'member_survey_form',
    'access arguments' =&gt; array('access content'),
  );
  return $items;

}

function member_survey_form(){

    $output = drupal_get_form('member_survey_my_form');
    return $output;
}

function member_survey_my_form($form_state){
    # the options to display in our form radio buttons
    $options1 = array(
      'Strongly Agree' =&gt; t('Strongly Agree'),
      'Agree' =&gt; t('Agree'), 
      'Neutral' =&gt; t('Neutral'),
      'Disagree' =&gt; t('Disagree'),
      'Strongly Disagree' =&gt; t('Strongly Disagree'),
    );

    # the options to display in our form radio buttons
    $options2 = array(
      'Very Satisfied ' =&gt; t('Very Satisfied '),
      'Satisfied' =&gt; t('Satisfied '), 
      'Neither Satisfied or Dissatisfied' =&gt; t('Neither Satisfied or Dissatisfied'),
      'Dissatisfied ' =&gt; t('Dissatisfied '),
      'Very Dissatisfied ' =&gt; t('Very Dissatisfied '),
    );

    $form['knowledgable'] = array(
      '#type' =&gt; 'radios',
      '#title' =&gt; t('Question 1'),
      '#options' =&gt; $options1,
      //'#default_value' =&gt; $options['Neutral'],
    );

    $form['satisfied'] = array(
      '#type' =&gt; 'radios',
      '#title' =&gt; t('Question 4'),
      '#options' =&gt; $options2,
      //'#default_value' =&gt; $options['Neutral'],
    );

    $form['submit'] = array(
        '#type' =&gt; 'submit',
        '#value' =&gt; t('Submit'),
    );

  return $form;
}

// Validate the form submission
function member_survey_my_form_validate($form, &amp;$form_state){
    if(empty($form_state['values']['knowledgable']) ||
        empty($form_state['values']['satisfied']) 
    ){
        form_set_error('knowledgable',t('Please respond to all questions, thank you!'));
    }

} 

?&gt;
A specific answer: you can use sumbit hook to store data. see Submitting Forms: http://drupal.org/node/751826

A general answer: follow this guide related with creating, theming, validating, submitting, storing data, and understanding the flow in Drupal 6 forms: Form API Quickstart Guide http://drupal.org/node/751826

to retrieve data you can use these guidances:

db_query documentation http://api.drupal.org/api/drupal/includes--database.pgsql.inc/function/db_query/6

Database abstraction layer http://api.drupal.org/api/drupal/includes--database.inc/group/database/6

also you can review Examples module http://drupal.org/project/examples specifically the module dbtng_example to database examples or page_example to build a static page add your retrieved information. please note that dbtng_example module is only for Drupal 7, but reviewing this module you will have more ideas about what to review in Drupal 6.

also could be useful the "Module developer's guide" to dive in tutorials/examples about how build forms and retrieve data using modules http://drupal.org/developing/modules