Foros del Web » Programando para Internet » PHP »

Lista dependiente ¿Si en ASP funciona, porque en PHP no?

Estas en el tema de Lista dependiente ¿Si en ASP funciona, porque en PHP no? en el foro de PHP en Foros del Web. Saludos colegas... Estoy tratando de optimizar un script para PHP que tengo en ASP el cual carga una lista dependiente sin recargar la pagina, pero ...
  #1 (permalink)  
Antiguo 02/10/2006, 14:15
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Lista dependiente ¿Si en ASP funciona, porque en PHP no?

Saludos colegas...

Estoy tratando de optimizar un script para PHP que tengo en ASP el cual carga una lista dependiente sin recargar la pagina, pero no me carga la 2da. lista, A ver nos ayudamos entre todos y lo ponemos en el FAQ una vez lo terminemos, ya que no encontre ninguna solución definitiva o completa en PHP, para listado sin recarga ...

Ahora este es el codigo en PHP desde un script de ASP --->

La primera lista funciona y se trae los datos desde la BD...

<select name="escenario" size="1" onchange="Listar (document.forms.Listas.escenario[selectedIndex].value);">
<? $cuenta = 1; while($sqlrow = mssql_fetch_array($sql_esc)){ ?>
<option value="<?=$sqlrow['cod_esc']?>"<?if ($cuenta == 1) {?>selected<?}?>><?=$sqlrow['desc_esc']?></option>
<? $cuenta = $cuenta+1; }?>
</select>

En la segunda lista escribi el script directamente....

<select name="grupos" size="1">
<?
//Se instancia la clase de conexión y se inicia session para enviar error...
//include_once 'src_cnn_cont.php';
//$sql_cnn = new cnn();
//$cnn_sql = $sql_cnn->mssqlcnn();
?>
<SCRIPT LANGUAGE="Javascript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<?
//Realiza una consulta para listar grupos...
$sqlgrupo= ("SELECT GRUPOS.COD_GRUP, GRUPOS.DESC_GRUP FROM GRUPOS INNER JOIN rel_esc_grup ON GRUPOS.COD_GRUP = rel_esc_grup.COD_GRUP INNER JOIN ESCENARIO ON rel_esc_grup.COD_ESC = ESCENARIO.COD_ESC");
$sql_grupo=mssql_query($sqlgrupo, $cnn_sql);
$cuenta=0;
$marc='basura';
while($sqlrow = mssql_fetch_array($sql_grupo)) {
if ($marc !== $sqlrow['COD_GRUP']) {
//cambio de categoria, empiezo a contar en 0
$cuenta = 0;
$marc = $sqlrow['gru'];
//además tengo que crear un nuevo array para la categoría
?>
var opciones<?=$marc;?> = new Array();
<?
}
?>
opciones<?=$marc; ?>[<?=$cuenta; ?>]=new Tupla("<?=$sqlrow['DESC_GRUP']; ?>","<?=$sqlrow['COD_GRUP']; ?>");
<?
$cuenta = cuenta+1;
}
?>
<?
//Limpiamos objetos
//mssql_free_result($sql_grupo);
?>
var contador;
function Listar ( array ) {
// Compone la lista dependiente a partir del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++)
{

// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );
Listas.grupos.options[contador] = optionObj;

} // for
} // ComponerLista

function BorrarLista() {
Listas.grupos.length=0;
}

//Inicializamos
Listar (1);
</SCRIPT>

Como podran notar, creo que ambos tienen la misma carcateristicas pero en PHP no logro cargar la segunda lista, la primera si se carga...


Este es el original en ASP Este es el codigo original en ASP...

<form name="Listas"....

La primera lista tiene...

<select name="gerencia" size="1" tabindex="2" onchange="Listar (document.forms.Listas.gerencia[selectedIndex].value);">
<%
cuenta = 1
WHILE not rsgcia.EOF
%>
<option value="<%=rsgcia.Fields("centro_gestor")%>"<%IF cuenta=1 THEN%>selected<%END IF%>><%=rsgcia.Fields("descripcion")%></option>
<%
rsgcia.MoveNext
cuenta=cuenta+1
WEND
rsgcia.Close
%> </select>

La segunda lista tiene...
<!-- #INCLUDE FILE="lista_ofic.asp" -->

