Foros del Web » Creando para Internet » Diseño web »

Más problemas con los '<select>'

Estas en el tema de Más problemas con los '<select>' en el foro de Diseño web en Foros del Web. Hola de nuevo, colegas. Aquí sigo peleándome con los <select> El problema de que no funcionaba bien en firefox http://www.forosdelweb.com/f91/selec...irefox-610168/ conseguí solucionarlo gracias a la ...

  #1 (permalink)  
Antiguo 30/07/2008, 04:58
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Más problemas con los '<select>'

Hola de nuevo, colegas. Aquí sigo peleándome con los <select>

El problema de que no funcionaba bien en firefox http://www.forosdelweb.com/f91/selec...irefox-610168/ conseguí solucionarlo gracias a la inestimable ayuda de Martin (Imagen021) pero acaba de surgir otro más gordo, intentaré explicarme.

La base de datos tiene imágenes y cada una de ellas tiene asociado un pais y una comunidad o provincia. En la intranet el cliente puede actualizar los datos de cada imagen desde un listado. En ese listado deben aparecer los correspondientes <select> (pais y provincia) para cada imagen.

Para que pueda actualizarlas todas a la vez he tenido que usar código Javascript y además he tenido que ponerle a los <select> nombres acabados en una variable contador, tal que así:

<select name='pais_".$cont."'>
$cont++

Poniendo ese nombre a los <select> creo que no puedo usar la función que tengo de Javascript "ver_provincia()" ya que lo hace para uno, no para 200...

function ver_provincia(){
var pais
pais = document.f1.pais.selectedIndex

mis_provincias=eval('provincia_' + pais)
num_pro = mis_provincias.length
document.f1.sPro.length = num_pro
for(i=0;i<num_pro;i++){
document.f1.sPro.options[i].value=mis_provincias[i]
document.f1.sPro.options[i].text=mis_provincias[i]
}
}

Supongo que debería meter esta función dentro de un for o algo así pero no consigo que funcione.

¿Alguna idea?

Muchas gracias compadres. Un saludo.
  #2 (permalink)  
Antiguo 30/07/2008, 05:05
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Hola! Estoy intentando ayudarte pero sinceramente me pierdo. Ya leí 4 veces tu mensaje y no doy ni con lo que quieres hacer ni como imaginarme el funcionamiento de tu aplicación.

Por favor, detalla más el tema y lo miramos que debe ser una tontería.

Saludos!
Martin
  #3 (permalink)  
Antiguo 30/07/2008, 05:14
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Ya lo suponía, si es que no lo entiendo ni yo XD.

Es el mismo tema de ayer pero ampliado...

Mira este enlace y pulsa sobre alguna Galería, veras el listado de las imágenes. Alli aparece un <select> de paises y otro de comunidades para cada imagen.

El tema está en que según vaya seleccionando paises vayan cambiando las comunidades correspondientes y que se puedan enviar en el formulario para poder actualizarlas en la base de datos.

No se si me explico. De todas formas muchas gracias.

Saludos.
  #4 (permalink)  
Antiguo 30/07/2008, 05:22
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Lo que debes hacer es enviar el id que estas modificando a la funcion javascript para que la funcion que activa el segundo combo sepa cual es.

Primero arregla esto:
var provincia_2=new Array(<br />
<b>Warning</b>: Wrong parameter count for mysql_num_rows() in <b>/home/zonaivco/domains/tkdimages.es/public_html/galeria.php</b> on line <b>19</b><br />
);
var provincia_1=new Array(<br />
<b>Warning</b>: Wrong parameter count for mysql_num_rows() in <b>/home/zonaivco/domains/tkdimages.es/public_html/galeria.php</b> on line <b>19</b><br />
);

Que es un error en la consulta y luego lo volvemos a mirar.

Saludos!!
  #5 (permalink)  
Antiguo 30/07/2008, 05:44
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Vale, ya están arreglados los warnings.

Lo de enviarle el id...

Lo que le envio es el nombre, con un contador al final para distinguirlos.
Pero aunque enviara el id así:

<select id='pais_".$cont."'>

