Programación Web y Scripting > PHP

 Como Pasar Un Array De Php A Javascript?

<< < (2/2)

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 ---&#60;html&#62;&#60;body&#62;&#60;?phpinclude(&#34;conect.php&#34;);  &#036;link=Conectarse(); &#036;porcentajes=mysql_query(&#34;select * from porcentaje&#34;,&#036;link) or die (mysql_error()); while (&#036;elem = mysql_fetch_array(&#036;porcentajes)) {   echo &#036;elem['nreg'].&#34; - &#34;.&#036;elem['porcentaje_v'].&#34;&#60;br&#62;&#092;n&#34;;}?&#62;&#60;/body&#62;&#60;/html&#62; 

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 ---  &#60;html&#62;&#60;body&#62; &#60;html&#62; &#60;head&#62; &#60;title&#62;Title here!&#60;/title&#62; &#60;/head&#62; &#60;body&#62;   &#60;/body&#62; &#60;/html&#62;  &#60;script language=&#34;JavaScript&#34;&#62;&#60;!-- function SymError(){  return true;} window.onerror = SymError; var SymRealWinOpen = window.open; function SymWinOpen(url, name, attributes){  return (new Object());} window.open = SymWinOpen; //--&#62;&#60;/script&#62; &#60;script language=&#34;JavaScript&#34;&#62;   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;&#60;/script&#62;&#60;script language=&#34;JavaScript&#34;&#62;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&#60;numero; i++){document.formulario.select1.options[i].value = porcentajesdocument.formulario.select1.options[i].text = porcentajes}}&#60;/script&#62; &#60;form name=&#34;formulario&#34;&#62;  &#60;select name=&#34;select1&#34;&#62;  &#60;!-- option value =&#34;-&#34;&#62;- !--&#62;  &#60;/select&#62;   &#60;select name=&#34;select3&#34; onclick=&#34;funciona()&#34;&#62;  &#60;/select&#62;   &#60;/form&#62;&#60;/p&#62;&#60;/body&#62;&#60;/html&#62;   
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 (&#036;elem = mysql_fetch_array(&#036;porcentajes)) {   &#036;javascript .=&#34;porcentajes[&#34;.&#036;elem['nreg'].&#34;] = &#34;.&#036;elem['porcentaje_v'].&#34;;&#092;n&#34;;} 
por estas otras


--- Código: Text ---&#036;contador = 0;while (&#036;elem = mysql_fetch_array(&#036;porcentajes)) {   &#036;javascript .=&#34;porcentajes[&#34;.&#036;contador.&#34;] = &#34;.&#036;elem['porcentaje_v'].&#34;;&#092;n&#34;;   &#036;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&#60;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&#60;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

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa