Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/12/2010, 08:10
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 10 meses
Puntos: 574
Respuesta: Ayuda con esto

Ante todo estamos en el foro de javascript y lo que has mandado es una mezcla de php y javascript.

No se si eres consciente de que php trabaja del lado servidor y javascript del lado cliente...

Código PHP:
Ver original
  1. <?php require_once('Connections/pailinea.php'); ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  6. <title>Listas Dinamicas</title>
  7. <script language="javascript">
  8. function ComponerLista(xPro) {
  9. document.forms.frmDatos.selCiudades.disabled = true;
  10. document.forms.frmDatos.selPropiedades.length = 0;
  11. CargarPropiedades(xPro);
  12. document.forms.frmDatos.selCiudades.disabled = false;
  13. }
  14. function CargarPropiedades(xCiu) {
  15. var o
  16. document.forms.frmDatos.selPropiedades.disabled=true;
  17. <?php
  18. $tablaPropiedades = mysql_query('SELECT * FROM ciudades ORDER BY nombre ASC');
  19. while ($registroPropiedad = mysql_fetch_array($tablaPropiedades)) {
  20. ?>
  21. if (xCiu == <?php echo $registroPropiedad["cod_departamentos"]; ?>) {
  22. o = document.createElement("OPTION");
  23. o.text = '<?php echo $registroPropiedad["nombre"]; ?>';
  24. o.value = <?php echo $registroPropiedad["cod_ciudades"]; ?>;
  25. document.forms.frmDatos.selPropiedades.options.add (o);
  26. }
  27. <?php
  28. }
  29. mysql_free_result($tablaPropiedades);
  30. ?>
  31. document.forms.frmDatos.selPropiedades.disabled=false;
  32. }
  33. </script>
  34. </head>
  35. <body>
  36. <form id="frmDatos" name="frmDatos" method="post" action="">
  37. <label>Puestos de Salud:
  38. <select name="selCiudades" size="6" id="selCiudades" onchange="ComponerLista(document.forms.frmDatos.selCiudades[selectedIndex].value);">
  39. <?php
  40. $tablaCiudades = mysql_query('SELECT * FROM departamentos ORDER BY nombre ASC');
  41. while ($registroCiudad = mysql_fetch_array($tablaCiudades)) {
  42. ?>
  43. <option value="<?php echo $registroCiudad['cod_departamentos']; ?>"><?php echo $registroCiudad['nombre']; ?></option>
  44. <?php
  45. }
  46. mysql_free_result($tablaCiudades);
  47. ?>
  48. </select>
  49. </label>
  50. <label>Centro de Costos:
  51. <select name="selPropiedades" size="6" id="selPropiedades">
  52. </select>
  53. </label>
  54. </form>
  55. </body>
  56. </html>
  57.  
  58. </body>
  59. </html>

El resultado de las lineas 17 a 20 és una array (matriz) de php por tanto esta en el lado servidor no en el lado cliente.

Si entre las lineas 19 y 20 introduces esta linea quizas entenderas por que no te funciona:

print_r($registroPropiedad);

Esto nos hace una impresion del contenido del array, veras algo así

Array([0]->Array([campo]->[valor]...primer registro obtenido por la consulta)
[1]->Array([campo]->[valor]...segundo registro obtenido por la consulta)
...
)

Un array de arrays, en otras palabras una matriz multidimensional, por tanto para acceder al campo "cod_departamentos" del registro X se debe hacer de la siguiente manera

$registroPropiedad[X]["cod_departamentos"]

de ahi ya puedes intuir algun error que tienes.

Pero el peor error es intentar acceder desde javascript a un array php, simplemente ese array no esta en la maquina donde se ejecuta javascript si no en el servidor... por tanto NO PUEDES ACCEDER A EL.

Javascript y php no se ejecutan en el mismo momento. En el caso que nos ocupa en el momento que actua javascript el array php ya no existe!!!

Es decir, cuando pides cargar la pagina el cliente manda una peticion al servidor, este ejecuta las partes php de tu codigo y confecciona un resultado estatico que manda al cliente, en este momento el cliente puede trabajar mediante javascript con lo que le ha mandado el servidor, como las lineas 17 a 20 no dan ningun resultado "imprimible" el cliente no recibe nada luego no podrá acceder a nada...

Si miras el codigo funte de la pagina mediante la opcion de tu navegador (en FIREFOX botón derecho>Código fuente de la pagina) verás lo que se ha recibido...

Antes de acceder debes pedir al servidor que pase los datos al lado cliente, creando un array multidimensional javascript con el contenido del array php. Luego javascript podrá acceder al array y todo funcionará...


Pasar array de php a javascript

Despues tendrás que modificar el javascript para que acceda a los valores del array javascript...

Intentalo, y cuando te encalles en algo pregunta.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 17/12/2010 a las 05:20