Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Llenar un select a partir de la opcion elegida en otro select

Estas en el tema de Llenar un select a partir de la opcion elegida en otro select en el foro de Frameworks JS en Foros del Web. Hola a todos, aun sigo con el mismo sistema y al fin, puedo trabajar con datos reales (bueno es un servidor piloto) y pues si ...

  #1 (permalink)  
Antiguo 13/10/2010, 18:45
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Llenar un select a partir de la opcion elegida en otro select

Hola a todos, aun sigo con el mismo sistema y al fin, puedo trabajar con datos reales (bueno es un servidor piloto) y pues si cambian un poco las consultas a lo que yo tenia tan basico y es donde me surgio este primer problema.

Ya puedo llenar un select con el resultado de una consulta pero a partir de la opcion elegida de ese select se debe llenar otro y es donde no se como hacerlo, apenas me plantie el problema y tal vez encuentre una solucion solo pero la verdad no me queda mucho tiempo para terminar el sistema.

Debo decir, que la consulta que me llena el otro select ya la tengo, pero no se como pasarle el valor del primer select ya que es con lo que me devuelve el resultado correspondiente. Bueno lo dire, el primer select contiene publicaciones y cada publicacion cuenta con sus ediciones (segundo select) y es lo que no se como hacer. He pensando que desde javascript podria llenar el otro select y eso es facil pero la consulta que me devuelve el resultado correspondiente a la publicacion seleccionada donde la hago ya que esto es codigo php y no se si dentro de javascript se pueda ejecutar para que me devuelva los registros y luego meterlos 1 por 1 en el segundo select.

Espero me entiendan.

Tambien, ya que tengo que hacer pruebas remotamente, quiciera saber como configuro php para que acepte conexiones remotas y que desde el cliente remoto pueda escribir la url (que llevaria la ip del servidor) y muestre la pagina. Por desgracia solo he trabajado localmente y no se que tan dificil pueda ser. Como dato adicional, uso como suit el EasyPHP que trae el apache, php y mysql (esto por dos razones, es lo que uso para pruebas locales como he hecho siempre y por que no se como instalar solamente el apache, ademas de que no se de donde descargarlo pues busque en la pagina oficial y me aparecen proyectos sobre apache pero no se que onda con eso.
  #2 (permalink)  
Antiguo 13/10/2010, 23:16
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 8 meses
Puntos: 65
Respuesta: Llenar un select a partir de la opcion elegida en otro select

A ver por partes, primero para los selects, busca en san google que todo lo sabe, selects dependientes hay montones de ejemplos que sirven para lo que necesitas.. y más si ya tienes la consulta..

segundo, del acceso remoto, veamos, no es tan así el nombrecito, es simplemente que debes "subir" tus archivos de PHP a tu servidor, y con eso, con el dominio, por ejemplo: midominio.com/archivo.php accesas a tu archivo como tal.. no se si me explique.. pero así funciona, no debes configurar nada.. solo el que tu hosting tenga apache, y PHP y todo lo que necesitas instalado..

Espero haberme explicado, saludos y suerte! =)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #3 (permalink)  
Antiguo 14/10/2010, 09:49
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Buscare sobre lo primero gracias.

Sobre lo segundo, es necesario tener el servidor de base de datos con el servidor apache en la misma pc? Siento que son preguntas muy basicas pero no estoy seguro.

Por ejemplo para ahorita que estoy obteniendo las consultas reales (esto no lo explico) las pruebas las hago en el servidor piloto que tiene tanto el servidor apache, php y el servidor de base de datos oracle. Entonces la pregunta es si puedo tener el servidor de base de datos en una pc a parte, si se puede como seria la nueva cadena de conexion para que me reconozca que el servidor de base de datos esta en otro servidor (pc).

No estoy seguro si asi lo manejan en el trabajo ya que la mayoria de aplicaciones que utilizan son de escritorio y no web. Por ahora esto sale sobrando hasta que tenga la consulta mas complicada (la que me muestra los originales y sus datos), en ese momento y una vez probado que funciona correctamente desde la intranet, se procedera a poner la pagina web en el servidor que ellos me digan (que aun no se si es donde esta el servidor de base de datos que utilizan y no el de pruebas que estoy usando yo), quiero estar prevenido y saber que hacer cuando esto suceda y no falta mucho pues espero tener la consulta que falta para mañana y haber solucionado el problema con el select.

Gracias.
  #4 (permalink)  
Antiguo 14/10/2010, 11:13
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 8 meses
Puntos: 65
Respuesta: Llenar un select a partir de la opcion elegida en otro select

No, no es necesario tener el motor de la BD en la misma pc o en el mismo servidor, puedes hacer acceso remoto así como lo planeas.

Y de la conexión a Oracle, ve si este tema te puede orientar..

saludos! =)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #5 (permalink)  
Antiguo 14/10/2010, 12:37
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Busqueda Respuesta: Llenar un select a partir de la opcion elegida en otro select

OK, bueno seria ver tambien como realizar esa conexion remota entre el servidor apache y el servidor de base de datos (supongo en la cadena de conexion tendra que ir la ip del servidor apache aunque aun no se como codificar eso).

Sobre la configuracion de oracle seria verlo mas alrato que este en el trabajo y hacer pruebas supongo.

Sobre los selects dependienrtes estoy teniendo problemas ya que yo necesito meter codigo php dentro de javascript, te pondre un ejemplo que no esta completo y que tal vez no funcione pero que igual y se entiende mas que es lo que necesito.

Este codigo me crea el select con las publicaciones las cuales las obtengo de una consulta a la base de datos. Esto es sencillo pues este select se llena con todas las publicaciones. En el evento onchange llamo al metodo recedicion que es donde necesito que a partir del valor del index seleccionado me llene el otro select (esto tambien es facil si los datos del otro select no fueran de una consulta a una base de datos).
Código PHP:
<tr><td>Publicaci&oacute;n</td><td><select name='publicacion' onChange='RecEdicion(this)'>
                <
option value=''>Seleccione la publicaci&oacute;n</option>";
                for($i=0;$i<count($publicacion);$i++)
                    echo "
<option value='".$publicacion[$i]."'>".$publicacion[$i]."</option>";
                echo "
</select></td></tr
el problema viene con las ediciones ya que cada publicacion tiene sus propias ediciones y es lo que necesito mostrar en el otro select, este seria el codigo de ilustracion.

Código PHP:
<tr><td>Edici&oacute;n</td><td><select name='edicion'>
                <
option value=''>Seleccione la edici&oacute;n</option>
                </
select></td></tr
este el codigo javascript de la funcion que llena el select de las ediciones.
[javascript]
function RecEdicion(publicacion)
{
if(publicacion.options[publicacion.options.selectedindex].value="Valor del indice seleccionado")
{
//aqui es donde iria el codigo php necesario para no se, llenar variables javascript que despues utilizo para crear una nueva opcion para el select de las ediciones, el llenado seria con el resultado de la consulta correspondiente (esa consulta ya la tengo)
variable = new Option("text","value","defaultSelected","selected" );
document.menu.edicion.options[i]=variable;
}
}
[/javascript]

