I'm developing my first Wordpress wordpress plugin. I have been following some guides on developing a configurations page.

I've the next page which properly shows the need for the fields within the database. After I visit the page, edit the fields and press "Save changes" the alterations aren't saved towards the database. Basically alter the values directly within the database, then your values demonstrates up properly within the input fields, however i still cannot update the values from the page.

Are you able to use whatever apparent errors that I have made or stuff that I am missing?

<?php
add_action('admin_menu', 'SetupPage');

function SetupPage()
{   
    add_action('admin_init', 'RegisterSettings');

    // Setup administration menu item
    if (function_exists('add_options_page'))
    {
        add_menu_page(__("TestPage"), __("TestPage"), "manage_options", __FILE__, 'PageContent', plugins_url('/images/icon.png', __FILE__));
    }
}

function RegisterSettings()
{
    // Add options to database if they don't already exist
    add_option("test_option1", "", "", "yes");
    add_option("test_option2", "", "", "yes");
    add_option("test_option3", "", "", "yes");

    // Register settings that this form is allowed to update
    register_setting('test_settings', 'test_option1');
    register_setting('test_settings', 'test_option2');
    register_setting('test_settings', 'test_option3');
}

?>

<?php
function PageContent()
{
    if (!current_user_can('manage_options'))
        wp_die(__("You don't have access to this page"));

    ?>
    <div class="wrap">
    <h2><?_e("Test settings")?></h2>

    <form method="post">

        <?php settings_fields('test_settings'); ?>

        <table class="form-table">
            <tr valign="top">
            <th scope="row">test_option1</th>
            <td><input type="text" name="test_option1" value="<?php echo get_option('test_option1'); ?>" /></td>
            </tr>

            <tr valign="top">
            <th scope="row">test_option2</th>
            <td><input type="text" name="test_option2" value="<?php echo get_option('test_option2'); ?>" /></td>
            </tr>

            <tr valign="top">
            <th scope="row">test_option3</th>
            <td><input type="text" name="test_option3" value="<?php echo get_option('test_option3'); ?>" /></td>
            </tr>
        </table>

        <p class="submit">
        <input type="submit" class="button-primary" value="<?php _e('Save changes') ?>" />
        </p>

    </form>
    </div>
<?php
}
?>

Looks in my experience like you have to add the action="options.php" within the form tag. Otherwise it appears right. Without doubt you've checked out this codex page, as your code is extremely similar, but that is the only difference I see.

Which browser are you currently using? It might seem strange, but using Chrome, I have found a few plug ins that do not save configurations correctly.

Not really a great technical answer, but when the wordpress plugin is simply for your own personel use and you will get its admin functions employed in Opera and IE it might be simpler to be satisfied with 'good enough'.