Foros del Web » Programando para Internet » Javascript »

Llamar datos dinamicos en un input

Estas en el tema de Llamar datos dinamicos en un input en el foro de Javascript en Foros del Web. Hola a todos, tengo una gran duda y quisiera que me ayudaran por favor, No tengo idea de cómo se hace. Tengo dos tablas, en ...
  #1 (permalink)  
Antiguo 26/12/2017, 15:18
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 451
Antigüedad: 16 años, 2 meses
Puntos: 2
Llamar datos dinamicos en un input

Hola a todos, tengo una gran duda y quisiera que me ayudaran por favor, No tengo idea de cómo se hace. Tengo dos tablas, en una tengo una serie de numeros y un promedio al final, es una tabla de notas estudiantes. En la otra tabla tengo los logros. Quiero que por medio de una condicional, es decir, que segun la nota del estudiante, al darle el promedio final el sistema me arroje inmediatamente en ese campo vacio el logro que le pertenece segun su nota. Me explico mejor, por filas se guardan 4 logros que van segun el resultado del estudiantes, logro1, posee un logo positivo, el logro2 posee un logo negativo, el logro3 prosee un logro intermedio y el logro4 posee un logro superior. Entonces lo que quiero es que a la hora de ingresarle las notas, el sistema me llene el campo vacío que llama a la tabla logro, segun su nota uno de los 4 logros, que despues al darle guardar me guarde dicho logro en la tabla notas. Espero haberme explicado bien.

Bendiciones y agradezco cualquier ayudita o indicio que me puedan dar. Feliz Navidad a todos
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #2 (permalink)  
Antiguo 27/12/2017, 12:17
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 9 meses
Puntos: 1146
Respuesta: Llamar datos dinamicos en un input

eso lo puedes lograr con Vue, Angular o React los 3 son muy buenos aunque si tiene su curva de aprendizaje.

Si nunca los has manejado te recomiendo empezar con Vue que hasta el mismisimo google lo utiliza en su buscador., a mi ver es el que tiene la curva de aprendizaje mas corta.

Suerte!
  #3 (permalink)  
Antiguo 27/12/2017, 15:22
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Llamar datos dinamicos en un input

Por lo que explicas, solo te bastarían algunas condiciones para realizar las asignaciones respectivas. Solo haría falta ver cómo lo estás haciendo en código para indicarte exactamente qué añadir y en dónde.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 27/12/2017, 21:02
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Llamar datos dinamicos en un input

Según veo no es necesario usar js, simplemente cargar completamente la página.

Pero acá un posible js para lo que pides, y dime que te parece...


Código Javascript:
Ver original
  1. var achvs = [[3, "Logro 1"],[5, "Logro 2"], [7, "Logro 3"], "Logro 4"]; //el numerito que acompaña es el valor max. del rango del logro.
  2.  
  3. function achievements(id, id2){
  4. var table = document.getElementById(id);
  5. var table2 = document.getElementById(id2);
  6.  
  7. var rows = table.getElementsByTagName("tr");
  8.  
  9.     for(var k=1; k<rows.length; k++){
  10.     var cols = rows[k].getElementsByTagName("td");
  11.     var prom = 0;
  12.     var student = cols[0].innerHTML;
  13.         for(var n=1; n<cols.length-1; n++){
  14.         prom += parseInt(cols[n].innerHTML);
  15.         }
  16.     prom /= 4;
  17.     cols[cols.length-1].innerHTML = prom;
  18.    
  19.     var nRow = document.createElement("tr");
  20.     var nCol1 = document.createElement("td");
  21.     var nCol2 = document.createElement("td");
  22.    
  23.     var ach = achvs[achvs.length-1];
  24.         for(var n=0; n<achvs.length; n++){
  25.             if(prom <= achvs[n][0]){
  26.             ach = achvs[n][1];
  27.             break;
  28.             }
  29.         }
  30.    
  31.     nCol1.innerHTML = student;
  32.     nCol2.innerHTML = ach;
  33.    
  34.     nRow.appendChild(nCol1);
  35.     nRow.appendChild(nCol2);
  36.    
  37.     table2.appendChild(nRow);
  38.     }
  39.  
  40.    
  41. }


Código HTML:
Ver original
  1. <table id="table">
  2.     <tr>
  3.         <td>Alumno</td>
  4.         <td>Nota 1</td>
  5.         <td>Nota 2</td>
  6.         <td>Nota 3</td>
  7.         <td>Nota 4</td>
  8.         <td>Promedio</td>
  9.     </tr>
  10.     <tr>
  11.         <td>Juan</td>
  12.         <td>1</td>
  13.         <td>1</td>
  14.         <td>1</td>
  15.         <td>4</td>
  16.         <td></td>
  17.     </tr>
  18.         <tr>
  19.         <td>Catalina</td>
  20.         <td>10</td>
  21.         <td>9</td>
  22.         <td>7</td>
  23.         <td>2</td>
  24.         <td></td>
  25.     </tr>
  26.         <tr>
  27.         <td>Cristobal</td>
  28.         <td>7</td>
  29.         <td>6</td>
  30.         <td>2</td>
  31.         <td>8</td>
  32.         <td></td>
  33.     </tr>
  34.  
  35. <table id="table2">
  36. <tr>
  37. <td>Alumno</td>
  38. <td>Logros</td>
  39. </tr>
  40.  
  41.  
  42. <input value="Cargar logros" type="button" onclick="achievements('table', 'table2');" />