i seria una variable que aumentaria hasta i-1 donde en cada iteracion crea una nueva opcion con la siguiente edicion correspondiente a la publicacion seleccionada.

El problema es poder usar variables de php y asignarlas a variables javascript (en este caso seria un arreglo con las ediciones correspondientes)

Bien, ahora, se me ocurre otra cosa por hacer sin embargo tampoco encuentro la solucion completa:

Puedo en vez de querer hacer la consulta a la base de datos en el momento que se selecciona cierta publicacion, mejor guardar en arreglos la consulta para las ediciones de cada publicacion. Ahora ya teniendo todos los datos en arreglos de php, el problema seria meterlos en javascript para llenar el select con el arreglo correspondiente. Como daro adicional, se me ocurre hacer un arreglo bidimensional, donde la segunda dimension contendra un numero del 1 al n, en este arreglo meto todas las ediciones de todas las publicaciones y las distingo por el numero 1 para la primer publicacion, 2 para la segunda publicacion, 3 .... etc. Asi, este arreglo lo paso en la funcion javascript RecEdicion y solo me preocupo por leer el arreglo y agregar al select de las ediciones solo las ediciones que le correspondan.

Epero haberme dado a entender y decir, que todo esto es solo teoria, aun no lo pongo en practica (nisiquiera se si se pueda hacer realmente).
  #6 (permalink)  
Antiguo 15/10/2010, 12:11
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 8 meses
Puntos: 65
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Es completamente necesario que sea con JavaScript?????, porque digo hay muchas maneras una de ellas es con AJAX y te facilita la vida de manera impresionante.. porque no te metes en líos con la comunicación entre JavaScript y PHP, porque por ende AJAX ya tiene esa parte..

te traigo un ejemplo, lo he hecho con miles de cosas, este en especifico lo hace con estados y municipios:

Cargo el estado:
Código PHP:
Ver original
  1. <select disabled="disabled" name="cboestado" id="cboestado" onchange="cargaMunicipios(this.id);">
  2.                   <option value="0">Seleccione Estado</option>
  3.                 <?php $consulta = $db->listadatos(($db->consulta("*","catalogo_estados")));
  4.                 foreach($consulta as $datos){  
  5.                  echo "<option value='".$datos->Id_Estado."'>".htmlentities($datos->Nombre_Estado)."</option>";
  6.                 } ?>
  7.                 </select>

Y aparte dentro del código, pongo un select vacio, que será el que se carge con respecto al estado seleccionado..
Código HTML:
Ver original
  1. <select disabled="disabled" name="cbomunicipio" id="cbomunicipio">
  2.                     <option value='0'>Seleccione Estado</option>
  3.                 </select>

En el primer select uso unos metodos de conexión a la BD, y tanta cosa, pero es lo mismo que tu has hecho con las publicaciones, el caso de los municipios sería el de las ediciones, en fin, el evento que uso para cargar los municipios si ves, es en un OnChange, al que llamo cargamunicipios , y este es un metodo de AJAX.

Aqui tengo el Objeto AJAX, que se crea y después la función de AJAX que hace el trabajo de cargar los datos:

Código Javascript:
Ver original
  1. function nuevoAjax(){
  2.     /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
  3.     lo que se puede copiar tal como esta aqui */
  4.     var xmlhttp=false;
  5.     try{
  6.         // Creacion del objeto AJAX para navegadores no IE
  7.         xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  8.     }
  9.     catch(e){
  10.         try{
  11.             // Creacion del objet AJAX para IE
  12.             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  13.         }
  14.         catch(E){
  15.             if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
  16.         }
  17.     }
  18.     return xmlhttp;
  19. }
  20.  
  21. function cargaMunicipios(idSelectOrigen){
  22.     // Obtengo el select que el usuario modifico
  23.     var selectOrigen=document.getElementById(idSelectOrigen);
  24.     // Obtengo la opcion que el usuario selecciono
  25.     var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
  26.     // Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona estado..."
  27.     if(opcionSeleccionada==0)
  28.     {
  29.         var selectActual=null;
  30.         if(idSelectOrigen == "cboestado")
  31.             selectActual=document.getElementById("cbomunicipio");
  32.         selectActual.length=0;
  33.         var nuevaOpcion=document.createElement("option");
  34.         nuevaOpcion.value=0;
  35.         nuevaOpcion.innerHTML="Seleccione Estado";
  36.         selectActual.appendChild(nuevaOpcion); 
  37.         selectActual.disabled=true;
  38.     }
  39.     // Compruebo que el select modificado no sea el ultimo de la cadena
  40.     else{
  41.         if(idSelectOrigen == "cboestado")
  42.             var selectDestino=document.getElementById("cbomunicipio");
  43.         // Creo el nuevo objeto AJAX y envio al servidor la opcion seleccionada del select origen
  44.         var ajax=nuevoAjax();
  45.         ajax.open("GET", "../llena_municipios.php?opcion="+opcionSeleccionada+"&select="+idSelectOrigen, true);
  46.         ajax.onreadystatechange=function()
  47.         {
  48.             if (ajax.readyState==1)
  49.             {
  50.                 // Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
  51.                 selectDestino.length=0;
  52.                 var nuevaOpcion=document.createElement("option");
  53.                 nuevaOpcion.value=0;
  54.                 nuevaOpcion.innerHTML="Cargando...";
  55.                 selectDestino.appendChild(nuevaOpcion);
  56.                 selectDestino.disabled=true;   
  57.             }
  58.             if (ajax.readyState==4)
  59.             {
  60.                 selectDestino.parentNode.innerHTML=ajax.responseText;
  61.             }
  62.         }
  63.         ajax.send(null);
  64.     }
  65. }

Si te das cuenta la funcion cargaMunicipios, es la que llama a otro archivo ahora si en PHP, que será en donde hagas la consulta,
Código PHP:
Ver original
  1. llena_municipios.php?opcion="+opcionSeleccionada+"&select="+idSelectOrigen
nota que le envió el select en el que debe cargar y el estado seleccionado.. y en este último archivo genero la consulta:

Código PHP:
Ver original
  1. if($selectOrigen == "cboestado")
  2.     echo "<select name='cbomunicipio' id='cbomunicipio'>";
  3. echo '<option value="0">Seleccione Municipio</option>';
  4.     $consulta = $db->listadatos(($db->consulta("*","catalogo_municipio","Id_Estado=".$opcionSeleccionada)));
  5.     foreach($consulta as $datos){  
  6.          echo "<option value='".$datos->Id_Municipio."'>".htmlentities($datos->Nombre_Municipio)."</option>";
  7.     }
  8. echo "</select>";