Este es el script escrito en lista_ofic......

<!-- #INCLUDE FILE="../../conexiones/conex_per_inf.asp" -->
<SCRIPT LANGUAGE="Javascript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<%
'Vamos a crear nuestros arrays de modelos desde ASP
'El primer if detecta un cambio en la categoría para crear un nuevo array en Javascript
sqlger = "SELECT centro_gestor [ 1, 5 ], centro_gestor AS gestor, descripcion FROM estructura_sap WHERE (clasificacion = 1 OR clasificacion = 2) ORDER BY gestor "
SET rsger = cnn.Execute(sqlger)
cuenta=0
marc="basura"
WHILE NOT rsger.EOF
IF marc<>rsger.Fields("centro_gestor") THEN
'cambio de categoria, empiezo a contar en 0
cuenta=0
marc=rsger.Fields("centro_gestor")
'además tengo que crear un nuevo array para la categoría
%>
var opciones<%=marc%> = new Array();
<%
END IF
%>
opciones<%=marc%>[<%=cuenta%>]=new Tupla("<%=rsger.Fields("descripcion")%>","<%=rsger .Fields("gestor")%>");
<%
cuenta=cuenta+1
rsger.MoveNext
WEND
%>
<%
'Limpiamos objetos
rsger.Close
set rsger=nothing
%>
var contador;
function Listar ( array ) {
// Compone la lista dependiente a partir del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++)
{

// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );
Listas.Oficina.options[contador] = optionObj;

} // for
} // ComponerLista

function BorrarLista() {
Listas.Oficina.length=0;
}

//Inicializamos
Listar (1);
-->
</SCRIPT>

Este script funciona....
__________________
Necesito aprender para compartir mi saber...

Última edición por Mulato; 03/10/2006 a las 07:40
  #2 (permalink)  
Antiguo 03/10/2006, 07:24
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Jeje... Si existe una lista dependiente que se descargue desde una BD, al menos me podria dar el post, porque ya busque en los FAQ y lo unico que encontre fueron listas que necesitan una recarga...
__________________
Necesito aprender para compartir mi saber...
  #3 (permalink)  
Antiguo 03/10/2006, 08:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por Mulato Ver Mensaje
Jeje... Si existe una lista dependiente que se descargue desde una BD, al menos me podria dar el post, porque ya busque en los FAQ y lo unico que encontre fueron listas que necesitan una recarga...
En PHP sólo sin más .. se necesita una recarga de página.

Si quieres otras alternativas te recomiendo ver la Misma FAQ que vistes pero el link que hace referencia al tema de "Remote Scripting" .. o busca soluciones en AJAX (tenemos un foro para tal fin).

Otras alternativas al respecto pasan por usar Javascript, con PHP sólo generarías ese javascript que luego funcionará en el cliente haciendo las combinaciones pertinentes.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 03/10/2006, 09:52
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Creo que no se entendio el tema...

Arriba coloque un script que en ASP funciona, lo modifique en PHP y coloque ambas fuentes, esto con el fin de ver que coloque mal dado a que soy principiante en PHP, no hay ninguna función en especial, e inclusive la carga de la primera lista funciona, creo que el problema esta en la segunda lista, pero no se, si es algun valor del script PHP, tal ves si nos animamos a revisar el codigo y lo hacemos funcionar hallaremos una solución final para este problema no..? Lo ponemos en el FAQ y todos felices como lombrices...!!!
__________________
Necesito aprender para compartir mi saber...
  #5 (permalink)  
Antiguo 03/10/2006, 10:06
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
De acuerdo revisa

Buenas, estuve aprendiendo un poco de listas dependientes, revisa este POST en el cual deje el codigo de como hacer las mimas con PHP y AJAX.
Cualquier cosa, consulta.
Saludos.
  #6 (permalink)  
Antiguo 03/10/2006, 10:18
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Gracias Spychacer, pero tu solución ya la revise, esta implicaria crear un iframe para simular la recarga pero no es lo que estoy buscando, lo que necesito es cargar la lista dependiente en la misma pag. de modo puro, con javascript...
__________________
Necesito aprender para compartir mi saber...
  #7 (permalink)  
Antiguo 03/10/2006, 10:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Mulato:

Creo no haz visto bien, ese codigo esta usando AJAX, y es una implementacion 100% en JavaScript.
  #8 (permalink)  