no se cómo podría recogerlo en la función ver_provincia() que es la que cambia el segundo combo, porque esta función recoge pais:

pais = document.f1.pais.selectedIndex

y actualiza provincias:

document.f1.sPro.options[i].value=mis_provincias[i]
document.f1.sPro.options[i].text=mis_provincias[i]


Como ya he dicho podría ser con un for pero ando un poco flojo de Javascript y no tengo ni idea de cómo sería.

Gracias por todo.

Saludos.
  #6 (permalink)  
Antiguo 30/07/2008, 05:53
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Hola, míralo bien para que veas que cambios debes hacer...

<script language='JavaScript' type='text/javascript'><!--
var provincia_2=new Array('Masachusets','Florida');
var provincia_1=new Array('Madrid','Andalucía');
function ver_provincia(cual,donde){

var dpto = document.getElementById(cual).selectedIndex;
mis_provincias=eval('provincia_' + dpto)
num_pro = mis_provincias.length
document.getElementById(donde).length = num_pro
for(i=0;i<num_pro;i++){
document.getElementById(donde).options[i].value=mis_provincias[i]
document.getElementById(donde).options[i].text=mis_provincias[i]
}
}
//--></script>
<form method='post' action='int_cam.php' name='f1'>

<select name='sDep1' id='sDep1' onChange='ver_provincia("sDep1","sPro1");'>";
<option>ninguno</option><option value='1'>España</option>
<option value='2'>EE.UU.</option>
</select>
<select name='sPro1' id='sPro1'></select>

<select name='sDep2' id='sDep2' onChange='ver_provincia("sDep2","sPro2");'>";
<option>ninguno</option><option value='1'>España</option>
<option value='2'>EE.UU.</option>
</select>
<select name='sPro2' id='sPro2'></select>
</form>

Míralo funcionando

Saludos!!
  #7 (permalink)  
Antiguo 30/07/2008, 05:59
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Ok, gracias.

Voy a probarlo a ver si tira, luego te comento.

Saludos.
  #8 (permalink)  
Antiguo 30/07/2008, 06:24
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Esto va pintando mejor pero sigue sin funcionar...

Cuando llamas a la función ver_provincia, las variables que le mandas las pones entre comillas dobles, pero yo tengo que concatenarlo con el contador y creo que por ahí anda el fallo.

Corrígeme si me equivoco pero creo que esto está mal:

onChange='ver_provincia('sDep_".$cont."', 'sPro_".$cont."')'

Ando muy perdido, pero parece que se ve una pequeña luz al final del tunel XDDD.

Gracias compadre. Saludos.
  #9 (permalink)  
Antiguo 30/07/2008, 06:28
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

onChange='ver_provincia('sDep_".$cont."', 'sPro_".$cont."')'

Está mal...

Deberia ser


onChange='ver_provincia("sDep_$cont>", "sPro_$cont")'

O algo así, según tu código. Y asegúrate que los id des los select sean sDep_numero y sPro_numero...

Ojo con las comillas!!! Si abres simples para inicio de funcion, debes usar dobles en valores y simples para cierre o escapar las comillas con una \ delante.

Saludos!!
  #10 (permalink)  
Antiguo 30/07/2008, 06:40
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

No funciona de ninguna manera.


Ni así:

onChange='ver_provincia("sDep_$cont","sPro_$cont") '


Ni así:

onChange='ver_provincia("sDep_'.$cont.'","sPro_'.$ cont.'")'


Ni así:

onChange="ver_provincia('sDep_".$cont."','sPro_".$ cont."')"


En los tres casos aparece el mismo error:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\xampp\htdocs\tkd\galeria.php on line 104

La única forma de que no aparezca el error es así:

onChange='ver_provincia('sDep_".$cont."', 'sPro_".$cont."')'

Pero así no funciona

¿Cual sería la forma correcta de escribirlo?
  #11 (permalink)  
Antiguo 30/07/2008, 06:42
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Imagino que esta linea viene de un echo anterior...

entonces postea toda la linea del echo completo así veremos donde está el problema de las comillas.

Saludos!!
  #12 (permalink)  
Antiguo 30/07/2008, 06:45
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