Verifico que sea el combo de Estados el seleccionado y mando a imprimir XD (inclusive lo puedes hacer con el número de combos que necesites.. ) y ya.. solito funciona.. son varios archivos pero nada del otro mundo =)

suerte!, si tienes dudas ahí ando!! =)

PD: Me agarraste con tiempo para pegarte todo jajajajaja saludos! ;)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #7 (permalink)  
Antiguo 15/10/2010, 12:51
 
Fecha de Ingreso: septiembre-2010
Mensajes: 113
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Llenar un select a partir de la opcion elegida en otro select

http://www.forosdelweb.com/f68/zend-...ientes-847640/

espero te sirva, a mi me ayudaron mucho, aunque ya he aprendido un poco mas, el uso de los plugin de jquery son una maravilla. porque no tratas con alguno.


saludos
  #8 (permalink)  
Antiguo 15/10/2010, 13:11
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Gracias a los dos pero primero silvanha, no se ajax ademas de que no se como lo adecuo a lo mio puesto que primero tengo que entender tu codigo y despues modificar a lo mio e ir probando (es probable que surjan muchos errores), entonces no se si usarlo o no.

harryems, en parte podria usar jquery pues ya tengo un calendario hecho asi pero me puse a ver tu link y se me hace muy confuso, siento que sigo necesitando tiempo para entender y despues aplicarlo a lo mio y tiempo es lo que menos tengo asi que como le dije a silvanha, no se que hacer.

A parte, segui intentando esto a segun lo que he encontrado haciendolo con php y js solamente y este es el codigo pero me marca un error

Código HTML:
function RecEdicion()
{	
	var variable;
	
	var num;
	
	switch(document.menu.publicacion.selectedIndex)
	{		
		case 1: {
			//var edicion= new Array(
			<?php 	
				include ('modelo/conexion.php');
				$obj= new Original();
				$i=0;
				$Q=$obj->RecEd(0);
				$obj->CerrarConexion();
				while ( $row = oci_fetch_array($Q, OCI_RETURN_NULLS) )
				{		
					$edicion[]=$row[0];
					$i++;
				}
				oci_free_statement($Q);
								
				$toted=count($edicion);				
				//for($i=0;$edicion[$i];$i++)
				{								
					echo "edicion[0]='".$edicion[0]."';"."\n";
					/*if($i<$toted)
					echo",";*/
				}
			?>
			//);
		}		
		break;
	}
	window.alert(edicion[0]);
	/*opcion=new Option(edicion[0],edicion[0],"defaultSelected","selected");
	document.menu.edicion.options[0]=opcion;
	
	for(i=1;edicion[i];i++)
	{
		opcion=new Option(edicion[i],edicion[i],"","");
		document.menu.edicion.options[i]=opcion;
	}*/
	
	edicion=null;
}
</script> 
tuve que llamar al metodo que me devuelve las ediciones segun la publicacion seleccionada, llenar el arreglo edicion con las ediciones. Despues con el echo creo el arreglo javascript edicion al que le asigno en cada iteracion una edicion, sin embargo me marca error de que no existe el indice 3 (y es correcto por que esa publicacion tiene 3 ediciones por lo que el indice maximo es 2. Luego intento mostrar una sola variable y me marca que edicion no existe.

Seguire checando este codigo y me pondre a ver sus dos opciones y la que entienda mejor podria ser la que use aunque como dije, no se con que batalle mas, con lo mio o con lo de uds y pues el tiempo que me queda es poco, todavia falta hacer pruebas desde la intranet por mi y por los usuarios que utilizaran el sistema y tengo creo menos de 1 mes para eso, ademas de terminar la documentacion que ya llevo avanzada pero aun me falta todo lo que no he podido documentar por que no tengo el sistema completo.

Gracias a los dos de nuevo.
  #9 (permalink)  
Antiguo 15/10/2010, 13:38
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 8 meses
Puntos: 65
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Entiendo lo de los tiempos, y que por lo que se lee andas super estresado.. intenta relajarte.. bajo presión el estres no ayuda..

Ahora bien, de cual te resulte mejor implementar, depende de que tan disponible estes para entender el código, el ejemplo de harryems, esta bastante sencillo.. que se yo.. suerte!! ;)

Por otro lado, lo que intentas hacer esta demasiado a la medida, principalmente por que llenas los arreglos de acuerdo a la elección.. pero bueno es error de programación, toma atención además que es del lado del cliente.. si por alguna razón, el usuario se salta una u otra página probablemente no funcionara.. (solo un comentario)

suerte! ;)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #10 (permalink)  
Antiguo 15/10/2010, 16:06
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Cita:
Iniciado por silvanha Ver Mensaje
Entiendo lo de los tiempos, y que por lo que se lee andas super estresado.. intenta relajarte.. bajo presión el estres no ayuda..

Ahora bien, de cual te resulte mejor implementar, depende de que tan disponible estes para entender el código, el ejemplo de harryems, esta bastante sencillo.. que se yo.. suerte!! ;)

Por otro lado, lo que intentas hacer esta demasiado a la medida, principalmente por que llenas los arreglos de acuerdo a la elección.. pero bueno es error de programación, toma atención además que es del lado del cliente.. si por alguna razón, el usuario se salta una u otra página probablemente no funcionara.. (solo un comentario)

suerte! ;)
Segui intentando con el codigo que ya puse pero veo que si, tal como dices hay muchos problemas cuando cambias de option en la lista de las publicaciones (no siempre te muestra las ediciones).

Ahora la pregunta es, por donde empiezo para hacero usando jquery y ajax (creo tengo que usar los dos a fuerza). Creo necesito bajar un framework (zend frameword se llama creo) que mas necesito? Si esto no te toca responderlo a si silvanha que lo responda harryems.

Gracias.

Mientras tratare de sacar las consultas que me faltan (algo complicado ya que yo no hice la base de datos y tiene mas de 50 tablas relacionadas entre si), por desgracia aun tengo trabajo, solucionar esto del select es solo una parte.
  #11 (permalink)  
Antiguo 15/10/2010, 17:44
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 8 meses
Puntos: 65
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Bueno si se te complica menos con un framework, adelante, por mi parte y el ejemplo que te puse, no.. es con apenas unos 3 o 2 archivos.. no más.. cuestión de enfoques y de gustos, tampoco se como tengas organizado tu sitio..

No se con que más pueda ayudarte, mucha suerte!! y espero que termines pronto!

saludos
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #12 (permalink)  
Antiguo 15/10/2010, 18:14
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Hola
pues es solo cuestión de buscar bien en el foro (sugiero la búsqueda avanzada) pues este tema está ya bastante comentado......
incluso con jquery y ajax (cosa que incluso jquery ya tiene incluida)
así que, a buscar!!! (o puedes buscar en la web select dependientes con jquery)

ahora, que si no tienes tiempo para aprender, pues entonces en el primer select
en el evento onchange direccionalo de nuevo a la página, y cuando cargue de nuevo
la página haces la carga del otro select con la variable que acabo de llegar (el valor
que seleccionaron en el primer combo) de un modo más fácil