Antiguo 03/10/2006, 12:23
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Uhmmm..

Ok lo probare a ver como me va..!
__________________
Necesito aprender para compartir mi saber...
  #9 (permalink)  
Antiguo 03/10/2006, 13:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por Mulato Ver Mensaje
Creo que no se entendio el tema...

Arriba coloque un script que en ASP funciona, lo modifique en PHP y coloque ambas fuentes, esto con el fin de ver que coloque mal dado a que soy principiante en PHP, no hay ninguna función en especial, e inclusive la carga de la primera lista funciona, creo que el problema esta en la segunda lista, pero no se, si es algun valor del script PHP, tal ves si nos animamos a revisar el codigo y lo hacemos funcionar hallaremos una solución final para este problema no..? Lo ponemos en el FAQ y todos felices como lombrices...!!!
El problema es que tu asumes que "debemos conocer ASP" y más encima "javascript" y eso no es así. Por eso suele ser dificil que alguien venga a un foro de tal lenguaje a preguntar como adaptar otra cosa hecha en otros lenguajes.

Es más simple que veas la solución -real- y directa en PHP en este caso (o técnicas anexas)

Te indiqué donde puedes ver una excelente explicación de la técnica de "Remote Scripting" .. también que lo puedes ver en "Ajax", pero .. veo que omites mis comentarios al respecto y no te ha dado ni por ir a ver ese foro ni por ver el ink que te indiqué ..

No sé si tu has evaluado bien el tema de "listas dependientes" .. tanto en PHP como en ASP tienes como 3 técnicas:

1) Sólo con el lenguaje del lado del servidor que uses a base de recarga de página.

Ejemplo:
http://www.forosdelweb.com/showthrea...999#post664999

2) Hibrido lenguaje del lado del servidor + Javacript: En este caso se carga los "array's" o elementos javacript con todas las combinaciones posibles. En caso de mucho dato, puede ser que el "navegador" de turno que interprete ese código NO pueda con dicho proceso.

Ejemplos:
http://hvaldez.com.ar/javascript/combosDinamicos/
(Usa su própia classe de abstracción de BBDD pero es muy simple tal vez de adaptarlo para no usarla).

http://www.elguruprogramador.com.ar/...oad.asp?id=248
(Usa PostgreSQL .. pero es casi lo mismo que usar Msyql)

3) Usando técnica de "Remote Scripting" / "Ajax" .. En estos casos sólo se pide la "dupla" que se está trabando de las listas dependientes. Se pide el "dato" al servidor cuando se usa .. NO todo.

Ejemplos:
RS
http://www.ashleyit.com/rs/jsrs/select/php/select.php

AJAX
http://www.formatoweb.com.ar/ajax/se...pendientes.php

http://www.ingeniuz.com/wp-content/e...dojo_combobox/
(muy bueno, tiene hasta "autocomplete", según escribes, así acota las opciones)

(En "Ajax" como ahora está de moda abundan más ejemplos que en "javascript" sólo incluso).

Cada ténica según el caso tienes sus pró's y contras. Si tu sientes que con la técnica 2 .... va bien en tu Caso .. OK .. pero recuerda que no es la única.

En el foro se ha tratado muchas veces esa solución. Lamenteblemente no hay un "standar" para llamar a esto de los "combos anidados" .. "listas dependientes" .. o como le quieran llamar .. así que es dificil encontrar todos los temas relacionados.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 03/10/2006, 20:55
 
Fecha de Ingreso: mayo-2006
Mensajes: 120
Antigüedad: 18 años
Puntos: 3
Llegué medio tarde. Pero te recomiendo que pruebes la clase "baaselect" está tremenda y me sirvió mucho.
No te pongo el enlace porque no me deja, pero pone esa palabra en google y sale primera en PHPClasses.
Podes hacer conexion a la bd y te genera los select y todo el javascript necesario, de tantos select como necesites.

Saludos, espero que te sirva.
__________________
programación php
  #11 (permalink)  
Antiguo 03/10/2006, 21:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por drbit Ver Mensaje
Llegué medio tarde. Pero te recomiendo que pruebes la clase "baaselect" está tremenda y me sirvió mucho.
No te pongo el enlace porque no me deja, pero pone esa palabra en google y sale primera en PHPClasses.
Podes hacer conexion a la bd y te genera los select y todo el javascript necesario, de tantos select como necesites.

