• Viernes 26 de Abril de 2024, 21:28

Autor Tema:  Select's Con Variables  (Leído 2286 veces)

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Select's Con Variables
« en: Viernes 4 de Junio de 2004, 15:06 »
0
Hola a todos:

Tengo dos pequeños problemas.

Me gustaría montar un formulario con 60 select’s (unos pocos), y tienen que estar concatenados unos con otros de la siguiente forma:

Supongamos que queremos introducir estadísticas de PC’s, y todo ello esta vinculado con una BD en MySQL y PHP.

La estructura principal de los select sería por ejemplo:

Fecha  = introducimos fecha o la recuperamos de una BD.
Equipo1 = Select de equipos
Porcentaje1 = Select porcentaje equipo 1
TextoTotalPorcentaje0 = Suma de los porcentajes
Equipo2 = Select de equipo 2
Porcentaje2 = select porcentaje equipo 2

.....

Estructura para intentar explicarme mejor:


Fecha   equipo10   porcentaje10              equipo20   porcentaje20   equipo30   porcentaje30   TextoTotalPorcentaje0
Fecha   equipo11   porcentaje11   equipo21   porcentaje21   equipo31   porcentaje31   TextoTotalPorcentaje1
Fecha   equipo12   porcentaje12   equipo22   porcentaje22   equipo32   porcentaje32   TextoTotalPorcentaje2
..........
Fecha   equipo19   porcentaje19   equipo29   porcentaje29   equipo39   porcentaje39   TextoTotalPorcentaje9


Lo que me gustaría hacer es, que en un primer momento haga una consulta a la BD y coja los valores de que equipos hay registrados, y los porcentajes también introducidos en una tabla (5%, 10% .... 95%, 100%) . Hasta aquí, el como hacerlo lo tengo mas o menos claro, pero...

PROBLEMA 1:
Si en el porcentaje10 selecciono un 35% por ejemplo,,, en el porcentaje20 que solo me de las opciones desde el 65% para abajo (al igual que si en equipo 10 seleccionamos “Ordenador1”, en equipo20 no me diera la esa opción)...    Había pensado en hacer una nueva consulta a la BD y filtrarlo en PHP, pero me gustaría “ahorrar” peticiones innecesarias al servidor. Como se podría hacer?