ej

Código PHP:
Ver original
  1. ....
  2. //primer select con redireccion a esta misma página
  3. <select name='combo1' onchange=submit() // o location.href='pagina.php';>
  4. <option value=1>1</value>
  5. </select>
  6. //otro select
  7. if(isset($_GET['combo1'])){
  8. $query = 'SELECT * FROM otratabla WHERE campo = '.$_GET['combo1'];
  9. <select name='combo2'>
  10. while(true)
  11. {echo '<option>'.$val.'</option>';}
  12. </select>
  13. }

o revisa esto
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 15/10/2010 a las 18:25
  #13 (permalink)  
Antiguo 16/10/2010, 17:43
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Cita:
Iniciado por mortiprogramador Ver Mensaje
Hola
pues es solo cuestión de buscar bien en el foro (sugiero la búsqueda avanzada) pues este tema está ya bastante comentado......
incluso con jquery y ajax (cosa que incluso jquery ya tiene incluida)
así que, a buscar!!! (o puedes buscar en la web select dependientes con jquery)

ahora, que si no tienes tiempo para aprender, pues entonces en el primer select
en el evento onchange direccionalo de nuevo a la página, y cuando cargue de nuevo
la página haces la carga del otro select con la variable que acabo de llegar (el valor
que seleccionaron en el primer combo) de un modo más fácil

ej

Código PHP:
Ver original
  1. ....
  2. //primer select con redireccion a esta misma página
  3. <select name='combo1' onchange=submit() // o location.href='pagina.php';>
  4. <option value=1>1</value>
  5. </select>
  6. //otro select
  7. if(isset($_GET['combo1'])){
  8. $query = 'SELECT * FROM otratabla WHERE campo = '.$_GET['combo1'];
  9. <select name='combo2'>
  10. while(true)
  11. {echo '<option>'.$val.'</option>';}
  12. </select>
  13. }

o revisa esto
saludos
Sobre tu codigo intente esto:

Código PHP:
echo "<tr><td>Publicaci&oacute;n</td><td><select id='publicacion' name='publicacion' onchange='submit()'>
                <option value=''>Seleccione la publicaci&oacute;n</option>"
;
                for(
$i=0;$i<count($publicacion);$i++)
                    echo 
"<option value='".$idpubli[$i]."'>".$publicacion[$i]."</option>";
                echo 
"</select></td></tr>
                <tr><td>Edici&oacute;n</td><td><select id='edicion' name='edicion'>
                <option value=''>Seleccione la edici&oacute;n</option>"
;
                if(isset(
$_GET['publicacion']))
                {
                    
$Q=$obj->RecEd($_GET['publicacion']);
                    while ( 
$row oci_fetch_array($QOCI_RETURN_NULLS) )
                    {            
                        echo 
"<option value='".$row[0]."'>".$row[1]."</option>";                
                    }
                    
oci_free_statement($Q);                    
                }
                echo 
"</select></td></tr> 
Por desgracia no funciona (ademas de que como uso frames me redirige al frame equivocado), ademas cada que redirige se pierde la publicacion seleccionada y necesito que quede seleccionada junto con la edicion ya que los dos se utilizan para la busqueda.

PD: solo puse una parte del codigo, por eso le faltan partes pero si las tiene ya que no me marca errores.
  #14 (permalink)  
Antiguo 16/10/2010, 18:09
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Llenar un select a partir de la opcion elegida en otro select

ha, bueno, pues usando iframes entonces tal vez al redireccionar
se pueda actualizar el iframe mandandole variables a ese iframe como tal

hace rato no uso iframes pero si mal no recuerdo... es algo así??
<frame url?='pagina.extension'></frame>
y entonces pondria
<frame url?='pagina.extension?valor=<?php echo $_GET['combo1'];?>'></frame>

por ej, bueno, adaptandolo a lo que tienes, y ya con eso
el valor llega al frame
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #15 (permalink)  
Antiguo 16/10/2010, 18:48
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Utilizando jquery logre lo que queria (aunque por ahora es sobre mi base de datos y no la del servidor piloto), solo que quiciera me explicaran la parte del codigo jquery ya que algunas cosas no las entiendo y pues tengo que documentar el codigo como parte del manual tecnico que tengo que entregar.

Primero las tablas que cree:

Código SQL:
Ver original
  1. CREATE TABLE pais
  2. (
  3. idpais INT NOT NULL PRIMARY KEY,
  4. pais VARCHAR(50) DEFAULT NULL
  5. )
  6. CREATE TABLE estado
  7. (
  8. idestado INT PRIMARY KEY,
  9. estado VARCHAR(50) DEFAULT NULL,
  10. pais INT NOT NULL
  11. )


Ahora el codigo jquery que llena el combo edicion (publicacion corresponde a pais y edicion coresponde a estado)
Código Javascript:
Ver original
  1. <script>
  2.  
  3.       $(document).ready(function(){
  4.  
  5.           $("select").change(function(){
  6.  
  7.               // Vector para saber cuál es el siguiente combo a llenar
  8.  
  9.               var combos = new Array();
  10.  
  11.               combos['publicacion'] = "edicion";
  12.  
  13.               //combos['estado'] = "ciudad";
  14.  
  15.               // Tomo el nombre del combo al que se le a dado el clic por ejemplo: país
  16.  
  17.               posicion = $(this).attr("name");
  18.  
  19.               // Tomo el valor de la opción seleccionada
  20.  
  21.               valor = $(this).val()      
  22.  
  23.               // Evaluó  que si es país y el valor es 0, vacié los combos de estado y ciudad
  24.  
  25.               if(posicion == 'publicacion' && valor==0){
  26.  
  27.                   $("#edicion").html('    <option value="0" selected="selected">----------------</option>')
  28.  
  29.                   //$("#ciudad").html('    <option value="0" selected="selected">----------------</option>')
  30.  
  31.               }else{
  32.  
  33.               /* En caso contrario agregado el letreo de cargando a el combo siguiente
  34.  
  35.               Ejemplo: Si seleccione país voy a tener que el siguiente según mi vector combos es: estado  por qué  combos [país] = estado
  36.  
  37.                   */
  38.  
  39.                   $("#"+combos[posicion]).html('<option selected="selected" value="0">Cargando...</option>')
  40.  
  41.                   /* Verificamos si el valor seleccionado es diferente de 0 y si el combo es diferente de ciudad, esto porque no tendría caso hacer la consulta a ciudad porque no existe un combo dependiente de este */
  42.  
  43.                   if(valor!="0" || posicion !='edicion'){
  44.  
  45.                   // Llamamos a pagina de combos.php donde ejecuto las consultas para llenar los combos
  46.  
  47.                       $.post("combo.php",{
  48.  
  49.                                           combo:$(this).attr("name"), // Nombre del combo
  50.  
  51.                                           id:$(this).val() // Valor seleccionado
  52.  
  53.                                           },function(data){
  54.  
  55.                                                           $("#"+combos[posicion]).html(data);    //Tomo el resultado de pagina e inserto los datos en el combo indicado                                                                              
  56.  
  57.                                                           })                                              
  58.  
  59.                   }
  60.  
  61.               }
  62.  
  63.           })      
  64.  
  65.       })
  66.  
  67.       </script>

