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. | [reply] [d/l] [select] |
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:
- Click one of the "edit me" links
- Click "New Entry"
- 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.
--chargrill
s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; =
qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)
| [reply] [d/l] [select] |