How to display DB data from Custom module using custom HTML markup? I am putting a custom module together. It will take data submitted from a form from site users and store it in the DB. Admins will then be able to review the data and make changes to it. It is easy enough to display the DB data with something like:

return theme('item_list', array('header' =&gt; $header,'items' =&gt; $rows));


But I need to customize it to have custom HTML markup. Any thoughts, answers or direction?
There are 2 ways of doing it. 
First one is to define your own theme function using hook_theme and then either create a theme function of a template file inside of your module or theme folder.
example code is given here

/**
 * Implements hook_theme().
 */
function MYMODULE_theme($existing, $type, $theme, $path) {
  $custom_theme = array();
  $custom_theme['my_new_theme'] = array(
    // example theme template register
    // for 
    //sites/all/modules/mymodule/templates/my_new_theme.tpl.php
    'template' =&gt; 'my-new-theme',//dash will convert to underscore in template name.
    'path' =&gt; drupal_get_path('module', 'mymodule') . '/templates',
    'variables' =&gt; array('header' =&gt; null,'rows'=&gt;null),
  );

  return $custom_theme;
}


You can then use 

theme('my_new_theme', array('header' =&gt; $header, 'rows' =&gt; $rows));


instead of your theme function call.
And then inside of your my_new_theme.tpl.php you can access $header and $rows variables.

Second method is not recommended but a possible way of doing this.
So you can just create your HTML output in your callback function where you are creating that list. Store your full html to be out-puted in some variable and finally just return that variable at the end. Drupal will render your HTML as it is.