Ahora el codigo de combo.php

Código PHP:
Ver original
  1. <?php
  2.     include('modelo/conexion.php');
  3.     $idcombo = $_POST["id"];
  4.     $obj= new Original();
  5.     $Q=$obj->RecEd($idcombo);  
  6.     while ( $row = oci_fetch_array($Q, OCI_RETURN_NULLS) )
  7.     {          
  8.         echo '<option value="'.$row[0].'">'.htmlentities($row[1]).'</option>';     
  9.     }
  10.     oci_free_statement($Q);  
  11. ?>

Espero con estos codigos les sea suficiente para explicarme y pues disculpen que les pida esto pero no es suficiente que medio entienda el codigo pues, como dije, lo voy a documentar ya que alguien mas podria llegar a tener que modificarlo en el futuro, ademas de que me serviria a mi para igual e irme metiendo de lleno al jquery y utilizarlo en vez de el javascript clasico.

Ahora, una ultima pregunta, con este poco codigo jquery podria llegar a hacer otras cosas puesto que siento que lo que hace jquery es manejar de otra manera lo mismo que maneja javascript (por lo que la programacion basica es la misma como el if utilizado en este codigo) y solo falta entender la sintaxis de como accesar a los elementos de una pagina (en vez de usar el getelementbyid o document.elemento.elemento.....)

Bueno gracias y espero su respuesta que terminaria (eso espero) con este problema.
  #16 (permalink)  
Antiguo 17/10/2010, 03:46
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Hola
bueno, en ese caso, que partes puntuales no entiendes?


Código Javascript:
Ver original
  1. <script>
  2.   //Función inicial apenas el documento este disponible
  3.       $(document).ready(function(){
  4.   //Evento de cambio de valor en el select
  5.           $("select").change(function(){
  6.  
  7.               // Vector para saber cuál es el siguiente combo a llenar
  8.  
  9.               var combos = new Array();
  10.  
  11.               combos['publicacion'] = "edicion";
  12.  
  13.               //combos['estado'] = "ciudad";
  14.  
  15.               // Tomo el nombre del combo al que se le a dado el clic por ejemplo: país
  16.  
  17.               posicion = $(this).attr("name");
  18.  
  19.               // Tomo el valor de la opción seleccionada
  20.  
  21.               valor = $(this).val()      
  22.  
  23.               // Evaluó  que si es país y el valor es 0, vacié los combos de estado y ciudad
  24.  
  25.               if(posicion == 'publicacion' && valor==0){
  26.   //se asigna valores al combo
  27.                   $("#edicion").html('    <option value="0" selected="selected">----------------</option>')
  28.  
  29.                   //$("#ciudad").html('    <option value="0" selected="selected">----------------</option>')
  30.  
  31.               }else{
  32.  
  33.               /* En caso contrario agregado el letreo de cargando a el combo siguiente
  34.  
  35.               Ejemplo: Si seleccione país voy a tener que el siguiente según mi vector combos es: estado  por qué  combos [país] = estado
  36.  
  37.                   */
  38.  
  39.                   $("#"+combos[posicion]).html('<option selected="selected" value="0">Cargando...</option>')
  40.  
  41.                   /* Verificamos si el valor seleccionado es diferente de 0 y si el combo es diferente de ciudad, esto porque no tendría caso hacer la consulta a ciudad porque no existe un combo dependiente de este */
  42.  
  43.                   if(valor!="0" || posicion !='edicion'){
  44.  
  45.                   // Llamamos a pagina de combos.php donde ejecuto las consultas para llenar los combos
  46.  
  47.                       $.post("combo.php",{
  48.  
  49.                                           combo:$(this).attr("name"), // Nombre del combo
  50.  
  51.                                           id:$(this).val() // Valor seleccionado
  52.  
  53.                                           },function(data){
  54.   //se reciben datos de combo.php
  55.                                                           $("#"+combos[posicion]).html(data);    //Tomo el resultado de pagina e inserto los datos en el combo indicado                                                                              
  56.  
  57.                                                           })                                              
  58.  
  59.                   }
  60.  
  61.               }
  62.  
  63.           })      
  64.  
  65.       })
  66.  
  67.       </script>

Ahora el codigo de combo.php

Código PHP:
Ver original
  1. <?php
  2. //incluye conexión
  3.     include('modelo/conexion.php');
  4. //recive id seleccionado
  5.     $idcombo = $_POST["id"];
  6.     $obj= new Original();
  7. //Consulta a la bd
  8.     $Q=$obj->RecEd($idcombo);    
  9. //se imprimen tantos options como datos se tengan en la bd
  10.     while ( $row = oci_fetch_array($Q, OCI_RETURN_NULLS) )
  11.     {            
  12.         echo '<option value="'.$row[0].'">'.htmlentities($row[1]).'</option>';        
  13.     }
  14.     oci_free_statement($Q);    
  15. ?>

Agregue solo algunos comentarios pues el resto ya
tienes comentarios bastante explicativos

si tienes otra duda puntual, entonces dispara
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #17 (permalink)  
Antiguo 17/10/2010, 08:17
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Pues lo que no entiendo bien es esto:

Código Javascript:
Ver original
  1. #
  2. $.post("combo.php",{
  3. #
  4.  
  5. #
  6.                                           combo:$(this).attr("name"), // Nombre del combo
  7. #
  8.  
  9. #
  10.                                           id:$(this).val() // Valor seleccionado
  11. #
  12.  
  13. #
  14.                                           },function(data){
  15. #
  16.   //se reciben datos de combo.php
  17. #
  18.                                                           $("#"+combos[posicion]).html(data);    //Tomo el resultado de pagina e inserto los datos en el combo indicado                                                                              
  19. #
  20.  
  21. #
  22.                                                           })

$.post que hace exactamente?
dentro parece llevar 2 parametros, el primero es donde llama por medio del post a combo.php, luego combo: y id: es como si fueran las variables pasadas por medio de post a partir de la opcion del primer combo seleccionado (tomando el nombre del combo y el valor seleccionado). Luego function(data), data de donde obtiene su valor (que vendria siendo los echo con los option que manda combo.php, siendo como un estilo de arreglo segun yo).

Bueno eso es lo unico que no he logrado poder explicar de una forma que pueda entender otro programador.
  #18 (permalink)  
Antiguo 17/10/2010, 08:33
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Llenar un select a partir de la opcion elegida en otro select

ham
bueno, pues es cuestión de revisar la documentación de jquery

te dejo esto

jQuery.post( url, [data], [callback], [type] )

