• Sábado 9 de Noviembre de 2024, 02:19

Autor Tema:  Como Pasar Un Array De Php A Javascript?  (Leído 3994 veces)

fern1979

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Como Pasar Un Array De Php A Javascript?
« en: Lunes 31 de Mayo de 2004, 19:14 »
0
Hola foreros:

Tengo una duda, y espero que en este foro me puedan ayudar, puesto que en otros, como que no he tenido mucho “éxito”.

Mi pregunta es la siguiente:
Tengo una Base de datos montada sobre MySQL en la cual tengo unas tablas. Una de ellas podría ser “Porcentaje”, con 3 columnas,,, “id_por”, “valor”, “nombre”. Y las cuales contienen 9 registros,
id_por =, 1, 2, 3,  (autoincr)
valor= 100, 90, 80, … 10
nombre = 100, 90, 80, …. 10

El cliente en su navegador verá 3 select con las siguientes posibilidades:
Que en el primero ya pongamos el 100% (con lo cual, los otros dos select estarán inhabilitados o invisibles). Los valores que se vean serán desde el 100 hasta el 10

Que el primero pongamos p.e. un 30 (aparecerá o se habilitará la segunda opción) y que en la segunda, pongamos un 70  (los valores que se verán en esta opcion será desde el 70 hasta el 10) (con lo que la tercera,,, permanecería deshabilitada.)

Que pongamos en 1er lugar un 30, en segundo otro 30 (se habilita la tercera opción) (aquí irán las posibilidades desde el 40 hasta el 10) y pongamos un 40 para que sumen de nuevo 100%.

Básicamente quiero hacer eso, pero como en JavaScript no hay forma de consultar una Base de datos (o por lo menos no la conozco yo), había pensado en consultarla con PHP los valores en cuestión, meterlos en un array, y traspasar los valores de PHP a JavaScript, (ya se que podría meterlos en un Array directamente en JavaScript, pero me interesaría sacarlos de una BD para que los valores puedan ser “variables”)

Lo que ya no se por donde coger (he buscado información y no he encontrado nada que me funcione) es como puedo pasar los valores de un array en PHP a JavaScript . La verdad es que si me pudierais dar ideas, links o alguna ayuda para ir componiendo este proyecto estaría muy agradecido…

Un saludo

                                       fern1979@hotmail.com

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Como Pasar Un Array De Php A Javascript?
« Respuesta #1 en: Martes 1 de Junio de 2004, 15:48 »
0
Hola, lo que tendrías que hacer es crear el código JavaScript al generar la página desde PHP, por ejemplo:

Código: Text
  1. $javascript = "<script language=\"JavaScript\">\n";
  2. $javascript .= "   var porcentajes = new Array();\n";
  3.  
  4. $porcentajes = mysql_query("SELECT * FROM Porcentaje") or die(mysql_error());
  5. while ($elem = mysql_fetch_array($porcentajes)) {
  6.    $javascript .= "   porcentajes[".$elem['id_por']."] = ".$elem['valor'].";\n";
  7. }
  8.  
  9. $javascript .= "</script>\n";
  10.  
  11. echo $javascript;
  12.  
  13.  


Bueno, eso es sólo un pequeño ejemplo, pero a partir de ahí ya deberías poder crear tus arrays y funciones. Si tienes alguna duda no tienes más que preguntar.


Salu2,
Avalon

fern1979

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como Pasar Un Array De Php A Javascript?
« Respuesta #2 en: Martes 1 de Junio de 2004, 22:50 »
0
Hola Avalon:

Muchisimas grácias por contestar, me ha servido de mucha ayuda.

Ahora me toca seguir "investigando", puesto que mis conocimientos de PHP y JavaScript digamos que son muy modestos como para que me salgan las cosas a la primera (estoy empezando, soy novato 100%),,, pero lo conseguiré.

Repito, muchas grácias por darme una base y por ofrecerte para mas dudas...

Un saludo

           fern1979@hotmail.com

fern1979

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como Pasar Un Array De Php A Javascript?
« Respuesta #3 en: Miércoles 2 de Junio de 2004, 19:52 »
0
Hola otra vez a todos:

En principio el Script me funciona bastante bien, pero no del todo. Explico lo que he hecho:
He creado una "pagina" de prueba para probar el Script con 3 select.
El primero le he puesto que reciba los valores de la Base de datos cuando se pulse el 2 Select.
Lo que me ocurre es que me recorre 11 veces (hasta ahí todo perfecto) el while, pero en vez de ponerse un solo valor de la BD, se ponen todos, (incluso mas), como lo siguiente:

   
     (, 100, 90, 80, ... 20, 10)    
     (, 100, 90, 80, ... 20, 10)
     ........
     (, 100, 90, 80, ... 20, 10)
     (, 100, 90, 80, ... 20, 10)
      Se repite 11 veces, en cada uno de los resultados del Select

El primer detalle sería que el valor de "porcentaje[0]", le asigna a un valor "vació"
No me preocupa demasiado porque a ese valor lo puedo asignar manualmente como "---" (para indicar nulo), pero si se pudiera eliminar (que empiece desde el array 1, ) ....

El segundo detalle y mas importante (el que mas me "preocupa") es que en cada uno de los "resultados select", aparecen concatenados (los valores de la BD). Supongo que será un "cambio de línea" o algo así, pero estoy haciendo pruebas y me vuelvo loco..... (como dije anteriormente,,, estoy un poquito BASTANTE flojo en programación)

Estaría muy agradecido de que comentarais de que puede ser este problemilla

Muy agradecido de antemano...

fern1979@hotmail.com

P.D. El código que empleo es el siguiente, por si podéis ver mas fácilmente donde me equivoco...


Código: Text
  1.  
  2.  
  3. <html>
  4. <body>
  5. <?php
  6. $javascript = "<script language=\"JavaScript\">\n";
  7. $javascript .= "   var porcentajes = new Array();\n";
  8. include("conect.php");  
  9. $link=Conectarse();
  10. $porcentajes=mysql_query("select * from porcentaje",$link) or die (mysql_error());
  11. while ($elem = mysql_fetch_array($porcentajes)) {
  12. $javascript .="porcentajes[".$elem['nreg']."] = ".$elem['porcentaje_v'].";\n";
  13. }
  14. $javascript .= "</script>\n";
  15. echo $javascript;
  16. ?>
  17. <script language="JavaScript">
  18. function funciona() {
  19. //calculo número de porcentajes
  20. numero = porcentajes.length
  21. //marco número de porcentajes en el select
  22. document.formulario.select1.length = numero
  23. // para cada provincia del array, la introduzco en el select
  24. for (i=0; i<numero; i++){
  25. document.formulario.select1.options[i].value = porcentajes
  26. document.formulario.select1.options[i].text = porcentajes
  27. }
  28. }
  29. </script>
  30.  
  31.   <form name="formulario">
  32.   <select name="select1">
  33.   <!-- option value ="-">- !-->
  34.   </select>
  35.  
  36.   <select name="select3" onclick="funciona()">
  37.   </select>
  38.  
  39. </form>
  40. </p>
  41. </body>
  42. </html>
  43.  
  44.  
  45.  

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Como Pasar Un Array De Php A Javascript?
« Respuesta #4 en: Miércoles 2 de Junio de 2004, 20:44 »
0
Hola ¿podrías pegar el código HTML/JavaScript que genera el script anterior? No acabo de ver donde está el problema, a ver si el código nos da alguna pista...

Salu2

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Como Pasar Un Array De Php A Javascript?
« Respuesta #5 en: Miércoles 2 de Junio de 2004, 20:51 »
0
Para más información y acotar el problema sería de gran ayuda que ejecutaras este script y pegaras el resultado obtenido en pantalla

Código: Text
  1. <html>
  2. <body>
  3. <?php
  4. include("conect.php");  
  5. $link=Conectarse();
  6. $porcentajes=mysql_query("select * from porcentaje",$link) or die (mysql_error());
  7. while ($elem = mysql_fetch_array($porcentajes)) {
  8.    echo $elem['nreg']." - ".$elem['porcentaje_v']."<br>\n";
  9. }
  10. ?>
  11. </body>
  12. </html>
  13.  


Salu2,
Avalon

fern1979

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como Pasar Un Array De Php A Javascript?
« Respuesta #6 en: Miércoles 2 de Junio de 2004, 23:22 »
0
Hola Avalon:
Lo primero agradecerte tu interés (otra vez). Y empezamos…

Ejecutando el Script que me propones, contiene la siguiente salida:

2 - 100
3 - 90
4 - 80
5 - 70
6 - 60
7 - 50
8 - 40
9 - 30
10 - 20
11 – 10

Nota: En la tabla la posición “1” esta en blanco (no existe).

Después el código generado por test.php (el código html/javascript) es:

Código: Text
  1.  
  2.  
  3. <html>
  4. <body>
  5.  
  6. <html>
  7. <head>
  8. <title>Title here!</title>
  9. </head>
  10. <body>
  11.  
  12.  
  13. </body>
  14. </html>
  15.  
  16.  
  17. <script language="JavaScript">
  18. <!--
  19.  
  20. function SymError()
  21. {
  22.   return true;
  23. }
  24.  
  25. window.onerror = SymError;
  26.  
  27. var SymRealWinOpen = window.open;
  28.  
  29. function SymWinOpen(url, name, attributes)
  30. {
  31.   return (new Object());
  32. }
  33.  
  34. window.open = SymWinOpen;
  35.  
  36. //-->
  37. </script>
  38.  
  39. <script language="JavaScript">
  40.    var porcentajes = new Array();
  41. porcentajes[2] = 100;
  42. porcentajes[3] = 90;
  43. porcentajes[4] = 80;
  44. porcentajes[5] = 70;
  45. porcentajes[6] = 60;
  46. porcentajes[7] = 50;
  47. porcentajes[8] = 40;
  48. porcentajes[9] = 30;
  49. porcentajes[10] = 20;
  50. porcentajes[11] = 10;
  51. </script>
  52. <script language="JavaScript">
  53. function funciona() {
  54. //calculo número de porcentajes
  55. numero = porcentajes.length
  56. //marco número de porcentajes en el select
  57. document.formulario.select1.length = numero
  58. // para cada provincia del array, la introduzco en el select
  59. for (i=0; i<numero; i++){
  60. document.formulario.select1.options[i].value = porcentajes
  61. document.formulario.select1.options[i].text = porcentajes
  62. }
  63. }
  64. </script>
  65.  <form name="formulario">
  66.   <select name="select1">
  67.   <!-- option value ="-">- !-->
  68.   </select>
  69.  
  70.   <select name="select3" onclick="funciona()">
  71.   </select>
  72.   
  73.  </form>
  74. </p>
  75. </body>
  76. </html>
  77.  
  78.  
  79.  

Y la captura (imagen) de lo que produce este código esta en la foto adjunta.

Muchas gracias

 
fern1979@hotmail.com
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Como Pasar Un Array De Php A Javascript?
« Respuesta #7 en: Jueves 3 de Junio de 2004, 00:09 »
0
La información que has adjuntado ha sido de gran ayuda :good:

Para resolver el primer problema y que el array comience en la posición 1 solo tienes que sustituir las siguientes líneas de código

Código: Text
  1. while ($elem = mysql_fetch_array($porcentajes)) {
  2.    $javascript .="porcentajes[".$elem['nreg']."] = ".$elem['porcentaje_v'].";\n";
  3. }
  4.  

por estas otras

Código: Text
  1. $contador = 0;
  2. while ($elem = mysql_fetch_array($porcentajes)) {
  3.    $javascript .="porcentajes[".$contador."] = ".$elem['porcentaje_v'].";\n";
  4.    $contador++;
  5. }
  6.  


Lo que se conseguía con el código antiguo es que el índice del array se correspondiera con el campo clave (creo) de la tabla porcentaje pero si no vas a necesitar esa información posteriormente a la hora de, por ejemplo, enviar el formulario puedes usar un contador perfectamente para generar el array, aunque en este caso lo mejor va a ser que el contador empiece a 0 (y por tanto también el array) para que luego no aparezca un espacio en blanco no deseado en el select (por eso he puesto $contador = 0 y no $contador = 1)


El segundo problema ocurre porque te falta indicar el índice del array al introducir los datos en el select

Debes sustituir el siguiente código

Código: Text
  1. for (i=0; i<numero; i++){
  2.    document.formulario.select1.options[i].value = porcentajes
  3.    document.formulario.select1.options[i].text = porcentajes
  4. }
  5.  

por este otro

Código: Text
  1. for (i=0; i<numero; i++){
  2.    document.formulario.select1.options[i].value = porcentajes[i];
  3.    document.formulario.select1.options[i].text = porcentajes[i];
  4. }
  5.  


Con eso debería quedar resuelto el problema.


Salu2,
Avalon

fern1979

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como Pasar Un Array De Php A Javascript?
« Respuesta #8 en: Viernes 4 de Junio de 2004, 08:51 »
0
Perfecto!!!!!

Ya me funciona todo a las mil maravillas!!!!!


Un saludo y muchas gracias.

fern1979@hotmail.com

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Como Pasar Un Array De Php A Javascript?
« Respuesta #9 en: Viernes 4 de Junio de 2004, 23:44 »
0
Hola Fern1979... :D

Parece ser que estamos haciendo un ejercicio similar! :smartass:

De donde eres? Exactamente que es lo que vas a hacer? :comp:

Un saludo,

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