Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
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

Replies are listed 'Best First'.
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?
[Corion]: Meh, first round of escalations for me not wanting to fix in production what a project has mismanaged. Now another project, which eats up all the resources until end of this year wants to take that task and put it on my list of things as well.
[Corion]: So now there will be the fun of me explaining to the project that $other_project had low priority because $project has high priority. If $project picks up the task from $other_project, they also will need to reprioritize my tasks to get that done...
[Corion]: ... of course at the cost of something else on my list of tasks for $project, as there only is a finite amount of days until $deadline.

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (6)
As of 2017-08-17 12:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Who is your favorite scientist and why?



























    Results (287 votes). Check out past polls.

    Notices?