PROBLEMA 2:
Como son tanta cantidad de Selects, y van a contener la misma información,,, habría alguna forma de reducir los 60 Scripts (aprox.) iniciales que se necesitarían (para rellenar cada uno de los Select, a (creo que 3), puesto que lo único que cambia sería “select1X”. Esa X podría ser una variable que se incremente y asi con esos 3 Scripts (mas o menos) poder gestionar todo??? (o los mínimos posibles!)

Me podéis echar una mano? Es que me he atrancado aquí y no se por donde tirar...

Un saludo y muchas gracias de antemano...


                  Slimer
-----------------------------------------------------
Quien desea aprender, pronto llegará a saber
-----------------------------------------------------

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Select's Con Variables
« Respuesta #1 en: Viernes 4 de Junio de 2004, 18:51 »
0
Oye tú no conocerás a fern1979 ? Estáis haciendo el mismo proyecto...   :whistling:

http://foros.solocodigo.com/index.php?showtopic=8597


Salu2,
Avalon

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Select's Con Variables
« Respuesta #2 en: Viernes 4 de Junio de 2004, 23:55 »
0
Hola Avalon:

Pues que yo sepa no, la verdad...

Te cuento exactamente para que necesito esto...

Yo trabajo en una empresa, y la verdad es que nos cargan un poquito de faena, y pense en hacer una herramienta para intentar "liberarnos" un poco del papeleo mas costoso., pero la verdad que lo que cuenta fern1979 se parece bastante a lo que yo necesito!

Por lo que veo, dominas bastante el tema; podrías hecharme una mano?

Un saludo

                     Slimer


P.D. He mirado el codigo que le pusiste a Fern1979 y la verdad es que yo lo hacia mas complicado!.
-----------------------------------------------------
Quien desea aprender, pronto llegará a saber
-----------------------------------------------------

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Select's Con Variables
« Respuesta #3 en: Lunes 7 de Junio de 2004, 17:54 »
0
Hola a todos:

He encontrado una forma de poner lo de los porcentajes (problema 1), pero aun no he podido hacer nada con el "PROBLEMA 2".

Alguien me podría dar alguna idea sobre el "PROBLEMA 2"  ???

P.D. (cuando tenga depuradito el tema 1 ya lo pongo...).

Un saludo

                         Slimer
-----------------------------------------------------
Quien desea aprender, pronto llegará a saber
-----------------------------------------------------

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Select's Con Variables
« Respuesta #4 en: Lunes 7 de Junio de 2004, 18:06 »
0
Si todos los selects van a llevar la misma información puedes hacerlo con un bucle

Código: Text
  1. for ($x = 1; $x <= 60; $x++) {
  2.    echo "<select name='select1_'".$x.">\n";
  3.    // Aquí va el código con el que añades las opciones del select1
  4.    echo "</select>\n";
  5.  
  6.    echo "<select name='select2_'".$x.">\n";
  7.    // Aquí va el código con el que añades las opciones del select2
  8.    echo "</select>\n";
  9.  
  10.    $x++;
  11. }
  12.  


Salu2,
Avalon

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Select's Con Variables
« Respuesta #5 en: Lunes 7 de Junio de 2004, 18:43 »
0
Hola Avalon:

El código en principio me sirve,,, pero se me ocurre el siguiente problema.

Imaginate: son 3 columnas (pongamos). La primera columna irá siempre lo mismo (que elijas el valor del 5 al 100%), pero la segunda, dependiendo de lo que hayas puesto en la primera,,, tomará un valor maximo u otro...

De momento, para una sola fila (me falta depurarlo un poco mas...) tengo el siguiente código:

Código: Text
  1.  
  2. <script language="JavaScript"> function tessto() {    
  3. var valor_por2 = new Array(); var porcentajes2 = new Array(); var k = 0; var valoracion = parseInt(document.formulario.select1[document.formulario.select1.selectedIndex].value); var restado = (100 - valoracion);
  4.   if ( valoracion != 100)   {
  5.     for (i=0; i<numero; i++){
  6.       if (valor_por[i] <= restado){
  7.           valor_por2[k] = valor_por[i]; //asignamos el valor
  8.           porcentajes2[k] = porcentajes[i]; //Asignamos el texto
  9.          k +=1;
  10.       }
  11.     }
  12.     var numero2 = porcentajes2.length;
  13.     document.formulario.select2.length = numero2;
  14.     for (k=0; k<numero2; k++){
  15.       document.formulario.select2.options[k].value = valor_por2[k];
  16.          document.formulario.select2.options[k].text = porcentajes2[k];
  17.     }
  18.   }
  19.  
  20.   if (valoracion == 100) {
  21.       numero2 = 1; var defval; var defpor = "-"; var j = 0;
  22.     document.formulario.select2.length = numero2;
  23.     document.formulario.select2.options[j].value = defval;
  24.       document.formulario.select2.options[j].text = defpor;  
  25.     document.formulario.texto.value = valoracion;
  26.   }
  27. }
  28. </script>
  29.  
  30.  

Lo estoy ejecutando con la opcion

Código: Text
  1.  
  2.   <select name="select1" onchange= "tessto()">
  3.  
  4.   </select>
  5.  
  6.  
  7.  

Repito,,, en la opcion 1,,, sin problemas,,, pero en la columna 2 que depende del valor que haya tomado su fila de la columna 1??? como digo en JavaScript que tome el valor de, por ejemplo el select15 en vez de el 14???

No se si me he explicado bien,,, si no terminas de captar el problema que me surge,,, pregunta y te mandaré capturas, etc...


Un saludo y gracias por tu atencion...

                           Slimer
-----------------------------------------------------
Quien desea aprender, pronto llegará a saber
-----------------------------------------------------

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Select's Con Variables
« Respuesta #6 en: Lunes 7 de Junio de 2004, 20:07 »
0
Le puedes pasar ese valor a la función tessto()

Código: Text
  1. for ($x = 1; $x <= 60; $x++) {
  2.    echo "<select name='select1_'".$x." onChange='tessto(".$x.")'>\n";
  3.    echo "</select>\n";
  4.    $x++;
  5. }
  6.  


Código: Text
  1. <script language="JavaScript">
  2.    function tessto(num) {
  3.       ...
  4.       ...
  5.       ...
  6.    }
  7. </script>
  8.  


Para acceder al select en concreto puedes hacerlo a través del array de elementos de un formulario y utilizando ese num para encontrar el select correspondiente (tendrás que hacer algunas operaciones)

Código: Text
  1. alert(document.formulario.elements[0].value)
  2.  

El índice 0 (elements[0]) se corresponderá con el primer select (fila 1 / columna 1)

Salu2,
Avalon

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Select's Con Variables
« Respuesta #7 en: Lunes 7 de Junio de 2004, 23:55 »
0
Hola:

Me ha surgido un problema.

He intentado implementar en el código lo que me has comentado... Si señor, tiene muy buena pinta, pero hay una cosa que no se hacer (y mis apuntes tampoco!):

Como puedo poner el valor de una variable dentro de un "comando"???

He probado poniendolo entre parentesis, corchetes, ... y no consigo que me tome el valor. Si asigno el valor a una variable, por ejemplo,,, perfecto, pero dentro de elementos.... no lo he conseguido.

Aqui te pongo un pequeño Script de test:

Código: Text
  1.  
  2. <script language="JavaScript"> function prueba(valu) {    
  3.  
  4. alert (valu);   // me da resultado 1.... OK
  5.  
  6. valoracion = parseInt(document.formulario.select(valu)[document.formulario.select(valu).selectedIndex].value);
  7.  
  8. alert (valoracion);  // no me dice nada ....  FALLO
  9.  
  10. }
  11. </script>
  12.  
  13.  
  14.  
Código: Text
  1.  
  2.   <form name="formulario">
  3.   <select name="select1" onchange= "prueba(1)">
  4.   </select>
  5.  
  6.  


Como siempre,,, Muy agradecido de antemano!!!!   :P
-----------------------------------------------------
Quien desea aprender, pronto llegará a saber
-----------------------------------------------------

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Select's Con Variables
« Respuesta #8 en: Martes 8 de Junio de 2004, 01:13 »
0
Eso no es posible, por eso te decía que utilizaras el array de elementos del formulario document.formulario.elements


De todas formas otro método que podrías utilizar es pasarle a la función tessto el objeto select en cuestión, sería así

Código: Text
  1. <select name="select1" onChange="tessto(this)">
  2.  


Código: Text
  1. function tessto(miSelect) {
  2.    alert(miSelect.name);
  3. }
  4.  


Aquí podrías utilizar miSelect.name para saber que select es el que se ha cambiado y miSelect.value para ver que valor se ha seleccionado.


La ventaja de hacerlo de la primera forma es que con algunas operaciones podrías saber exactamente que select, de que fila y de que columna se ha seleccionado, mientras que de esta segunda forma tendrás que hacerlo a partir del nombre del select miSelect.name


Salu2,
Avalon

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Select's Con Variables
« Respuesta #9 en: Martes 8 de Junio de 2004, 23:48 »
0
Hola:

Muchas gracias por la ayuda.... ahora voy a ver si puedo juntarlo todo,,, que la verdad no se por donde cogerlo!!!!!  :blink:

Muchas gracias por la información,,,, ya os contaré como me va el asunto....

un saludo


                Slimer
-----------------------------------------------------
Quien desea aprender, pronto llegará a saber
-----------------------------------------------------