Saludos, espero que te sirva.
TIP:

Puedes poner un enlace .. sin www o sin http .. tu escribelo para que un "humano" lo interpretará.

El hecho de no dejar poner links "clickeables" a usuarios con X mensajes sólo en el foro no es más que para evitar SPAM en general (y que google o buscadoes así en ese caso empiece a indexar nuestras páginas con esos "links")

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 04/10/2006, 06:11
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Cluster...

Gracias por tu acotación, en realidad solo quiero que participemos en el script que coloque, pero para comprender el origen pensé colocar el código original, asumí, que debido a que ASP y PHP son scripting podrían funcionar de la misma manera y así hallar una solución fácil para todos, Créeme si te digo que he revisado cada una de las propuestas de las FAQ y ninguna la he logrado correr inclusive encontré una interesante en php.com.ve , probé también la del colega Spychaser y nanay, nanay.

Por ejemplo el script de Spychaser tiene en el option value registro[0] y registro[1], de donde vienen esos datos, de su BD..? porque a mi no me funcionan inclusive los cambie por los nombres de mis columnas y nada, así que quede pluf...!, tal vez es una variable declarada en alguna otra parte..? que captura los datos sustraídos del select..?

Por ese grado de frustración es que insisto en mi ejemplo, intentare de nuevo con tus sugerencias pero solo los que utilicen BD y que no sean recargables, aunque mi caso es SQLServer e Informix, la única diferencia que veo es en fetch row y el fetch array...

También voy a probar la clase sugerida por DRBIT la cual esta en phpclasses.org/browse/package/1637.html, Si por casualidad tienes un código de ejemplo DRBIT, seria interesante si compartieras su implementación...

El porque necesito implementarlo así... Porque en el mismo formulario el usuario agrega, modifica y elimina el registro por esa razón debe ser contra la BD y preferiblemente no recargable...
__________________
Necesito aprender para compartir mi saber...

Última edición por Mulato; 04/10/2006 a las 06:29
  #13 (permalink)  
Antiguo 04/10/2006, 06:54
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
De acuerdo seguimos

Buenas Mulato
En el script con registro[0] y registro[1] tomas los valores de las columnas de la tabla a la que le estes haciendo la consulta.
Para que funcione te aconsejo que revises:
1- conexion con tu base
2- relacion entre tablas o relacion entre campos
3- en select_dependientes_proceso.php la consulta para el segundo select hace un WHERE id_modelos='$valor' lo que indica que solo tomara los registros del primer select que contengan el valor igual al valor del id_modelos
4- revisa el value del select 01 y del select 02 ya que uno le pasa el dato al otro.
5- recuerda poner en el id="fila_1" y id="fila_2" en select_dependientes.php

Cualquier cosa, postea el codigo o el error y lo vamos viendo. Espero ayudarte.
Abrazo
  #14 (permalink)  
Antiguo 04/10/2006, 07:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por Mulato Ver Mensaje
Cluster...

Gracias por tu acotación, en realidad solo quiero que participemos en el script que coloque, pero para comprender el origen pensé colocar el código original, asumí, que debido a que ASP y PHP son scripting podrían funcionar de la misma manera y así hallar una solución fácil para todos, Créeme si te digo que he revisado cada una de las propuestas de las FAQ y ninguna la he logrado correr inclusive encontré una interesante en php.com.ve , probé también la del colega Spychaser y nanay, nanay.

Por ejemplo el script de Spychaser tiene en el option value registro[0] y registro[1], de donde vienen esos datos, de su BD..? porque a mi no me funcionan inclusive los cambie por los nombres de mis columnas y nada, así que quede pluf...!, tal vez es una variable declarada en alguna otra parte..? que captura los datos sustraídos del select..?

Por ese grado de frustración es que insisto en mi ejemplo, intentare de nuevo con tus sugerencias pero solo los que utilicen BD y que no sean recargables, aunque mi caso es SQLServer e Informix, la única diferencia que veo es en fetch row y el fetch array...

También voy a probar la clase sugerida por DRBIT la cual esta en phpclasses.org/browse/package/1637.html, Si por casualidad tienes un código de ejemplo DRBIT, seria interesante si compartieras su implementación...