url: (String) The URL of the page to load.
data (Optional): (Map) Key/value pairs that will be sent to the server.
callback (Optional): (Function) A function to be executed whenever the data is loaded successfully.
type (Optional): (String) Type of data to be returned to callback function: “xml”, “html”, “script”, “json”, “jsonp”, or “text”.


espero te sirva
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #19 (permalink)  
Antiguo 17/10/2010, 11:53
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Gracias, ya quedo un poco mas claro aunque el data dentro de function aun no lo entiendo, se que es un parametro pero no entiendo como es posible que contenga lo que devuelve la pagina combo.php (los echos que llenan el select).

Buscare en la documentacion de jquery (primero a encontrar la documentacion) para ver si me explica esto por que es lo unico que me falta entender.

Empiezo a documentar lo que he entendido.
  #20 (permalink)  
Antiguo 17/10/2010, 15:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Llenar un select a partir de la opcion elegida en otro select

bueno, centremonos en eso
Código Javascript:
Ver original
  1. $.post("combo.php"), //url
  2. { combo:$(this).attr("name"),id:$(this).val()}, //data
  3. function(data){$("#"+combos[posicion]).html(data);} //callback

ahora bien, lo que esta en la línea 2 (tantos datos como pongas allí)
son los parámetros que se le pasaran a la url (línea 1),
y todo esto es entendido por jquery como el "data" de envio,
así pues esto
function(data) , lo que esta en negrilla, son todos esos datos de la línea 2
sin embargo vemos que en esa misma línea se usa esto ".html(data)"
pero este data en azul, es lo que nos es devuelto desde combo.php (así pues tenemos data de envio y data de retorno)
espero eso te aclare un poco más
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #21 (permalink)  
Antiguo 17/10/2010, 21:31
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Cita:
Iniciado por mortiprogramador Ver Mensaje
bueno, centremonos en eso
Código Javascript:
Ver original
  1. $.post("combo.php"), //url
  2. { combo:$(this).attr("name"),id:$(this).val()}, //data
  3. function(data){$("#"+combos[posicion]).html(data);} //callback

ahora bien, lo que esta en la línea 2 (tantos datos como pongas allí)
son los parámetros que se le pasaran a la url (línea 1),
y todo esto es entendido por jquery como el "data" de envio,
así pues esto
function(data) , lo que esta en negrilla, son todos esos datos de la línea 2
sin embargo vemos que en esa misma línea se usa esto ".html(data)"
pero este data en azul, es lo que nos es devuelto desde combo.php (así pues tenemos data de envio y data de retorno)
espero eso te aclare un poco más
saludos
A ver entonces, el data dentro de function contiene los parametros combo e id? Y el function(data) en si que hace o como funciona? Es lo que no entiendo y presiento no entendere ya que es primero $.post que recibe esos 3 parametros por asi decirles aunque el primero son los parametros que recibira por medio del post, el function(data) que hace como segundo parametro, el tercer parametro .html(data) ese data de donde sale o como es que contiene lo que devuelve por medio de echos combo.php. Entiendo lo de encimita pero el interior no y tambien tendria que indicarlo en el manual tecnico puesto que podrian llegar a requerir hacer otra cosa con jquery (aunque creo que quien modifique el codigo deberia saber jquery), no se si eso se pueda especificar en un manual tecnico.

Presiento que no voy a salir de esto y pues si con otra explicacion que me des no entiendo lo dejo por la paz ya que no se me hace justo que te esmeres en explicarme y no te entienda, por lo mismo gracias y disculpa la molestia que yo siento te he ocasionado o te puedo ocasionar en otro momento por desgracia, esta vez no entiendo y me molesta pero pues que le hago si no entiendo. Es mas sabes que, ya que aqui quede, ya no me contestes y leelo bien, no te estoy ignorando ni nada, de nuevo te reitero mi agradecimiento tanto a ti como a silvanha y a harryems por darse el tiempo de ayudarme, que creanme me gustaria poder algun dia ayudarlos (que lo dudo).

Última edición por LOD_Fredy; 17/10/2010 a las 21:38
  #22 (permalink)  
Antiguo 17/10/2010, 22:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Tema movido desde PHP a AJAX
  #23 (permalink)  
Antiguo 18/10/2010, 23:36
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Hola
bueno, leyendo tu nuevo post, no se porque no dices que no entiendes cuando
en efecto lo has entendido bien

el primer data en efecto contiene tantos parámetros como envies (en este caso combo e id)

En cuanto a la function(data), lo que pasa es que toca especificarla así porque es sintaxis propia de jquery, y ese data va a tener la info que retorna combos.php, por eso cuando se usa el html dentro se vuelve a usar data,
es decir el data de function y de html es el mismo, y esto simplemente
(la función) recibe un parámetro, que son los datos retornados por el archivo php

Y claro, es mejor especificar que es deseable que la persona a modificar
los archivos sepa de jquery

Y pues no te afanes, aquí poco a poco iras saliendo del meollo

