Ora-Apex:如何从手动HTML表单中捕获屏幕字段值

问题描述 投票:0回答:1

在过去的两天里,我有一个令我头疼的问题。我正在Oracle APEX 5中开发一个应用程序。问题是在一个页面上,我必须根据表中的一些数据手动生成HTML表单(不是通过APEX中提供的表单向导),但是当我提交表单时,在下一页上,我无法引用上一页填写的表单字段。这是我的页面区域代码,具有以下形式:

/ * PL / SQL动态区域的源代码* /

宣布

vc1   varchar2(107);
vc2   varchar2(35);
vc3   varchar2(35);
vc4   varchar2(35);
vc5   varchar2(35);
vc6   varchar2(35);
item_typ varchar2(50);

开始

htp.p ('<form name="page1_form" method="get" action="user_resp.php">');

htp.p ('<div style="font-size:x-small;">');

htp.p ('Email: &nbsp;<input type="text" id="v_email"> &nbsp;');

htp.p ('<br/> <br/>');


select todayq,opt1,opt2,opt3,opt4,opt5,item_type
  into vc1,vc2,vc3,vc4,vc5,vc6,item_typ
  from todaysq
 where dowk = to_number(to_char(sysdate,'D'));

htp.p ('<p id="vc1">' || vc1 || ' </p> <br/>');
IF upper(item_typ) IN ('RADIO','CHECKBOX') THEN
   if vc2 is not null and vc2 != ' ' then 
      htp.p ('&nbsp;<input type="' || item_typ || '" name="ans1"   value="1" id="vc2"> ' || vc2 || ' <br/> '); 
   end if;
   if vc3 is not null and vc3 != ' ' then 
      htp.p ('&nbsp;<input type="' || item_typ || '" name="ans1" value="2" id="vc3"> ' || vc3 || ' <br/> ');
   end if;   
   if vc4 is not null and vc4 != ' ' then    
      htp.p ('&nbsp;<input type="' || item_typ || '" name="ans1" value="4" id="vc4"> ' || vc4 || '<br/> ' );
   end if;
   if vc5 is not null and vc5 != ' ' then 
      htp.p ('&nbsp;<input type="' || item_typ || '" name="ans1" value="3" id="vc5"> ' || vc5 || '<br/> ');
   end if;
   htp.p ('<br/> <br/>');
ELSIF upper(item_typ) IN ('TEXT','PASSWORD','TEXTAREA') THEN 
      htp.p ('&nbsp;1.<input type="' || item_typ || '" name="ans1"   id="vc2" value="' || vc2 || '"> <br/> '); 
      htp.p ('&nbsp;2.<input type="' || item_typ || '" name="ans2" id="vc3" value="' || vc3 || '"> <br/> ');
      htp.p ('&nbsp;3.<input type="' || item_typ || '" name="ans3" id="vc4" value="' || vc4 || '"> <br/> ' );
      htp.p ('<br/> <br/>');
END IF;

htp.p ('<button type="submit"> Submit </button>');

htp.p ('</div>');

htp.p ('</form>');

例外

WHEN OTHERS THEN

  htp.p('What is causing you to search for a new job? <br/> <br/>');

  htp.p('&nbsp;<input type="radio" name="ans1" value="1"> Current Salary <br/> ');

  htp.p('&nbsp;<input type="radio" name="ans1" value="2"> Location<br/> ');

  htp.p('&nbsp;<input type="radio" name="ans1" value="4"> Unhappy with Management<br/> ' );

  htp.p('&nbsp;<input type="radio" name="ans1" value="3"> Less Vacations<br/> <br/>');

  htp.p('<button type="submit"> Submit </button>');

  htp.p('</div>');

  htp.p ('</form>');

结束;

(如果代码格式不正确,我很抱歉)。但这是问题....当我单击提交按钮时,我有一个PL / SQL进程,旨在将在先前表单上输入的值插入到表中:

/ *'页面处理'部分中的PL / SQL进程代码* /

开始

插入用户意见

(电子邮件,问题,答案)

values(:v_email,:vc1,:v2);

结束;

但是在结果中,我总是看到插入了一个包含所有空值的记录....这意味着表单字段值在“页面处理”部分中不可用于PL / SQL进程。

有人可以帮我讲述如何在会话状态中引用表单字段值,以便我们可以在PL / SQL中使用它们。

提前致谢。

oracle plsql oracle-apex
1个回答
0
投票

使用下面的代码插入值:

begin

insert into user_opinions

(uemail,tquestion,uanswer)

values (:v_email, vc1, vc2) ;

end;
© www.soinside.com 2019 - 2024. All rights reserved.