PLSQL: Cómo recojer valores checkbox de un formulario HTML Abril 9
Cuando tenemos que recojer diversos valores de checkbox en un formulario HTML, normalmente nos encontramos con que el identificador del elemento HTML es el mismo, cosa que realiza una concatenación de valores por GET o POST con el mismo identificador. Algunos lenguajes de programación facilitan la recolección de dichos valores generando un array de valores (por ejemplo PHP). En el caso de PLSQL esta funcionalidad no está desarrollada por defecto, pero podemos escribir un código que nos realice la misma funcionalidad:
CREATE OR REPLACE PACKAGE pkg_checkboxes IS TYPE chkArray IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER; PROCEDURE display_form; PROCEDURE process_form(checkboxes IN VARCHAR2 DEFAULT NULL); PROCEDURE process_form(checkboxes IN chkArray); END pkg_checkboxes; CREATE OR REPLACE PACKAGE BODY pkg_checkboxes IS PROCEDURE display_form IS BEGIN htp.p('<html>'); htp.p('<head>'); htp.p('<title>Checkboxes Testing</title>'); htp.p('</head>'); htp.p('<body>'); htp.p('<form name="frmChk" method="post" action="cp_cpw_checkboxes.process_form">'); htp.p('<input type="checkbox" name="checkboxes" value="Japan" /> Japan '); htp.p('<input type="checkbox" name="checkboxes" value="China" /> China '); htp.p('<input type="checkbox" name="checkboxes" value="Russia" /> Russia '); htp.p('<input type="checkbox" name="checkboxes" value="USA" /> USA '); htp.p('<input type="checkbox" name="checkboxes" value="Canada" /> Canada '); htp.p(' '); htp.p('<input type="submit" value="Submit" />'); htp.p('</form>'); htp.p('</body>'); htp.p('</html>'); END display_form; PROCEDURE process_form(checkboxes IN VARCHAR2 DEFAULT NULL) IS BEGIN htp.p('You selected: '); htp.p(' <ul>'); IF checkboxes IS NOT NULL THEN htp.p(' <li>'||checkboxes||'</li> '); ELSE htp.p(' <li>No checkbox selected</li> '); END IF; htp.p('</ul> '); END process_form; PROCEDURE process_form(checkboxes IN chkArray) IS BEGIN htp.p('You selected: '); htp.p(' <ul>'); FOR i IN 1..checkboxes.COUNT LOOP htp.p(' <li>'||checkboxes(i)||'</li> '); END LOOP; htp.p('</ul> '); END process_form; END pkg_checkboxes;
(Código obtenido de http://www.joelennon.com/?q=pl-sql-checkboxes)
