Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Cannot clear cgi param (if it's really what I need to do)

by lepetitalbert (Monsignor)
on Jan 30, 2008 at 16:10 UTC ( #665151=perlquestion: print w/ replies, xml ) Need Help??
lepetitalbert has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I have a script :

if ( $mode eq "add" ) { # print add page form } if ( $mode eq "save" ) { # save add form infos }

At the end of the add page form :

print hidden( 'mode' , 'save' );

But the output is :

<input type="hidden" name="mode" value="add" />

which is the value of the 'mode' param from the 'previous script call' (is this english ?)

if I replace

print hidden( 'mode' , 'save' );

with

<input type=hidden name=mode value=save />

it works.

I suspected the param value is stored someway and tried :

$query -> delete('mode'); $query -> delete_all();

but my mode is still set to 'add'.

How can I fix this ?

Thanks.

Have a nice day.

"There is only one good, namely knowledge, and only one evil, namely ignorance." Socrates

Comment on Cannot clear cgi param (if it's really what I need to do)
Select or Download Code
Re: Cannot clear cgi param (if it's really what I need to do)
by moritz (Cardinal) on Jan 30, 2008 at 16:21 UTC
    When you clear the data from a particular CGI object, $query, you should call the method hidden on that object. Don't use the sub form.

    I think

    my $query = new CGI; $query->delete_all(); print $query->hidden(mode => 'save');
    should work (not tested, though).

      Hi moritz

      Yes works :)

      Besten Dank !

      Have a nice day.

      "There is only one good, namely knowledge, and only one evil, namely ignorance." Socrates
Re: Cannot clear cgi param (if it's really what I need to do)
by kyle (Abbot) on Jan 30, 2008 at 17:10 UTC

    According to the CGI documentation (under "CREATING FILL-OUT FORMS"), you have to tell it that you really mean for the parameter to be what you asked it to be. (I have found this behavior annoying frequently, but it is documented.)

    use CGI; my $cgi = CGI->new(); $cgi->param( 'mode', 'orig' ); print $cgi->hidden( 'mode', 'second arg' ), "\n"; print $cgi->hidden( -name => 'mode', -default => 'default', ), "\n"; print $cgi->hidden( -name => 'mode', -default => 'forced', -override => 1 ), "\n"; __END__ <input type="hidden" name="mode" value="orig" /> <input type="hidden" name="mode" value="orig" /> <input type="hidden" name="mode" value="forced" />

      Hi kyle,

      I came accross the '-override', but as I

      print hidden(); instead of print $cgi->hidden()

      it has no effect.

      Thank you.

      Have a nice day

      "There is only one good, namely knowledge, and only one evil, namely ignorance." Socrates

        This does not appear to be the case.

        BEGIN { $ENV{QUERY_STRING} = 'mode=orig'; $ENV{REQUEST_METHOD} = 'GET'; } use CGI qw( hidden ); print hidden( 'mode', 'second arg' ), "\n"; print hidden( -name => 'mode', -default => 'default', ), "\n"; print hidden( -name => 'mode', -default => 'forced', -override => 1 ), "\n"; __END__ <input type="hidden" name="mode" value="orig" /> <input type="hidden" name="mode" value="orig" /> <input type="hidden" name="mode" value="forced" />

        Perhaps your code is doing something different from what you think it's doing?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://665151]
Approved by moritz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (8)
As of 2014-07-28 07:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (193 votes), past polls