El porque necesito implementarlo así... Porque en el mismo formulario el usuario agrega, modifica y elimina el registro por esa razón debe ser contra la BD y preferiblemente no recargable...
Si, .. PHP y ASP serán lenguajes de "scripting" pero aquí tienes un problema con Javascript más que nada.

Te recomiendo para evaluar el problema con tu "conversión" de código en ver el código HTML/javacript que generas. El que generas con ASP lo tiens claro y funcionando .. el de PHP puede ser que te hubieses dejado alguna "coma", "comilla" o algo ... Es cosa de comparar lo que generas en un lado y en otro y hacer los ajustes que corresponda. (Yo no tengo oportunidad de probar tu versión ASP y la PHP (y menos hacia MS SQL Server) .. así que no te puedo asesorár más sobre tú código expuesto).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 04/10/2006, 17:25
 
Fecha de Ingreso: mayo-2006
Mensajes: 120
Antigüedad: 18 años
Puntos: 3
Hola aquí te dejo un ejemplo de como lo usé yo y funcionó muy bien.

Código PHP:
<?
//conexion
$cnx mysql_connect("localhost","root","");
//nombre base de datos
mysql_select_db('sgi');
//clase de la cual te hablo
include 'baaSelect.php';
//creas un objeto
$sel = new baaSelect();


//addSelect(selectName, srcTable, idField, descripField [, fkField [, order [, defaultText]]] )

/*Cargamos al objeto los select. Los select se cargan
consultando a la base de datos. Por ejemplo el primero:
 se llama 'nombreSelect1', consulta a 'tabla1' para obtener
 'value=tabla1_clave' (es decir PrimaryKey), y va a mostrar
 entre <option value="tabla1_clave">tabla1_descripcion</option>. 
El '1' es para que se ordenen por descripcion. El "--no seleccionado--" 
es lo que se va a mostrar por defecto en el select.
Ahora en segundo select, agregamos el campo de 
tabla2_clave_foranea_de_tabla1 que vendría a hacer 
el que relaciona a las 2 tablas. Lo mismo con el 3ro que 
depende de lo que se elija en el segundo. Como dato, 
yo lo use con 4 niveles y funcionó perfecto */

$sel->addSelect('nombreSelect1''tabla1'
'tabla1_clave''tabla1_descripcion','',1,'--no seleccionado--');
$sel->addSelect('nombreSelect2''tabla2''tabla2_clave'
'tabla2_descripcion','tabla2_clave_foranea_de_tabla1',1,'--no seleccionado--');
$sel->addSelect('nombreSelect3''tabla3''tabla3_clave'
'tabla3_descripcion','tabla4_clave_foranea_tabla2',1,'--no seleccionado--');

/*Se termina con el HTML y llamando a dos metodos 
de la clase makeScript() en el head que escupe todo 
el JavaScript necesario para evitar recargar la página 
y makeSelect('nombreSelect') dentro de etiquetas form 
para crear los <select>*/
?>
<HTML>
<HEAD>

<title>Ejemplo</title>

<? $sel->makeScript() ?>

</HEAD>
<BODY>
<form method="get">
<strong>Tabla1: </strong><?$sel->makeSelect('nombreSelect1');?><br />
<strong>Tabla2: </strong><?$sel->makeSelect('nombreSelect2');?><br />
<strong>Tabla3: </strong><?$sel->makeSelect('nombreSelect3');?><br />
</form>
</BODY>
</HTML>
Muy piola no?
Espero que te sirva, a mi me salvo la vida.

Adios.
__________________
programación php
  #16 (permalink)  
Antiguo 05/10/2006, 12:33
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Caramba, mi amigo DRBIT dejame decirte que por fin logre solucionar mi problema y gracias a la clase sugerida... Aqui les coloco el codigo que realize para futuras consultas...

Pasos...

1.- Descargar la clase baaSelect desde phpclasses.org/browse/package/1637.html, primero hay que suscribirse..

2.- Instanciarla como lo coloco el pana drbit en mi caso yo lo realizo así...
<?//Se realiza la conexión
include_once '../cod/conexion.php';
include_once '../cod/baaselect.php';
$sel = new baaSelect(DB_MSSQL);
$sel->addSelect('lista1','tabla1','cod_tabla1','desc_ta bla1','',1,'Seleccione...');