Saludos, espero sirva.
  #5 (permalink)  
Antiguo 28/12/2017, 07:17
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 451
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Llamar datos dinamicos en un input

Hola alvaro_trewhela

Hola, tu ejemplo me parece bien, toca estudiarlo, se ve muy viable, La pregunta mía es. En la parte superior donde estan los logros, no son constantes, son llamados desde una tabla logros previamente registrados, ¿Cómo hago para llamarlos dinamicamente?
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #6 (permalink)  
Antiguo 28/12/2017, 08:25
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Llamar datos dinamicos en un input

Emmm puedes o usar ajax y cambiar la var. achvs o generar un elemento html escondido con algun patron y obtener los datos, algo así

Código HTML:
Ver original
  1. <div id="table3" style="display:none;">3-Logro 1;5-Logo 2;7-Logro 3;Logro 4</div>

Y metes esto dentro de la función que te dí pero al principio

Código Javascript:
Ver original
  1. var achvs = [];
  2. var cAchv = document.getElementById(id3).innerHTML.split(";");
  3.  
  4.     for(var k=0;k<cAchv.length-1;k++){
  5.     var data = cAchv[k].split("-");
  6.     achvs[k][0] = parseInt(data[0]);
  7.     achvs[k][1] = data[1];
  8.     }
  9.  
  10. achvs[achvs.length] = cAchv[cAchv.length];

Quitas esto

Código Javascript:
Ver original
  1. var achvs = [[3, "Logro 1"],[5, "Logro 2"], [7, "Logro 3"], "Logro 4"]; //el numerito que acompaña es el valor max. del rango del logro.

A la funcion le agregas otro parametro

Código Javascript:
Ver original
  1. function achievements(id, id2, id3)

Y al evento le pones
Código HTML:
Ver original
  1. onclick="achievements('table', 'table2', 'table3');"
  #7 (permalink)  
Antiguo 28/12/2017, 08:38
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 451
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Llamar datos dinamicos en un input

Disculpa, antes que me respondieras hice esto y me funciona muy bien, pero tengo dos inconvenientes. Primero te paso el codigo

Código PHP:
Ver original
  1. <script>
  2.        
  3.         <?php
  4.              include('conexion.php');
  5.              $query = "SELECT * FROM table_logros";
  6.              $result = mysql_query($query);
  7.  
  8.               while ($registro = mysql_fetch_array($result)){
  9.  
  10.               echo "
  11.                                    
  12.              
  13.                                    
  14.            
  15.        
  16.        
  17.    var achvs = [[3, '".$registro['logro_1_pos']."'],[1, '".$registro['logro_2_neg']."'], [4, '".$registro['logro_3_inter']."'],  '".$registro['logro_4_sup']."']; //el numerito que acompaña es el valor max. del rango del logro.
  18.  
  19. function achievements(id, id2){
  20. var table = document.getElementById(id);
  21. var table2 = document.getElementById(id2);
  22.  
  23. var rows = table.getElementsByTagName('tr');
  24.  
  25.    for(var k=1; k<rows.length; k++){
  26.    var cols = rows[k].getElementsByTagName('td');
  27.    var prom = 0;
  28.    var student = cols[0].innerHTML;
  29.        for(var n=1; n<cols.length-1; n++){
  30.        prom += parseInt(cols[n].innerHTML);
  31.        }
  32.    prom /= 4;
  33.    cols[cols.length-1].innerHTML = prom;
  34.    
  35.    var nRow = document.createElement('tr');
  36.    var nCol1 = document.createElement('td');
  37.    var nCol2 = document.createElement('td');
  38.    
  39.    var ach = achvs[achvs.length-1];
  40.        for(var n=0; n<achvs.length; n++){
  41.            if(prom <= achvs[n][0]){
  42.            ach = achvs[n][1];
  43.            break;
  44.            }
  45.        }
  46.    
  47.    nCol1.innerHTML = student;
  48.    nCol2.innerHTML = ach;
  49.    
  50.    nRow.appendChild(nCol1);
  51.    nRow.appendChild(nCol2);
  52.    
  53.    table2.appendChild(nRow);
  54.    }
  55.  
  56.    
  57. }    
  58.  
  59.    ";
  60.               }
  61.               ?>
  62.     </script>

Los inconvenientes que tengo son:

1. No me llama los logros cuando le indico que me llame solo los de cierta categoria es decir, de la asignatura en mencion a la cual se está calificando al estudiantes. yo pongo en la consulta asi:

"SELECT * FROM table_logros where asignatura_id=".$_GET['asignatura_id']."; pero se queda sin accionar.

2. Quiero ponerle cierto rango a las notas, es decir que si el estudiante saca menos de 3 me muestre el logro negativo,, si el estudiante saca mayor que 3 y menos que 3,5 me muestre un logro positivo, que si saca mayor de 3,5 a 4,5 me saque el promedio intermedio y si es = 5 que me saque el promedio Superior
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #8 (permalink)  
Antiguo 28/12/2017, 08:50
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 451
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Llamar datos dinamicos en un input

Tambien quiero que el logro me cargue en un campo de texto para que luego sea guardado en un registro
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS

Etiquetas: dinamicos, input
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 12:45.