Comunidad de diseño web y desarrollo en internet online

Problema con script dentro de un .php

Citar            
MensajeEscrito el 01 Jun 2012 08:54 pm
Hola a todos, tengo un problema de novato pero que me tiene frito y no se como solucionar, os cuento...

Estoy en un .php en el que tengo un script js así

Código PHP :

echo '<script type="text/javascript">
         function init(){
            alert("hacienco init");
            
            var arrayPuntos = new Array();
            var canvas = document.getElementById("miCanvas");
            var contexto = canvas.getContext("2d");   
   
            for(var i=0; i<'.count($arrayDatos).'; i++){
               alert('.$arrayDatos[0]["valor"].');
               var objetoTMP = new Object();
            }
         }
      </script>';


Veis el for, tal y como está, me saca el valor correctamente (son valores que cargo previamente de una base de datos, el caso es que ahí los valores están bien. Si yo pongo a mano el valor 0, el 1, el 2... el que sea, de $arrayDatos (un valor que exista, claro), me saca el alert perfectamente, pero lo que quiero es que me vaya haciendo el alert de todos los valores.

Si pongo

Código Javascript :

   alert('.$arrayDatos[.'i'.]["valor"].');
me pilla como un string, y el .php a la hora de genera el código, genera un alert('.$arrayDatos[i]["valor"].'); que no existe claro... no se si me estoy explicando.

El caso es que tiene que ser algo de sintaxis, estoy empezando con js y php y me hago la picha un lío visto lo vito... tengo toda la app funcionando perfectamente (hasta aquí) y me lío con esto, manda narices...

Bueno, alguien sabe como puedo sacar ese valor correctamente? Es que ya no se que probar.

Gracias de antemano y un saludo.

Por torpedete

85 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 01 Jun 2012 11:12 pm
Lo que quieres es que JavaScript te muestre los valores de un array que está en PHP.
Eso no se puede hacer.
Simplemente porque $arrayDatos de PHP está en la memoria del servidor, mientras que el código JavaScript se ejecuta en el cliente (es decir, el navegador).

Lo que debes hacer es que PHP realmente escriba el texto del código fuente JavaScript que declara el array JavaScript que quieres recorrer luego con el for de JS.

Más o menos así:

Código PHP :

<?php
$arrayDatos = array(0=>array("valor"=>"Un valor"),1=>array("valor"=>"Otro valor"));

?><script type="text/javascript">
         function init(){
       
         var arrayDatos = new Array(
<?php
   foreach($arrayDatos as $key => $valor) {
      echo "\"".$valor['valor']."\"";
      echo ($key < count($arrayDatos)-1)?",":""; // Esto es para que no imprima la última coma.
   }
?>)
       
       
            alert("hacienco init");
            /*
            var arrayPuntos = new Array();
            var canvas = document.getElementById("miCanvas");
            var contexto = canvas.getContext("2d");   
         */
            for(var i=0; i<<?php echo count($arrayDatos) ?>; i++){
               alert(arrayDatos[i]);
               var objetoTMP = new Object();
            }
         }
      </script>
<?php
?>


En este código de ejemplo $arrayDatos lo declaro directamente, tú lo tomarás desde la base de datos.

Como verás, si ejecutas el código, PHP ha escrito la declaración del array arrayDatos de JavaScript en el propio código fuente de la página como un array constante.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Jun 2012 08:41 am
Muchas gracias por la respuesta DriveOp, ya he conseguido pillarlo :), aunque se me queda "atascado" tras rellenar el array, algo tengo mal en la sintaxis de la creación del mismo, me imagino... tengo este código:


Código PHP :

echo 'var arrayPuntos = new Array(';
         
               foreach($arrayDatos as $key => $valor) {
                  echo "new Array(";
                  echo "'valor1'=>";
                  echo $valor["valor1"];
                  echo ",'valor2'=>";
                  echo $valor["valor2"];
                  echo ",'fecha'=>";
                  echo $valor["fecha"];
                  echo ")";
                  echo ($key < count($arrayDatos)-1)?",":""; 
               }
                        
            
            echo ');



Y esto me saca este código en el html

Código Javascript :

function init(){
var arrayPuntos = new Array(new Array('valor1'=>87,'valor2'=>20,'fecha'=>2012-06-01 11:48:22),new Array('valor1'=>80,'valor2'=>15,'fecha'=>2012-06-01 11:47:47));
alert("hacienco init");
var canvas = document.getElementById("miCanvas");
var contexto = canvas.getContext("2d");
...
...
...
} 

Pues bien, los valores están bien, todo perfecto, pero el alert que tengo justo debajo de la declaración del array no me lo hace, con lo cual me imagino que algún error tengo en la sintaxis del mismo, aunque estoy mirando y no veo nada "raro"...

Perdona por hacer preguntas tan chorras, pero es que me pierdo con esto, grrrrrrrrrrr.

Por torpedete

85 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.