Programación Web y Scripting > PHP
Como Pasar Un Array De Php A Javascript?
Avalon:
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 ---<html><body><?phpinclude("conect.php"); $link=Conectarse(); $porcentajes=mysql_query("select * from porcentaje",$link) or die (mysql_error()); while ($elem = mysql_fetch_array($porcentajes)) { echo $elem['nreg']." - ".$elem['porcentaje_v']."<br>\n";}?></body></html>
Salu2,
Avalon
fern1979:
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 --- <html><body> <html> <head> <title>Title here!</title> </head> <body> </body> </html> <script language="JavaScript"><!-- function SymError(){ return true;} window.onerror = SymError; var SymRealWinOpen = window.open; function SymWinOpen(url, name, attributes){ return (new Object());} window.open = SymWinOpen; //--></script> <script language="JavaScript"> var porcentajes = new Array();porcentajes[2] = 100;porcentajes[3] = 90;porcentajes[4] = 80;porcentajes[5] = 70;porcentajes[6] = 60;porcentajes[7] = 50;porcentajes[8] = 40;porcentajes[9] = 30;porcentajes[10] = 20;porcentajes[11] = 10;</script><script language="JavaScript">function funciona() {//calculo número de porcentajesnumero = porcentajes.length//marco número de porcentajes en el selectdocument.formulario.select1.length = numero// para cada provincia del array, la introduzco en el selectfor (i=0; i<numero; i++){document.formulario.select1.options[i].value = porcentajesdocument.formulario.select1.options[i].text = porcentajes}}</script> <form name="formulario"> <select name="select1"> <!-- option value ="-">- !--> </select> <select name="select3" onclick="funciona()"> </select> </form></p></body></html>
Y la captura (imagen) de lo que produce este código esta en la foto adjunta.
Muchas gracias
fern1979@hotmail.com
Avalon:
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 ---while ($elem = mysql_fetch_array($porcentajes)) { $javascript .="porcentajes[".$elem['nreg']."] = ".$elem['porcentaje_v'].";\n";}
por estas otras
--- Código: Text ---$contador = 0;while ($elem = mysql_fetch_array($porcentajes)) { $javascript .="porcentajes[".$contador."] = ".$elem['porcentaje_v'].";\n"; $contador++;}
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 ---for (i=0; i<numero; i++){ document.formulario.select1.options[i].value = porcentajes document.formulario.select1.options[i].text = porcentajes}
por este otro
--- Código: Text ---for (i=0; i<numero; i++){ document.formulario.select1.options[i].value = porcentajes[i]; document.formulario.select1.options[i].text = porcentajes[i];}
Con eso debería quedar resuelto el problema.
Salu2,
Avalon
fern1979:
Perfecto!!!!!
Ya me funciona todo a las mil maravillas!!!!!
Un saludo y muchas gracias.
fern1979@hotmail.com
Slimer:
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
Navegación
[*] Página Anterior
Ir a la versión completa