echo "<select name='sDep_".$cont."' id='sDep_".$cont."' onChange='ver_provincia('sDep_".$cont."', 'sPro_".$cont."')'>";
  #13 (permalink)  
Antiguo 30/07/2008, 06:49
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Para que por código fuente vea:

<select name='sDep_1' id='sDep_1' onChange='ver_provincia(\'sDep_1\', \'sPro_1\')'>

Hice esto:

Código PHP:
$cont=1;
echo 
"<select name='sDep_$cont' id='sDep_$cont' onChange='ver_provincia(\'sDep_$cont\', \'sPro_$cont\')'>"
Saludos!!

Vamos que saleeeeeee!
  #14 (permalink)  
Antiguo 30/07/2008, 06:59
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Pues siento defraudarte pero va a ser que no funciona.

Tal vez el fallo no está ahi. Voy a revisarlo a fondo a ver si doy con él.

Muchas gracias.

Saludos.
  #15 (permalink)  
Antiguo 30/07/2008, 08:51
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Déjame verlo funcionando
  #16 (permalink)  
Antiguo 30/07/2008, 12:34
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Tranquilo amigo mio. Ahora mismo no puedes verlo porque aún no funciona.

Estoy tratando de arreglarlo. Estoy seguro de que mañana estará listo. Ya avisaré.

Saludos.
  #17 (permalink)  
Antiguo 31/07/2008, 00:10
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Hola, te decía que me lo dejes ver colgado para ver que errores te da...
  #18 (permalink)  
Antiguo 31/07/2008, 00:14
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Todavía hay que arreglar algunas cosillas.

Mira lo que hace...

Pulsa aquí y luego le das a alguna galería.

Saludos.
  #19 (permalink)  
Antiguo 31/07/2008, 00:24
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

El problema lo tienes en los array que generas

Date cuenta de que si en todos los combos seleccionas España, funciona en todos con el código que yo te di. Ahora si escoges otro país da un error de que el array no existe...

var provincia_1=new Array('Madrid','Galicia','Andalucía','Valencia','M urcia','Castilla y León','Cataluña','País Vasco');
var provincia_6=new Array();
var provincia_4=new Array();
var provincia_7=new Array();
var provincia_5=new Array();
var provincia_0=new Array();
var provincia_8=new Array();

Saludos!!
  #20 (permalink)  
Antiguo 31/07/2008, 00:31
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Pero, te has fijado que, despues de seleccionar "España", seleccionas otros paises y con algunos no cambian las provincias y con otros si?

Por ejemplo, después de seleccionar España, selecciono Korea (o Francia) y siguen las provincias españolas, en cambio, si selecciono Finlandia ya no.

¿A qué se puede deber eso?
  #21 (permalink)  
Antiguo 31/07/2008, 00:35
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Primero vamos a corregir eso. Rellena todos los arrays aunque sea a mano con valores para probar que todos dejan seleccionar algo.

Te sigue mostrando las provincias de España porque el resto de países no tiene valores y ahi te está saltando el error de javascript...

Saludos!
  #22 (permalink)  
Antiguo 31/07/2008, 00:43
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Es que no lo hace bien. Te explico:

Korea tiene "codpais = 5".

Entonces cuando inserto desde la intranet una provincia para Korea no la asocia con este pais, sino que busca la asocia a la quinta posición de la base de datos (en este caso Italia)...

Ese es otro fallo que he de arreglar.
  #23 (permalink)  
Antiguo 31/07/2008, 00:45
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Ya tengo tu problema...

El tema está en que el numero del id de los select no debe ser un contador numérico que se autoincremente sino que debe ser el mismo número del array...

Ejemplo...

El select de España... debe llamarse sDep_1 (que coincide por casualidad)
El select de tu segundo país de la lista... debe llamarse sDep_X donde X es el mismo numero que el array provincias_X

Esto es lo que falla. No hay relacion entre el numero del id del select y el número del array que tiene sus provincias.

Saludos!!
  #24 (permalink)  
Antiguo 31/07/2008, 00:50
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Perdona mi ignorancia pero no se como poner la X. Jejeje.

Gracias por todo.

Saludos.
  #25 (permalink)  
