Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Activar/deactivar formulario con arrays relacionadas PHP-JavaScript

Estas en el tema de Activar/deactivar formulario con arrays relacionadas PHP-JavaScript en el foro de Javascript en Foros del Web. Buenos días, tengo un problema entre PHP y javascript en un formulario. Por un lado tengo este array en PHP: Código PHP: $proyecto_tarea [ $id_proyecto ...
  #1 (permalink)  
Antiguo 20/03/2013, 04:51
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 5 meses
Puntos: 0
Activar/deactivar formulario con arrays relacionadas PHP-JavaScript

Buenos días,

tengo un problema entre PHP y javascript en un formulario.
Por un lado tengo este array en PHP:
Código PHP:
$proyecto_tarea[$id_proyecto]["nombre"] = nombre_proyecto
$proyecto_tarea
[$id_proyecto]["numero"] = código_numérico_del_proyecto
$proyecto_tarea
[$id_proyecto]["tarea"][$id_tarea] = nombre_tarea 
Este array lo lleno desde mi base de datos y queda algo como esto:
Código PHP:
Array
(
    [
5] => Array
        (
            [
nombre] => Actividad de formación
            
[numero] => 005
            
[tarea] => Array
                (
                    [
9] => Curso A
                    
[10] => Curso B
                
)
        )

    [
6] => Array
        (
            [
nombre] => Permiso
            
[numero] => 006
            
[tarea] => Array
                (
                    [
11] => Enfermedad
                    
[12] => Mudanza
                
)
        )

    [
7] => Array
        (
            [
nombre] => Vacaciones
            
[numero] => 007
            
[tarea] => Array
                (
                    [
13] => Vacaciones

                
)
        )

Según el usuario aparecen solamente en mi array anterior sus proyectos, y para cada proyecto sus tareas asociadas.

Mi problema aparece en el formulario que el usuario debe rellenar, quiero que cuando seleccione un proyecto en concreto aparezcan en la siguiente casilla solamente aquellas tareas asignadas a ese proyecto en concreto que ha escogido.
Mi código en PHP/HTML es el siguiente:
Código HTML:
Ver original
  1. <form name="FormIntroDatos" ... ...>
  2. ... ... ...
  3.    <td><select name="proj_1" id="proj_1" " size="1" onChange="mostrar_tarea('proj_1', 'tasc_1');">
  4.  
  5.       <option></option>
  6. <?php
  7.      foreach ($proyecto_tarea as $id_proyecto => $datos_proj) {
  8. ?>
  9.          <option><?php echo $datos_proj["nombre"]." // ".$datos_proj["numero"] ?></option>
  10. <?php
  11.      }
  12. ?>
  13.    </select></td>
  14.  
  15.    <td><select name="tasc_1" id="tasc_1" size="1" disabled>
  16.       <option></option>
  17. <?php
  18. //    foreach ($proyecto_tarea as $id_proyecto => $datos_proj) {
  19. //       foreach ($datos_proj["tarea"] as $id_tarea => $nombre_tarea) {
  20. ?>
  21. <!--      <option><?php echo $nombre_tarea ?></option>
  22. -->
  23. <?php
  24. //       }
  25. //    }
  26. ?>
  27.    </select></td>
  28.  </tr>
  29. ... ...
Y mi código en javascript es:
Código Javascript:
Ver original
  1. function mostrar_tarea(sel_proyecto, sel_tasc){
  2.    var elem_proyecto=document.getElementById(sel_proyecto);
  3.    var elem_tasc=document.getElementById(sel_tasc);
  4.    elem_tasc.disabled = false;
  5.  
  6.    if (elem_proyecto.value = "Permiso")
  7.       elem_tasc.value[1] = "Enfermedad"
  8.       elem_tasc.value[2] = "Mudanza"
  9.       return(elem_tasc)
  10.    }

Pero no funciona... en la casilla de tareas de mi formulario, o bien me aparecen las opciones que tengo en el código PHP/HTML que son todas las tareas para todos los proyectos (ahora están las líneas comentadas). O bien no me sale nada (ya que alguna cosa esta mal en el JavaScript o en otro sitio).

Además, para cada proyecto hay 'n' tareas y no solamente una, así que debería poder devolver des de javascript un array con las tareas del proyecto que el usuario ha escogido.


Muchas gracias!
  #2 (permalink)  
Antiguo 20/03/2013, 08:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Activar/deactivar formulario con arrays relacionadas PHP-JavaScript

No puedes apoyarte en php para modificar el contenido del select de tareas si no haces una nueva petición php al servidor.. me explico.

El servidor manda al cliente el resultado del php y el cliente lo recibe como texto (sea html o javascipt) en el momento que lo recibe el cliente ya es estatico ... solo lo puedes modificar con javascript....

Opciones que tienes:

Recibir los datos del array php en un array javascript y usar funciones javascript que monten y modifiquen el formulario (busca por el foro scripts para modificar, agregar/quitar options de un select).

Otra opcion es hacer varias peticiones al servidor... primero el login determina el usuario, segundo con el ususrio pides los proyectos, cuando se ha elejido un proyecto pides las tareas... todo esto se puede reflejar en el html refrescando con ajax los selects...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 20/03/2013, 10:25
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Activar/deactivar formulario con arrays relacionadas PHP-JavaScript

Hola,

mmm intentaré con la primera opción, ya que de Ajax no se nada...
Muchas gracias!
  #4 (permalink)  
Antiguo 05/04/2013, 02:40
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Activar/deactivar formulario con arrays relacionadas PHP-JavaScript

Hola,

conseguí resolver el problema.
Os muestro el código en JavaScript i en PHP.

Código Javascript:
Ver original
  1. function mostrar_tasca(sel_projecte, sel_tasc){
  2.     var projecte_1 = new Array("Gestio edifici","Gestio economica-financera","RRHH","Compres")
  3.     var projecte_2 = new Array("Empresa A","Empresa B")
  4.     var projecte_3 = new Array("Projecte A","Projecte B")
  5.  
  6.     var proj = document.getElementById(sel_projecte);
  7.     var tasca = document.getElementById(sel_tasc);
  8.  
  9.     if (proj.value != 0) { 
  10.        mis_tasques = eval("projecte_" + proj.value)
  11.  
  12.        num_tasques = mis_tasques.length
  13.  
  14.        tasca.length = num_tasques
  15.  
  16.        for(i=0; i<num_tasques; i++){
  17.           tasca.options[i].value = mis_tasques[i]
  18.           tasca.options[i].text = mis_tasques[i]
  19.        }
  20.  
  21.     }else{
  22.        tasca.length = 1
  23.        tasca.options[0].value = "-"
  24.        tasca.options[0].text = "-"
  25.     }
  26.     tasca.options[0].selected = true
  27. }

Código PHP:
Ver original
  1. ...
  2. <td>
  3.     <select name="proj_<?php echo $id_gest_hores ?>" id="proj_<?php echo $id_gest_hores ?>" size="1" style="width:139px" onChange="mostrar_tasca('proj_<?php echo $id_gest_hores ?>', 'tasca_<?php echo $id_gest_hores ?>')">
  4.     <option value=<?php echo $id_proj ?> selected><?php echo $nom_proj ?></option>
  5. <?php
  6.     foreach ($array_proj_mostrar as $id_projecte => $dades_proj) {
  7. ?>
  8.         <option value=<?php echo $id_projecte ?>><?php echo $dades_proj["nom"]." // ".$dades_proj["numero"] ?></option>
  9. <?php
  10.     }
  11. ?>
  12.     </select>
  13.                         </td>
  14.                         <td>
  15.                             <select name="tasca_<?php echo $id_gest_hores ?>" id="tasca_<?php echo $id_gest_hores ?>" size="1" style="width:139px">
  16.                             <option><?php echo $nom_tasca ?></option>
  17.                             </select>
  18.                         </td>


Gracias!

Etiquetas: arrays, formulario, funcion, html, php, relacionadas, 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 18:55.