Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re^3: how to use -nosticky in CGI?

by chargrill (Parson)
on Dec 18, 2006 at 14:20 UTC ( #590441=note: print w/replies, xml ) Need Help??

in reply to Re^2: how to use -nosticky in CGI?
in thread how to use -nosticky in CGI?

So, this isn't self contained, and takes a fair amount of tweaking to make work, and even then I'm not sure I can make it duplicate your behavior. As is, you've left off:

  1. #!/usr/bin/perl,
  2. use CGI qw/:standard/;,
  3. the bit of CGI code that displays the button called 'New Entry',
  4. enough data stuffed into perhaps __DATA__ to recreate the problem.

Show us enough code that does all that (most importantly #4) that you can run in your environment, so that we can easily run it in our environments to be able to better help you.

s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; = qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)

Replies are listed 'Best First'.
Re^4: how to use -nosticky in CGI?
by jck (Scribe) on Dec 18, 2006 at 19:26 UTC
    chargill -

    my apologies - i knew that it wasn't enough for you to really see what's going on, but what i'm working on is private information, and i didn't want to create a dummy db to demonstrate.

    what i have come up with as a workaround is to add ", -value=>'', -override=>1" to each field, as follows:

    print table( Tr({-valign=>"TOP"}, td(["First Name", textfield(-name=>'firstname', -size=>80, -value= +>'', -override=>1)]), td(["Last Name", textfield(-name=>'lastname', -size=>80, -value=>' +', -override=>1)]), td(["Address", textfield(-name=>'address1', -size=>80, -value=>'', + -override=>1)]),
    setting each value to '' doesn't do it without including the -override=>1

    so, this works, but it seems like there must be an easier, more efficient way!

    in answer to your inquiries about the rest of my code:

    1. #!/usr/bin/perl, 2. use CGI qw/:standard/;,

    the top of my script is:
    #!/usr/bin/perl use strict; use warnings; use CGI qw(:standard); use CGI::Pretty; use CGI::Carp qw(fatalsToBrowser); use DBI; my $q = new CGI;
    i've tried putting -nosticky into the use CGI statement: use CGI qw(:standard, -nosticky); which didn't clear the fields. and i also put '-nosticky' into each of the fields, again, without success (the previous field values remain). i've tried adding the line $q->delete_all(); above the code creating the form when "submit = 'New Entry'", which also doesn't work to clear the field values.
    3. the bit of CGI code that displays the button called 'New Entry',
    print submit(-name=>'submit',-value=>'New Entry'); the main conditionals that are run look like:
    %in = map { $_ => $q->param($_) } $q->param; if ($in{'submit'} ne 'New Entry') { . . $requestID = $in{'requestID'}; $sql = "SELECT title, firstname, lastname, address1, address2, city, s +tate, zipcode, zipextra, phonehome, phonework, phonecell, email, user +name, role, approved FROM members WHERE UID = $requestID"; ....code to generate table with the values from the db inserted into t +he fields... } else { ....code to generate table with empty fields... }
    4. enough data stuffed into perhaps __DATA__ to recreate the problem.

    the source of the DATA is from a sql statement, as shown above....not sure how to show you this, since it's confidential.

      Thank you for giving me some more to go on. I can understand your not wishing to share proprietary (or maybe incriminating! :) information. Please know that demonstrations of bad behavior can really pretty easily be mocked up (see below ;).

      I looked at the docs for CGI (which I haven't done in a very very very long time, and I think my locally installed copy is a little rusty, hence not using things like start_table) and really can't undertand what's causing this behavior.

      I whipped up something that is self contained, possibly recreates the functionality your form has (I could be way off, though), and doesn't really do anything other than to exercise the code - if you hit "New Entry", nothing happens, since the data shown in the rows is coming out of an unchangeable __DATA__ section.

      I would be really interested if you follow these steps:

      1. Click one of the "edit me" links
      2. Click "New Entry"
      3. Click "add"

      ... and you see the behavior recreated (i.e. whatever was in there last during an "edit" shows up after clicking "add".

      Otherwise, pvbcharon might be on to something - you're seeing persistence of data that has a source other than your code.

      s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; = qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://590441]
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: (2)
As of 2019-09-22 18:11 GMT
Find Nodes?
    Voting Booth?
    The room is dark, and your next move is ...

    Results (273 votes). Check out past polls.