//Ojo, yo cree una vista en MSSQL para realizar una consulta cruzada desde una tabla relacional, dado a que establezco una relación de muchos a muchos.. En vez de llamar a la tabla llamo a la vista...

$sel->addSelect('lista2','vis_relacional','cod_tabla2', 'desc_tabla2','cod_tabla1',1,'Seleccione...');
$sel->makeScript()
?>

Los <?$sel->makeSelect('lista1');?> y <?$sel->makeSelect('lista2');?> en donde ustedes quieran...

Hoy aprendi gracias a alguien que compartio su saber...
__________________
Necesito aprender para compartir mi saber...
  #17 (permalink)  
Antiguo 14/11/2006, 16:09
 
Fecha de Ingreso: octubre-2006
Ubicación: España
Mensajes: 37
Antigüedad: 17 años, 6 meses
Puntos: 0
Necesitaba algo parecido en mi pagina y estuve probando. Lo entiendo todo pero no termina de funcionarme. Descargue la libreria baaSelect.php y el código del archivo en el que lo iba a meter es este:

Código:
<? $sel->addSelect('Paises', 'vns_country', 'CountryNameS', 'CountryName','',1,'-- Seleccione --');
$sel->addSelect('Provincias', 'vns_state', 'SName', 'StateName','StateCountry', 1,'-- Seleccione --');

/*Se termina con el HTML y llamando a dos metodos 
de la clase makeScript() en el head que escupe todo 
el JavaScript necesario para evitar recargar la página 
y makeSelect('nombreSelect') dentro de etiquetas form 
para crear los <select>*/
?>
<HTML>
<HEAD>

<title>Ejemplo</title>

<? $sel->makeScript() ?>

</HEAD>
<BODY>
<form method="get">
<strong>Pais: </strong><? $sel->makeSelect('Paises'); ?> <br />
<strong>Estado: </strong><? $sel->makeSelect('Provincias'); ?> <br />
</form>
</BODY>
</HTML>
Está todo bien, inclusive el tema de los campos y la clave foranea. La cuestión es que cuando voy a visualizarlo me da un error Javascript diciendome que "ES is not defined" (Esto lo se por un depurador Javascript). ES es el codigo del Pais, en este caso España que tiene provincias asociadas, porque para probar unicamente puse tres provincias a España.

El codigo que genera el script y que se inserta en el head de la pagina de prueba es este

Código:
<SCRIPT language="JavaScript" type="text/javascript">
<!-- 

var currentPaises = 0 ;
var currentProvincias = 0 ;

var arrayProvinciasTXT = new Array();
var arrayProvinciasVAL = new Array();
arrayProvinciasTXT[0] = "";
arrayProvinciasVAL[0] = 0;
arrayProvinciasTXT[ES] = "CADIZ|HUELVA|SEVILLA";

arrayProvinciasVAL[ES] = "CA|HU|SE";



function baaSelectUpdateProvincias (form) {

               currentPaises = form.Paises.options[form.Paises.selectedIndex].value;

               while (form.Provincias.options.length) {
                    form.Provincias.options[0] = null;
               }
               var tmp = new String (arrayProvinciasTXT[currentPaises]);
               var arrayText = tmp.split("|");
               tmp = new String (arrayProvinciasVAL[currentPaises]);
               var arrayVals = tmp.split("|");

               var optionlist = form.Provincias.options;
               optionlist[0] = new Option();
               optionlist[0].value = 0;
               optionlist[0].text = "-- Seleccione --";
               if (arrayProvinciasTXT[currentPaises]) {
                   for (var i=0; i<arrayText.length; i++) {
                        optionlist[i+1]=new Option();
                        optionlist[i+1].value = arrayVals[i];
                        optionlist[i+1].text = arrayText[i];
                        if (currentProvincias == arrayVals[i])
                            optionlist[i+1].selected = true;
                   }
               }
               
}

// generated by baaSelect.php  -->
</SCRIPT>

Y concretamente aquí, donde falla:

Código:
arrayProvinciasTXT[ES] = "CADIZ|HUELVA|SEVILLA";
arrayProvinciasVAL[ES] = "CA|HU|SE";
Alguien puede ayudarme??
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:55.