Hi Mason Users!
I've been frustrated with this all morning. I have a particular spot
where (presumably) mason is not filling in a variable correctly and so
a DBI->do call is coming back with *no* return value (it is not undef,
either). Here's some prelimary stuff that all works fine:
% my $db = DBI->connect("DBI:SQLite:$db_file");
% ####### Determine how we were called ######
% # add subject to database?
% if (exists $ARGS{name}) { $db->do("insert into subjects (name) values
('$ARGS{name}');"); }
Then there are other possibilities using if (exists), this is the
problem one as it *should* be:
% # add docdir to database?
% } elsif (exists $ARGS{title}) {
% $db->do(<<"DONE");
% insert into docdirs (title,path,subj_id,pages)
% values ('$ARGS{title}','$ARGS{path}',
% '$ARGS{subjid}','$ARGS{pages}');
%DONE
%}
However, none of these variable is getting filled in altho they are
testing valid. Here is what I'm looking at now after such testing:
% # add docdir to database?
% } elsif (exists $ARGS{title}) {
% my $t=$ARGS{title}; my $p=$ARGS{path}; my $s=$ARGS{subjid};
my $n=$ARGS{pages};
%# my $r=$db->do("insert into docdirs (title,path,subj_id,pages)
values ('$t','$p','$s','$n');");
% my $r=$db->do("insert into docdirs (title) values ('$t');");
<h2><%"($r) $t $p $s $n <-"%></h2>
% }
this contains my attempts to find a solution (eg by assigning tmp
variables from $ARGS). I would note that no matter what variable
value I use (eg, $t="whatever") in the simplified, one value version at
the bottom, I get nothing. If I change it to:
% my $r=$db->do("insert into docdirs (title) values ('whatever');");
Ie, no variable to substitute, then $r is one and "whatever" is
successfully added to the db. Again, all the variables do contain
correct values as verified by the <h2> line. This shows $r as nothing
(); but $r does not test positive for undef either.
I suspect this has something to do with the order in which Mason
performs substitutions, but in any case it seems like a real "bug" or
something to me; the variable is valid and the syntax is identical to
the syntax I am using elsewhere. There is no SQL error in the http
logs.
If I can't find a better solution, I will just have to work around this
by breaking the page into seperate components -- since all my other db
insert calls work, the only thing I see different in this page is the
length and number of (potential) db operations, etc. Since only one of
the potential operations will take place, I can't really blame DBI and
believe the page is just "too much" for mason to correctly parse*.
That is not a very satisfying solution!
_MK
* all of those other, almost identical ones, work, so I can't blame the
preceeding syntax either...the last one just appears to be "the straw
that broke the camel's back" ;)
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Mason-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mason-users