Antiguo 31/07/2008, 01:00
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

jajaja la X es el numero que le asignas a cada uno de los select!

Lo que quise decirte es que la X del select debe ser la misma que la X del array de provincias!!
  #26 (permalink)  
Antiguo 31/07/2008, 01:49
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Mmmm....

Pa mi que no puedo.

Verás, los select se van enumerando según las imágenes:

imagen1 -> <select id='sDep_1'>...<select id='sPro_1'>
imagen2 -> <select id='sDep_2'>...<select id='sPro_2'>

Y el array de provincias va según los códigos de los paises:

var provincia_1=new Array('Castilla y León','Murcia','Valencia');
var provincia_4=new Array('pro3');
var provincia_5=new Array('pro1');

El 1 es España, el 4 es Francia, el 5 es Korea....

No se cómo podría asociarlos correctamente.

Muchas gracias.
  #27 (permalink)  
Antiguo 31/07/2008, 01:57
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Y por eso te da error!! el select de la provincia debe llamarse igual al de la imagen

Si sDep_1 = provincia_1 y así con el resto... el error que te sale, es que el select se va sumando de 1 en 1 y tus provincias no... entonces, el select 2 no tiene equivalente en el array_2 porque no existe...

Unifica ese valor y veras como funciona porque ya lo he probado.

Saludos!!
  #28 (permalink)  
Antiguo 31/07/2008, 02:16
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Cita:
Iniciado por imagen021 Ver Mensaje
Y por eso te da error!! el select de la provincia debe llamarse igual al de la imagen
Pero eso no es posible...

Mira te pongo una parte del código.



Código PHP:
<?php
            
include("conexion.php");
                echo 
"<script language='JavaScript' type='text/javascript'><!--\n";
                
$sql="SELECT * FROM pais ORDER BY codpais ASC";
                
$rsmysql_query($sql,$c);
                while (
$reg=mysql_fetch_array($rs)){
                    
$cd=$reg['codpais'];
                    echo 
"var provincia_".$cd."=new Array(";   //aqui se van formando los arrays..
//¿Cómo le meto aquí el valor del contador de los <select>????
                    
$sql1="SELECT comu FROM comu WHERE codpais=".$cd;
                    
$rs1mysql_query($sql1);
                    
$filas=mysql_num_rows($rs1);
                    for (
$i=0;$i<$filas;$i++) {
                        
$pro=mysql_result($rs1,$i,'comu');
                        if (
$i==0)
                            echo 
"'".$pro."'";
                        else
                            echo 
",'".$pro."'";
                    };
                    echo 
");\n";
                }
               echo 
"function ver_provincia(cual,donde){\n
                  var dpto
                  dpto = document.getElementById(cual).selectedIndex
            
                  mis_provincias=eval('provincia_' + dpto)
                  num_pro = mis_provincias.length
                  document.getElementById(donde).length = num_pro
                  
                  for(i=0;i<num_pro;i++){
                     document.getElementById(donde).options[i].value=mis_provincias[i]
                     document.getElementById(donde).options[i].text=mis_provincias[i]
                  }
                  }\n"
;
                echo 
"//--></script>";
?>
Esto es un lío....

Si no fuera porque hay gente como tú qué sería de los que son como yo, jejeje.

Saludos.
  #29 (permalink)  
Antiguo 31/07/2008, 02:39
Avatar de imagen021  
Fecha de Ingreso: julio-2008
Ubicación: A Coruña
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Más problemas con los '<select>'

Ríete pero el error lo tuvimos todo el tiempo frente a nuestras narices...

Esta línea dpto = document.getElementById(cual).selectedIndex

Debe ser = dpto = document.getElementById(cual).value

Porque el index, te toma el número de opción seleccionada pero no su valor y lo que nos interesa a nosotros es el valor!!!!!

Haz el cambio y prueba!!

Saludos!
  #30 (permalink)  
Antiguo 31/07/2008, 02:42
Avatar de frasko01  
Fecha de Ingreso: junio-2008
Mensajes: 200
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Más problemas con los '<select>'

Ole, ole y ole.

Me quedo sin palabras.

Muchisimas gracias.
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 17:03.