Y lo de tu ayuda, ya lo estas haciendo, yo no sabia tampoco muy bien
la sintaxis jquery (el funcionamiento) y gracias a tu duda pues encontre
la info que te pase, y he ido también entendiendo poco a poco sobre jquery,
así que tu también estas ayudando en este momento!!!!
ánimo y si tienes otra duda, dispara!
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #24 (permalink)  
Antiguo 19/10/2010, 09:31
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Gracias.
Edito: Ahora si, lo mas que he logrado y que segun yo esta bien pues funciona aunque en firefox no funciona tan bien como en ie (en firefox tienes que pasar el foco a otro elemento por medio del tab y en ie una vez esta vacio el campo puedes desplazarte a cualquiera de los que se habilitan. Aun asi, tiene una falla que no encuentro.

En la parte donde se checa que input es modificado (de original y orden), se supone que deshabilita el combo publicacion (todos los demas elementos del formulario que estan debajo de publicacion estan deshabilitados por default y se habilitan cuando se elije una publicacion y se deshabilitan cuando se selecciona el primer elemento del combo publicacion ya que todos estos se usan para una sola busqueda). El caso es que cuando se modifica original se deshabilita orden y publicacion sin embargo publicacion no se deshabilita, pero cuando se modifica orden si se deshabilita junto con original.

Código Javascript:
Ver original
  1. <script>
  2.       $(document).ready(function(){
  3.  
  4.           $("select").change(function(){
  5.  
  6.               // Vector para saber cuál es el siguiente combo a llenar
  7.  
  8.               var combos = new Array();
  9.  
  10.               combos['publicacion'] = "edicion";              
  11.  
  12.               // Tomo el nombre del combo al que se le a dado el clic por ejemplo: publicacion
  13.  
  14.               posicion = $(this).attr("name");
  15.  
  16.               // Tomo el valor de la opción seleccionada
  17.  
  18.               valor = $(this).val()      
  19.  
  20.               // Evaluó  que si es publicacion y el valor es 0, deshabilite los elementos del formulario que estan debajo del combo publicacion, que habilite los que estan arriba y vacie el combo edicion
  21.  
  22.               if(posicion == 'publicacion' && valor==0){
  23.                     $("#ord :input").removeAttr("disabled");
  24.                     $("#ori :input").removeAttr("disabled");
  25.                     $("#edicion").attr("disabled","disabled");                 
  26.                     $("#fecha").attr("disabled","disabled");
  27.                     $("#butfec").attr("disabled","disabled");
  28.                     $("#pag :input").attr("disabled","disabled");
  29.                     $("#edicion").html('<option value="" selected="selected">-----------</option>')                
  30.                     $("#pagina").attr("value","");
  31.                     $("#fecha").attr("value","");
  32.                    
  33.  
  34.               }else{
  35.                     //deshabilita los elementos del formulario que estan arriba del combo publicacion y habilita los que estan abajo
  36.                     $("#ori :input").attr("disabled","disabled");   //capa (div) que contiene el textbox y boton correspondiente a original
  37.                     $("#ord :input").attr("disabled","disabled");   //capa (div) que contiene el textbox y boton correspondiente a orden   
  38.                     $("#edicion").removeAttr("disabled");                  
  39.                     $("#fecha").removeAttr("disabled");
  40.                     $("#butfec").removeAttr("disabled");
  41.                     $("#pag :input").removeAttr("disabled");
  42.                    
  43.                     /* En caso contrario agregado el letreo de cargando al combo edicion  
  44.                     Ejemplo: Si selecciona publicacion se va a tener que el siguiente según el vector combos es: edicion por qué combos [publicacion] = edicion  
  45.                     */                 
  46.                     $("#"+combos[posicion]).html('<option selected="selected" value="0">Cargando...</option>')
  47.  
  48.                     /* Verificamos si el valor seleccionado es diferente de 0 y si el combo es diferente de edicion, esto porque no tendría caso hacer la consulta edicion porque no existe un combo dependiente de este */
  49.  
  50.                     if(valor!="0" || posicion !='edicion'){
  51.  
  52.                     // Llamamos a pagina de combos.php donde ejecuto las consultas para llenar el combo
  53.  
  54.                       $.post("combo.php",{
  55.                                           combo:$(this).attr("name"), // Nombre del combo  
  56.                                           id:$(this).val() // Valor seleccionado  
  57.                                           },function(data){  
  58.                                                           $("#"+combos[posicion]).html(data);    //Tomo el resultado de pagina e inserto los datos en el combo indicado                                                          
  59.                                                           })                                              
  60.                   }
  61.               }
  62.           })
  63.             $("input").change(function(){
  64.                
  65.               posicion = $(this).attr("name");
  66.  
  67.               valor = $(this).val();                      
  68.  
  69.                 if(posicion == "original" && valor!=""){                             
  70.                     $("#ord :input").attr("disabled","disabled");   //capa /div) que contiene el textbox y boton correspondiente a original                        
  71.                     $("#publicacion").attr("disabled","disabled");             
  72.                 }
  73.                 else{                        
  74.                     $("#ord :input").removeAttr("disabled");
  75.                     $("#publicacion").removeAttr("disabled");              
  76.                 }
  77.                 if(posicion == "orden" && valor!=""){                            
  78.                     $("#ori :input").attr("disabled","disabled");   //capa /div) que contiene el textbox y boton correspondiente a original                        
  79.                     $("#publicacion").attr("disabled","disabled");             
  80.                 }
  81.                 else{                        
  82.                     $("#ori :input").removeAttr("disabled");
  83.                     $("#publicacion").removeAttr("disabled");              
  84.                 }
  85.               })       
  86.       })  
  87. </script>

Espero me entiendan y me digan donde esta el error, yo ya me canse de ver el codigo y no ver errores (de hecho vi otros pero ese no).

Gracias de nuevo y si esto amerita ir en otro tema lo pongo.

Última edición por LOD_Fredy; 19/10/2010 a las 12:49
  #25 (permalink)  
Antiguo 19/10/2010, 13:05
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Llenar un select a partir de la opcion elegida en otro select

bueno, pregunto varias cosas

cual es el código actual de los selects?
esto esta montado en alguna url de internet para probar?

yo he probado algunos códigos de jquery
y pues me funciona bien en firefox,
así que pues no se me ocurre que sea,
pero pues pasate por la documentación
de jquery a ver si hablan algo al respecto

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #26 (permalink)  
Antiguo 20/10/2010, 15:55
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

morti, ya encontre el problema aunque no entiendo por que ocurre, solo me hago suposiciones. Ya vez que no utilizo el id de los elementos original ni orden, sino que los tengo en una capa con la cual intentaba deshabilitar al escribir en original la orden y la publicacion o al escribir la orden el original y publicacion. Bueno, lo que hice fue poner sus eventos onchage separados y asi si funciono (aunque use un poco mas de codigo).

Ahora, casi tengo todo listo con los ajustes que queria hacer (menos 1 pero me da flojera pensar como hacerlo), ya funciona la busqueda de los originales por todos sus filtros por lo que solo quedan detalles de diseño y seguridad. Uno de estos detalles es que la pagina funciona "bien" en firefox (esto a excepcion de que la habilitacion o deshabilitacion de elementos requiere de pasar el foco a otro elemento por medio del tabulador. Otro y que si me preocupa es que en explorer no me redimensiona las imagenes, sobre esto dejo el pedazo de codigo que he creado para dicha funcion:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.         function redimensionar(){
  3.         var ancho= $("#imagen").width();
  4.         var alto= $("#imagen").height();
  5.         if(ancho>990 && ancho>alto)
  6.             $("#imagen").attr("width","990px");
  7.         else if(ancho>990 && ancho<alto)
  8.             $("#imagen").attr("height","560px");
  9.             else
  10.                 if(alto>560 && ancho<alto)
  11.                     $("#imagen").attr("height","560px");
  12.                 else
  13.                     if(alto>560 && ancho>alto)
  14.                     $("#imagen").attr("width","990px");
  15.         if(ancho>990 || alto>560 && ancho==alto)
  16.             $("#imagen").attr("height","560px");
  17.         }      
  18.     redimensionar();
  19.     });

En si el codigo no funciona como quisiera ya que la idea es que la imagen se redimensione a un tamaño que quepa en la ventana del navegador, sin embargo como el ancho y alto de una imagen pueden ser algo grandes pero mayores tanto al ancho y alto que soporta la ventana, puede ocurrir (ya me paso) que quede ajustado al ancho pero no al alto de la ventana o viceversa. Ademas ese no es todo el problema, por desgracia no me realiza la modificacion del ancho y alto al momento de cargar la pagina, se tiene que recargar para entonces si ver la imagen ajustada (en firefox claro por que como dije, en explorer no funciona), entonces no se que hacer para solucionar estos dos inconvenientes, sobre todo el que no se redimensione la imagen en explorer que es lo que los usuarios utilizan mas.

