Tablas dependientes
Estoy diseñando una base de datos con access y de enlace estoy utilizando el coldfusion MX. He creado 2 list/menu dependiente. Osea en access he creado 2 tablas relacionadas, 1 de productos y la otra Categorías relacionada con esta y quiero que en la página haya 2 menu que se actualicen de la base de datos y sean dependientes.
He creado ya el código, pero tengo algún error y no lo veo. ¿Puedes echarle 1 vistazo?
Básicamente el problema es que las arrays me las crea bien, pero no me las coge los list/menu. A parte el Coldfusion studio 5, con el que trabajo el código me da los siguientes errores
134 The tag name: "arr2.length;i=i+1)" not found in currently active versions
143 No starting tag found for: "script", or it was closed too many times
Llevo días dándole vueltas y no encuentro el error. Ojalá puedas echarme una mano. Te pongo el código
<cfsetting enablecfoutputonly="yes">
<cfquery name="get_produ" datasource="NISC">
SELECT distinct Productos.IdProducto,
Productos.NombreProducto,
Categoría.IdCategoría,
Categoría.Tipo
FROM Productos LEFT JOIN Categoría ON Categoría.IdProducto=Productos.IdProducto
ORDER BY Productos.NombreProducto,Categoría.Tipo
</cfquery>
<!--- ============= Genero los arrays de Producto ============--->
<cfset producto="">
<cfloop query="get_produ">
<!--- Hago el Corte por Producto --->
<cfif get_produ.IdProducto neq producto>
<cfset producto=get_produ.IdProducto>
<cfif get_produ.CurrentRow EQ 1>
<!--- Pongo la inicializacion del array --->
<cfoutput>#chr(13)#b = new Array(</cfoutput>
<cfelse>
<cfoutput>,</cfoutput>
</cfif>
<!--- Agrego Producto --->
<cfoutput>"#get_produ.NombreProducto#,#get_produ.IdProducto#"</cfoutput>
</cfif>
</cfloop>
<cfoutput>);</cfoutput>
<!--- ============= Genero los arrays de Tipo ============--->
<cfset producto="">
<cfloop query="get_produ">
<!--- Hago el Corte por Producto --->
<cfif get_produ.IdProducto neq producto>
<cfif NOT get_produ.CurrentRow EQ 1>
<!--- Salvo que sea el primero, cierro al parentesis anterior --->
<cfoutput>);</cfoutput>
</cfif>
<cfset producto=get_produ.IdProducto>
<cfset corte=1>
<!--- Pongo la inicializacion del array --->
<cfoutput>#chr(13)#b_#producto# = new Array(</cfoutput>
</cfif>
<cfif corte EQ 1>
<cfset corte=0>
<cfelse>
<!--- Si no hay cambio de producto (sigo en comod) pongo la coma separando --->
<cfoutput>,</cfoutput>
</cfif>
<!--- Agrego la Provincia --->
<cfoutput>"#get_produ.tipo#,#get_produ.IdProducto#"</cfoutput>
</cfloop>
<cfoutput>);</cfoutput>
<cfsetting enablecfoutputonly="no">
function getprodu()
{
arr = "b" ;
inic="Seleccione";
llenaSelect( arr, fprodu, inic );
vaciaSelect( fcomod );
}
function getcomod()
{
arr = "b_" + fprodu.options[fprodu.selectedIndex].value;
inic= "Todos";
llenaSelect( arr, fcomod, inic );
}
function llenaSelect(arr,obj,inic) {
//
if( eval("typeof(" + arr + ")") == 'undefined' ) {
obj.options.length=0;
obj.options[0]=new Option(" ","");
return true;
}
arr2 = eval(arr);
obj.options.length=0;
obj.options[0]=new Option(inic,"0");
for (i=0;i<arr2.length;i=i+1)
{
subp=arr2.split(",");
obj.options[i+1]=new Option(subp[0] + " ",subp[1]);
}
if (navigator.appName != 'Netscape') {
if(document.all["ciu_bar"].style.visibility == "visible"){
obj.focus();
}
}else{
obj.focus();
}
return true;
}
function vaciaSelect(obj) {
obj.options.length=0;
obj.options[0]=new Option(" ","0");
obj.blur();
}
function formCheck(){
if(document.f.OPERACION.value == ""){
alert("Seleccione el tipo de operación");
document.f.OPERACION.focus();
return false;
}
if(fprodu.value == 0){
alert("Seleccione el producto");
fprodu.focus();
return false;
}
}
function ir(){
if (fprodu.value == 0){
alert("Seleccione el Producto");
fprodu.focus();
}else{
location.href="bus_avan_"+ fprodu.value +".cfm"
}
}
function ciu_bar(){
if (navigator.appName != 'Netscape')
{
if(fbarri.options.length > 1)
{
document.all["ciu_bar"].style.visibility = "visible";
}else{
document.all["ciu_bar"].style.visibility = "hidden";
}
}
}
</script>
<FORM METHOD="GET" action="" NAME="f">
<table border="0" cellspacing="0" cellpadding="3" width="100%">
<tr>
<TD VALIGN="middle" class="descripresult" nowrap colspan="1" width="1%"> </TD>
<TD VALIGN="middle" class="descripresult" nowrap colspan="1" width="16%">Producto</TD>
<TD COLSPAN="3">
<SELECT NAME="produ" onchange="getcomod()">
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
</SELECT>
</TD>
</TR>
<tr>
<TD VALIGN="middle" class="descripresult" colspan="1" nowrap width="1%"> </TD>
<TD VALIGN="middle" class="descripresult" colspan="1" nowrap width="16%">Tipo</TD>
<TD COLSPAN="3">
<SELECT NAME="tipo">
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
</SELECT>
</TD>
</TR>
</table>
</FORM>
<script language="javascript">
fprodu = document.f.produ;
ftipo = document.f.tipo;
getprodu();
fprodu.selectedIndex=1;
getcomod();
window.focus()
</script>
He creado ya el código, pero tengo algún error y no lo veo. ¿Puedes echarle 1 vistazo?
Básicamente el problema es que las arrays me las crea bien, pero no me las coge los list/menu. A parte el Coldfusion studio 5, con el que trabajo el código me da los siguientes errores
134 The tag name: "arr2.length;i=i+1)" not found in currently active versions
143 No starting tag found for: "script", or it was closed too many times
Llevo días dándole vueltas y no encuentro el error. Ojalá puedas echarme una mano. Te pongo el código
<cfsetting enablecfoutputonly="yes">
<cfquery name="get_produ" datasource="NISC">
SELECT distinct Productos.IdProducto,
Productos.NombreProducto,
Categoría.IdCategoría,
Categoría.Tipo
FROM Productos LEFT JOIN Categoría ON Categoría.IdProducto=Productos.IdProducto
ORDER BY Productos.NombreProducto,Categoría.Tipo
</cfquery>
<!--- ============= Genero los arrays de Producto ============--->
<cfset producto="">
<cfloop query="get_produ">
<!--- Hago el Corte por Producto --->
<cfif get_produ.IdProducto neq producto>
<cfset producto=get_produ.IdProducto>
<cfif get_produ.CurrentRow EQ 1>
<!--- Pongo la inicializacion del array --->
<cfoutput>#chr(13)#b = new Array(</cfoutput>
<cfelse>
<cfoutput>,</cfoutput>
</cfif>
<!--- Agrego Producto --->
<cfoutput>"#get_produ.NombreProducto#,#get_produ.IdProducto#"</cfoutput>
</cfif>
</cfloop>
<cfoutput>);</cfoutput>
<!--- ============= Genero los arrays de Tipo ============--->
<cfset producto="">
<cfloop query="get_produ">
<!--- Hago el Corte por Producto --->
<cfif get_produ.IdProducto neq producto>
<cfif NOT get_produ.CurrentRow EQ 1>
<!--- Salvo que sea el primero, cierro al parentesis anterior --->
<cfoutput>);</cfoutput>
</cfif>
<cfset producto=get_produ.IdProducto>
<cfset corte=1>
<!--- Pongo la inicializacion del array --->
<cfoutput>#chr(13)#b_#producto# = new Array(</cfoutput>
</cfif>
<cfif corte EQ 1>
<cfset corte=0>
<cfelse>
<!--- Si no hay cambio de producto (sigo en comod) pongo la coma separando --->
<cfoutput>,</cfoutput>
</cfif>
<!--- Agrego la Provincia --->
<cfoutput>"#get_produ.tipo#,#get_produ.IdProducto#"</cfoutput>
</cfloop>
<cfoutput>);</cfoutput>
<cfsetting enablecfoutputonly="no">
function getprodu()
{
arr = "b" ;
inic="Seleccione";
llenaSelect( arr, fprodu, inic );
vaciaSelect( fcomod );
}
function getcomod()
{
arr = "b_" + fprodu.options[fprodu.selectedIndex].value;
inic= "Todos";
llenaSelect( arr, fcomod, inic );
}
function llenaSelect(arr,obj,inic) {
//
if( eval("typeof(" + arr + ")") == 'undefined' ) {
obj.options.length=0;
obj.options[0]=new Option(" ","");
return true;
}
arr2 = eval(arr);
obj.options.length=0;
obj.options[0]=new Option(inic,"0");
for (i=0;i<arr2.length;i=i+1)
{
subp=arr2.split(",");
obj.options[i+1]=new Option(subp[0] + " ",subp[1]);
}
if (navigator.appName != 'Netscape') {
if(document.all["ciu_bar"].style.visibility == "visible"){
obj.focus();
}
}else{
obj.focus();
}
return true;
}
function vaciaSelect(obj) {
obj.options.length=0;
obj.options[0]=new Option(" ","0");
obj.blur();
}
function formCheck(){
if(document.f.OPERACION.value == ""){
alert("Seleccione el tipo de operación");
document.f.OPERACION.focus();
return false;
}
if(fprodu.value == 0){
alert("Seleccione el producto");
fprodu.focus();
return false;
}
}
function ir(){
if (fprodu.value == 0){
alert("Seleccione el Producto");
fprodu.focus();
}else{
location.href="bus_avan_"+ fprodu.value +".cfm"
}
}
function ciu_bar(){
if (navigator.appName != 'Netscape')
{
if(fbarri.options.length > 1)
{
document.all["ciu_bar"].style.visibility = "visible";
}else{
document.all["ciu_bar"].style.visibility = "hidden";
}
}
}
</script>
<FORM METHOD="GET" action="" NAME="f">
<table border="0" cellspacing="0" cellpadding="3" width="100%">
<tr>
<TD VALIGN="middle" class="descripresult" nowrap colspan="1" width="1%"> </TD>
<TD VALIGN="middle" class="descripresult" nowrap colspan="1" width="16%">Producto</TD>
<TD COLSPAN="3">
<SELECT NAME="produ" onchange="getcomod()">
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
</SELECT>
</TD>
</TR>
<tr>
<TD VALIGN="middle" class="descripresult" colspan="1" nowrap width="1%"> </TD>
<TD VALIGN="middle" class="descripresult" colspan="1" nowrap width="16%">Tipo</TD>
<TD COLSPAN="3">
<SELECT NAME="tipo">
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
<OPTION>aaaaaaaaaaaaaaaaaaaa</OPTION>
</SELECT>
</TD>
</TR>
</table>
</FORM>
<script language="javascript">
fprodu = document.f.produ;
ftipo = document.f.tipo;
getprodu();
fprodu.selectedIndex=1;
getcomod();
window.focus()
</script>
Respuesta de rescue74
1