Save Custom Fields

I solved the problem with this code by creating again de meta box:

// Add the Meta Box
function add_custom_meta_box() {
    add_meta_box(
        'custom_meta_box', // $id
        'Product Requirements', // $title
        'show_custom_meta_box', // $callback
        'produktkrav', // $page
        'normal', // $context
        'high'); // $priority
}
add_action('add_meta_boxes', 'add_custom_meta_box');

    // Field Array
    $prefix = 'custom_';
    $custom_meta_fields = array(  

        array(
            'label'=> 'Filter criteria',
            'desc'  => 'Select the filter criteria for this product requirement.',
            'id'    => $prefix.'select',
            'type'  => 'select',
            'options' => array (
                'one' => array (
                    'label' => 'Miljo- og energikrav',
                    'value' => 'Miljo- og energikrav'
                ),
                'two' => array (
                    'label' => 'Tildelingskriterier',
                    'value' => 'Tildelingskriterier'
                ),
                'three' => array (
                    'label' => 'Leverandorens',
                    'value' => 'Leverandorens'
                )
            )
        ),
        array(
            'label'=> 'Mandatory Requirement',
            'desc'  => 'Check if this product requirement is mandatory.',
            'id'    => $prefix.'checkbox',
            'type'  => 'checkbox'
        ),

        array(
            'label' => 'Categories',
            'desc' => 'Related categorie.',
            'id'    =>  $prefix.'post_id',
            'type' => 'post_list',
            'post_type' => array('category_product'),
)
    );  

    // The Callback
function show_custom_meta_box() {
global $custom_meta_fields, $post;
// Use nonce for verification
echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />';  

    // Begin the field table and loop
    echo '<table class="form-table">';
    foreach ($custom_meta_fields as $field) {
        // get value of this field if it exists for this post
        $meta = get_post_meta($post->ID, $field['id'], true);
        // begin a table row with
        echo '<tr>
                <th><label for="'.$field['id'].'">'.$field['label'].'</label></th>
                <td>';
                switch($field['type']) {
                    // case items will go here 

                    // select
case 'select':
    echo '<select name="'.$field['id'].'" id="'.$field['id'].'">';
    foreach ($field['options'] as $option) {
        echo '<option', $meta == $option['value'] ? ' selected="selected"' : '', ' value="'.$option['value'].'">'.$option['label'].'</option>';
    }
    echo '</select><br /><span class="description">'.$field['desc'].'</span>';
break;

// checkbox
case 'checkbox':
    echo '<input type="checkbox" name="'.$field['id'].'" id="'.$field['id'].'" ',$meta ? ' checked="checked"' : '','/>
        <label for="'.$field['id'].'">'.$field['desc'].'</label>';
break; 

// post_list
case 'post_list':
$items = get_posts( array (
    'post_type' => $field['post_type'],
    'posts_per_page' => -1
));
    echo '<select name="'.$field['id'].'" id="'.$field['id'].'">
            <option value="">Select One</option>'; // Select One
        foreach($items as $item) {
            echo '<option value="'.$item->ID.'"',$meta == $item->ID ? ' selected="selected"' : '','> '.$item->post_title.'</option>';
        } // end foreach
    echo '</select><br /><span class="description">'.$field['desc'].'</span>';
break;
                } //end switch
        echo '</td></tr>';
    } // end foreach
    echo '</table>'; // end table
}

// Save the Data
function save_custom_meta($post_id) {
    global $custom_meta_fields;  

    // verify nonce
    if (!wp_verify_nonce($_POST['custom_meta_box_nonce'], basename(__FILE__)))
        return $post_id;
    // check autosave
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return $post_id;
    // check permissions
    if ('page' == $_POST['post_type']) {
        if (!current_user_can('edit_page', $post_id))
            return $post_id;
        } elseif (!current_user_can('edit_post', $post_id)) {
            return $post_id;
    }  

    // loop through fields and save the data
    foreach ($custom_meta_fields as $field) {
        $old = get_post_meta($post_id, $field['id'], true);
        $new = $_POST[$field['id']];
        if ($new && $new != $old) {
            update_post_meta($post_id, $field['id'], $new);
        } elseif ('' == $new && $old) {
            delete_post_meta($post_id, $field['id'], $old);
        }
    } // end foreach
}
add_action('save_post', 'save_custom_meta');``