Gracias.

PD: esta chido el jquery XD.

PD 2: aunque no va aqui, si ya tengo el apache instalado que mas necesito para poder conectarme al servidor desde la intranet, por ahi he leido que se necesita abrir el puerto que utilice el apache en el cortafuegos, la pregunta es, lo abro en la maquina cliente o en el servidor? Bueno porfas ayudenme si es que no es algo tan complicado.

Última edición por LOD_Fredy; 20/10/2010 a las 16:16
  #27 (permalink)  
Antiguo 20/10/2010, 16:43
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Llenar un select a partir de la opcion elegida en otro select

bueno, pues esta molesto eso, más porque jquery esta pensado
teoricamente para funcionar en los n navegadores....
pregunto de nuevo, esta en web o solo en intranet como mencionas?

y pues de nuevo, revisa en la página de jquery a ver si hay plugins
para los demás navegadores (generalmente tienen) porque si no,
entonces te tocaría hacer algo de código javascript para revisar
cual es el explorador y eso (también por php puedes hacerlo)

ehm, en cuanto a lo que dices del servidor de la intranet,
pues solo necesitarias ya sea el nombre del servidor o la ip,
y entrar por el navegador

si logras acceder pues listo, ya esta, si no, entonces a revisar
varias cosas

configuración de firewall en el servidor
puertos (el que usa apache por defecto es el 80)
ips (que la de tu equipo no este restringida)

si con todo esto no puedes ver la interfaz
web del sitio desde tu equipo intentando entrar
al servidor, pero en el servidor propio si se ve,
entonces revisaria el archivo httpd.conf para dar
permisos de acceso ya sea por ips o para toda la red

te sugiero te pases por el foro de configuración de apache para
que veas más a fondo los modos de configuración del apache.conf
(o que busques por la web) y lo importante es que cuando hagas
algún cambio en ese archivo, intentes de nuevo entrar desde tu
equipo (y pues a veces se dan dependiendo del paquete instalado,
que necesites bajar el servicio de apache y volver a iniciarlo)

prueba y comenta
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #28 (permalink)  
Antiguo 20/10/2010, 18:36
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Cita:
y pues de nuevo, revisa en la página de jquery a ver si hay plugins
para los demás navegadores (generalmente tienen) porque si no,
entonces te tocaría hacer algo de código javascript para revisar
cual es el explorador y eso (también por php puedes hacerlo)
solo funciona localmente (nisiquiera en intranet, para mi intranet es dentro de una red interna).

Lo que puse citado no lo entiendo, como que hacer codigo javascript para revisar cual es el navegador? cual es el navegador que que? Osea que busque hacer que funcione el codigo jquery en explorer o como?

Ya le hice cambios y creo ya redimensiona automaticamente (en vez de mandar llamar nada mas a la funcion que redimensiona, mejor el codigo lo meti en el metodo load de la imagen, de esa forma ha funcionado, sin embargo sigue fallando en ie.

Buscare lo del plugin aunque no deberia necesitarlo, por que por ejemplo lo de deshabilitar funciona en firefox e ie, tal vez sea algun problema parecido al que tuve con lo de habilitar deshabilitar, lo malo es que no me marca errores (o bueno, en ie no se como verlos).

Sobre ver el foro de configuracion de apache no se cual sea, solo encuentro un foro de apache y pues voy a preguntar a ver si alguien me dice los pasos a seguir despues de instalar apache (en mi caso easyphp que incluye apache, php y mysql). Ya he buscado y nada de lo que he visto me ha servido para poder desde la laptop ver la pagina sin necesidad de hacerlo localmente (lo que por consiguiente hace que tenga que conectarme remotamente que si tengo que hacer para modificar los archivos de la pagina).
  #29 (permalink)  
Antiguo 21/10/2010, 05:38
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Hola
Respondo por partes

solo funciona localmente (nisiquiera en intranet, para mi intranet es dentro de una red interna).

con localmente, quieres decir en el servidor solamente?


Lo que puse citado no lo entiendo, como que hacer codigo javascript para revisar cual es el navegador? cual es el navegador que que? Osea que busque hacer que funcione el codigo jquery en explorer o como?

me refería a detectar el navegador, algo así

Código Javascript:
Ver original
  1. document.write(navigator.appName + " " + navigator.appVersion);


Ya le hice cambios y creo ya redimensiona automaticamente (en vez de mandar llamar nada mas a la funcion que redimensiona, mejor el codigo lo meti en el metodo load de la imagen, de esa forma ha funcionado, sin embargo sigue fallando en ie.

Buscare lo del plugin aunque no deberia necesitarlo, por que por ejemplo lo de deshabilitar funciona en firefox e ie, tal vez sea algun problema parecido al que tuve con lo de habilitar deshabilitar, lo malo es que no me marca errores (o bueno, en ie no se como verlos).

bueno, pues en ese caso tal vez como dices no necesites plugin, pero si necesites hacer llamados a las funciones de otro modo, imagino que tal vez en los foros javascript o aquí en los de ajax te puedan dar una mano, o tal vez jquery tenga foro o comunidad propia donde se puedan hacer estas preguntas

Sobre ver el foro de configuracion de apache no se cual sea, solo encuentro un foro de apache y pues voy a preguntar a ver si alguien me dice los pasos a seguir despues de instalar apache (en mi caso easyphp que incluye apache, php y mysql). Ya he buscado y nada de lo que he visto me ha servido para poder desde la laptop ver la pagina sin necesidad de hacerlo localmente (lo que por consiguiente hace que tenga que conectarme remotamente que si tengo que hacer para modificar los archivos de la pagina).

bueno, tal vez en este foro haya algo

pero es básicamente entrar al archivo httpd.conf y revisar donde esta
tal vez deny all y cambiarlo por allow all (bueno, esa es la idea), si no
encuentras nada en esos foros, busca en internet sobre configuración
archivo httpd.conf
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #30 (permalink)  
Antiguo 21/10/2010, 17:09
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Si al decir localmente quiere decir que solo se puede accesar a la pagina en el mismo servidor.

He modificado cosas del archivo de confiruacion de apache que me dices y sigue sin funcionar. Lo que no he probado es lo del firewall pero no se que es exactamente lo que debo hacer, abrir el puerto 80?

Sobre el codigo que falla en ie ahora es mayor, tampoco funciona el codigo de los selects dependientes (razon del por que abri este tema), todo funciona perfecto en ie pero en firefox y me gustaria poder ver la pagina desde mi laptop para comprobar con este navegador, usar otros ademas de ie y ff, etc, de ahi el que quiera poder ver la pagina desde otras pcs de la red (incluida la mia y la de mi jefa).

Abri un nuevo tema donde hablo de mis problemas con ie y jquery http://www.forosdelweb.com/f77/probl...jquery-852885/

Etiquetas: ajax, llenar, opcion, partir, select
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 10:24.