Undefined index error 4

in my plugin option page, i used an option checkbox. when it checked, this is ok. but when i unchecked it, there showing an error, this :

Undefined index: enable in C:xampphtdocshorrorwp-contentpluginsself-photo-galleryphoto-gallery.php on line 173
/>

the line 173 is :

Read More
<input id="spg_settings[enable]" name="spg_settings[enable]" type="checkbox"  value="1" <?php checked(1, $spg_options['enable']); ?> />

but there is another fields

<input type="text" id="spg_settings[twitter_url]" name="spg_settings[twitter_url]" value="<?php echo $spg_options['twitter_url']; ?>"/>

it works fine and didn’t showing any error like this.

Related posts

Leave a Reply

3 comments

  1. Add single quotes.

    Use spg_settings['enable'] instead

    Always use quotes around a string literal array index. For example, $foo[‘bar’] is correct, while $foo[bar] is not. But why? It is common to encounter this kind of syntax in old scripts:

    <?php
    $foo[bar] = 'enemy';
    echo $foo[bar];
    // etc
    ?>
    

    This is wrong, but it works. The reason is that this code has an undefined constant (bar) rather than a string (‘bar’ – notice the quotes). PHP may in the future define constants which, unfortunately for such code, have the same name. It works because PHP automatically converts a bare string (an unquoted string which does not correspond to any known symbol) into a string which contains the bare string. For instance, if there is no defined constant named bar, then PHP will substitute in the string ‘bar’ and use that.

    UPDATE1:

    replace

    <input type="text" id="spg_settings['twitter_url']" name="spg_settings['twitter_url']" value="<?php echo $spg_options['twitter_url']; ?>"/>
    

    with follow line of code

    <input type="text" id="spg_settings['twitter_url']" name="spg_settings['twitter_url']" value="<?php echo (isset($spg_options['twitter_url'])) ? $spg_options['twitter_url'] : ''; ?>"/>
    

    UPDATE2:

    And replace

    <input id="spg_settings['enable']" name="spg_settings['enable']" type="checkbox"  value="1" <?php checked(1, $spg_options['enable']); ?> />
    

    with

    <input id="spg_settings['enable']" name="spg_settings['enable']" type="checkbox"  value="1" <?php checked(1, (isset($spg_options['enable'])) ? $spg_options['enable'] : 0); ?> />
    

    For more information check here

  2. try this

    <input id="<?php echo $spg_settings['enable'];?>" name="<?php echo $spg_settings['enable'];?>" type="checkbox"  value="1" <?php checked(1, $spg_options['enable']); ?> />
    
  3. Try to put quotes and perform print when using the array index values:

    <input id="<?php print $spg_settings['enable'];?>" name="<?php print $spg_settings['enable'];?>" type="checkbox"  value="1" <?php checked(1, $spg_options['enable']); ?> />