Foros del Web » Programando para Internet » PHP »

Pasar array de PHP a Javascript

Estas en el tema de Pasar array de PHP a Javascript en el foro de PHP en Foros del Web. Buenas. Estoy viendo como se puede pasar un array de php a javascript y al pasarlo me encuentro que el array pasa con el valor ...
  #1 (permalink)  
Antiguo 19/08/2011, 04:28
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Pasar array de PHP a Javascript

Buenas.
Estoy viendo como se puede pasar un array de php a javascript y al pasarlo me encuentro que el array pasa con el valor 'Array', pero compruebo que en php está bien cargado.
Estoy mirando en los foros y creo entender que hay que formatear el array de php para que lo interprete javascript, pero no tengo muy claro como hacer esto y donde hacerlo. Estoy viendo opciones en los foros y veo que meten código php en un fichero javascrip para formatearlo?
Siento la pregunta tan general y seguramente tan básica pero me estoy haciendo un lio.
Si alguien me puede guiar se lo agradecería.
Gracias anticipadas y saludos.
  #2 (permalink)  
Antiguo 19/08/2011, 05:03
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Pasar array de PHP a Javascript

No entiendo tu duda pues sólo hay que escribirlos. ¿Sabes usar arrays en php y JS?
Si no sabes usar los arrays de esos lenguajes dale un vistazo al manual.

Si el problema está en cambiar esos valores de forma asíncrona a un script hecho en php usa ajax, pero igual tendras que escribirlo así.

Espero que te sirva y sobre todo que lo entiendas, en caso contrario pregunta tu duda.
Saludos.

Código PHP:
<?php 
$arr 
= array('A','B','C','D','E');
?>

<script languaje="javascript">
var myArr=[<?php foreach($arr as $key => $value) echo ($key!=count($arr)-1) ? '"'.$value.'",' '"'.$value.'"' ?>];
</script>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #3 (permalink)  
Antiguo 19/08/2011, 05:11
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Pasar array de PHP a Javascript

Gracias.
Mi duda es si tengo que crear este código en el php y posteriormente pasar como parámetro el nuevo array generado (array ya en javascript), al fichero javascript???
  #4 (permalink)  
Antiguo 19/08/2011, 05:18
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Pasar array de PHP a Javascript

No tengo claro si me estoy explicando.
Tengo el resultado de una select en PHP, posteriormente lo convierto a un array para poder pasarlo por parámetro a una javascript, pero no recibo datos.
He visto por ahí que tengo que formatear este array php a javascript para poder tratarlo, pero lo que no entiendo es donde lo hago, ¿lo tengo que convertir en el php y luego pasar el nuevo array javascript a un fichero javascript?.
  #5 (permalink)  
Antiguo 19/08/2011, 05:34
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Pasar array de PHP a Javascript

sigo sin entender...
Si se trata de pasar un valor que viene por parámetro lo obtienes por $_GET y lo escribes en el de javascript.

Si tu código javascript está separado es un archivo .js y quieres añadir dentro php tendrás que cambiar la extensión a .js.php
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #6 (permalink)  
Antiguo 19/08/2011, 05:42
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Pasar array de PHP a Javascript

Y yo sigo sin explicarme. Seguro que mi problema, teniendo en cuenta que estoy empezando en todo este mundillo, es un problema claro de concepto.
Voy a intentar comentarte lo que quiero hacer y si puedes ayudarme bien y si no, no problem.
En un fichero php hago una consulta a una bbdd mysql.
Me devuelve un resultado que convierto a un array para pasarlo por parámetro a un html, pero este array no se puede pasar al javascript, salvo que lo formatees para que el javascript pueda interpretarlo.
La pregunta es si este array formateado en el php para que lo interprete el javascript, tengo que pasarlo como parámetro al fichero html o no.
Gracias y saludos.
  #7 (permalink)  
Antiguo 19/08/2011, 06:02
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Pasar array de PHP a Javascript

Primero: ¿De donde sacaste que no lo puedes pasar a javascript?
Ya te lo he explicado con un ejemplo, también en caso de tener el js separado y que si es de forma asíncrona necesitas Ajax. No entiendo como dices que no se puede...

Segundo: ¿De donde sacaste eso de formatear? Lo llevas usando desde el primer post y formatear significa dar formato y php y javascript no pueden mezclarse y no hay más formato que su sintaxis.

Si posteas tú código quizás sea más fácil ayudarte. Eso ya lo decides tú, pero poder se puede pasar...
Saludos.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #8 (permalink)  
Antiguo 19/08/2011, 11:02
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Pasar array de PHP a Javascript

Hola.
Voy a pegar el código aunque está tremendamente incompleto, es por esta razón por lo que no lo he hecho antes.

Tengo un php que genera el array de una consulta mysql y que pasa como parámetro el array devuelto pero que al presentarlo lo hace como indifinido.

Cita:
<?
include ('aprendetu_sc_fns.php');
// Necesitamos una sesión, así que empezar una
session_start();

$curso = get_curso_name($idcurso);
$asignatura = get_asignatura_name($idasignatura);
$tema = get_tema_name($idtema);

do_html_header($curso." - ".$asignatura." - ".$tema);

echo "<p>-----------------------------------</p>";

// Obtener las preguntas relacionadas con el tema seleccionado
$preguntas = get_preguntas($idtema);
$numero_preguntas = @mysql_num_rows($preguntas);

$_SESSION['num_preguntas'] = $numero_preguntas;
$_SESSION['indice_array'] = 0;

if ($num_preguntas > 0){
display_repaso($num_preguntas);
// Array que contendrá las filas de nuestra consulta
$array_preguntas = array();
while($r = mysql_fetch_assoc($preguntas)) {
//Agregamos la fila entera al array.
$array_preguntas[] = $r;
}
$_SESSION['array_de_preguntas'] = $array_preguntas;
} else {
echo "<p>Este tema actualmente no tiene preguntas/respuestas a realizar</p>";
$solo_volver = true;
}

// configurar url para "botón Volver"
$target = "do_temas.php?idcurso=".$idcurso."&idasignatura=". $idasignatura;
//$mas = "do_preguntas.php?preguntas=".$preguntas."&idcurso =".$idcurso."&idasignatura=".$idasignatura."&idtem a=".$idtema;

// si está loqueado como admin, mostrar enlaces añadir y borrar libros
if(session_is_registered("admin_user"))
{
display_button("index.php", "continue", "Continue Shopping");
display_button("admin.php", "admin-menu", "Admin Menu");
display_button("edit_category_form.php?catid=$cati d", "edit-category", "Edit Category");
}
else if($solo_volver==0){
display_button($target, "volver", "Volver");
display_button("repasoPreguntas.html?idcurso=".$id curso."&idasignatura=".$idasignatura."&idtema=".$i dtema."&curso=".$curso."&asignatura=".$asignatura. "&tema=".$tema."&apreguntas=".$apreguntas, "comenzar", "Comenzar");
} else {
display_button($target, "volver", "Volver");
}

do_html_footer();
?>

..... y el script destino es el siguiente:

Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="SyToo" />
<script type="text/javascript">

var title1;
var idcurso;
var idasignatura;
var idtema;
var curso;
var asignatura;
var tema;
var apreguntas = new array();

function inicio(){
var vars=[];
query=window.location.search.substring(1);
q=query.split("&");
for(i=0;i<q.length;i++){
x=q[i].split("=");
k=x[0];
v=x[1];
vars[k]=v;
}
idcurso = vars['idcurso'];
idasignatura = vars['idasignatura'];
idtema = vars['idtema'];
curso = vars['curso'];
asignatura = vars['asignatura'];
tema = vars['tema'];
apreguntas = vars['apreguntas'];
title1 = curso+' - '+asignatura+' - '+tema;
document.title = unescape(title1);
verCabecera();
}

function verCabecera(){
document.getElementById('cat').innerHTML = unescape(title1);
}



</script>

<title></title>

<style>
h2 {
font-family: Arial, Helvetica, sans-serif;
font-size: 22px;
color : red;
margin : 6px
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 13px
}
li, td {
font-family: Arial, Helvetica, sans-serif;
font-size: 13px
}
hr {
color: #FF0000;
width:70%;
text-align:center
}
a {
color: #000000
}
input.error{
background-color : silver;
border : 1px solid black;
}
#volver{
text-align:center
}
</style>

</head>

<body>



<br /><h2 id='cat'></h2><br />


<script>
inicio();
alert(apreguntas[0]);
</script>

</body>
</html>

este alert de un elemento de apreguntas está indefinido.

Saludos.
  #9 (permalink)  
Antiguo 19/08/2011, 12:26
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Pasar array de PHP a Javascript

¿Y cual es el problema? Lo tienes facilisimo .
Ya que usas sesiones almacena el array de la consulta momentáneamente una variable de sesión y la añades al array en javascript de la misma forma que te mostré en el código que puse.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #10 (permalink)  
Antiguo 19/08/2011, 13:18
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Pasar array de PHP a Javascript

Hola.
Gracias por tu tiempo.
IEKK, las cosas son tremendamente fáciles cuando las conoces, pero si fuese facilísimo no estaría de la forma que estoy todo el día mareando. Estoy empezando y para algunos leer manuales supone absorver todo lo que lees, pero a mi en este caso me está costando bastante más, probablemente por algún concepto confuso dado lo verde que estoy.
Gracias de nuevo y saludos.
  #11 (permalink)  
Antiguo 22/08/2011, 10:23
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Pasar array de PHP a Javascript

Buenas tardes.
IEKK o cualquiera que me pueda y quiera, os pediría que por favor me echéis una mano.
IEKK, estoy realmente haciendo copia y pega del código que me comentaste en este hilo pero no entiendo que es lo que hace a partir del echo...

Cita:
<script languaje="javascript">
var myArr=[<?php foreach($array_preguntas as $key => $value) echo ($key!=count($array_preguntas)-1) ? '"'.$value.'",' : '"'.$value.'"' ?>];
</script>
Pruebo y siempre consigo que todo lo que lleve el array no sea otra cosa que la palabra 'Array' como valor.
Tampoco se si en el supuesto de que fuese correcto y hubiese pasado el array php a un array javascript, lo tenga que pasar como parámetro de la forma que lo estoy haciendo.
Agradecería mucho si tienes/tenéis un momento que me aclaráseis estas dudas y me dijéseis como debo de aplicar este código para poder pasar el array a javascript y poder pasarlo como parámetro.

script de llamada:
Cita:
<?
include ('aprendetu_sc_fns.php');
// Necesitamos una sesión, así que empezar una
session_start();

$curso = get_curso_name($idcurso);
$asignatura = get_asignatura_name($idasignatura);
$tema = get_tema_name($idtema);

do_html_header($curso." - ".$asignatura." - ".$tema);

// Obtener las preguntas relacionadas con el tema seleccionado
$preguntas = get_preguntas($idtema);
$numero_preguntas = @mysql_num_rows($preguntas);

$_SESSION['num_preguntas'] = $numero_preguntas;
$_SESSION['indice_array'] = 0;

if ($num_preguntas > 0){
display_repaso($num_preguntas);
// Array que contendrá las filas de nuestra consulta
$array_preguntas = array();
$indice=0;
while($r = mysql_fetch_assoc($preguntas)) {
//Agregamos la fila entera al array.
$array_preguntas[$indice] = $r;
echo $array_preguntas[$indice]['descpregunta']."<br>";
}
$indice++;
$_SESSION['array_de_preguntas'] = $array_preguntas;
?>

<script languaje="javascript">
var myArr=[<?php foreach($array_preguntas as $key => $value) echo ($key!=count($array_preguntas)-1) ? '"'.$value.'",' : '"'.$value.'"' ?>];
document.write(myArr[0][0]);
</script>

<?php

} else {
echo "<p>Este tema actualmente no tiene preguntas/respuestas a realizar</p>";
$solo_volver = true;
}

// configurar url para "botón Volver"
$target = "do_temas.php?idcurso=".$idcurso."&idasignatura=". $idasignatura;
//$mas = "do_preguntas.php?preguntas=".$preguntas."&idcurso =".$idcurso."&idasignatura=".$idasignatura."&idtem a=".$idtema;

// si está loqueado como admin, mostrar enlaces añadir y borrar libros
if(session_is_registered("admin_user"))
{
display_button("index.php", "continue", "Continue Shopping");
display_button("admin.php", "admin-menu", "Admin Menu");
display_button("edit_category_form.php?catid=$cati d", "edit-category", "Edit Category");
}
else if($solo_volver==0){
display_button($target, "volver", "Volver");
display_button("repasoPreguntas.html?idcurso=".$id curso."&idasignatura=".$idasignatura."&idtema=".$i dtema."&curso=".$curso."&asignatura=".$asignatura. "&tema=".$tema."&myArr=".$myArr, "comenzar", "Comenzar");
} else {
display_button($target, "volver", "Volver");
}

do_html_footer();
?>
script llamado:
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="SyToo" />

<script type="text/javascript">

var title1;
var idcurso;
var idasignatura;
var idtema;
var curso;
var asignatura;
var tema;
var myArr = new Array();

function inicio(){
var vars=[];
query=window.location.search.substring(1);
q=query.split("&");
for(i=0;i<q.length;i++){
x=q[i].split("=");
k=x[0];
v=x[1];
vars[k]=v;
}
idcurso = vars['idcurso'];
idasignatura = vars['idasignatura'];
idtema = vars['idtema'];
curso = vars['curso'];
asignatura = vars['asignatura'];
tema = vars['tema'];
myArr = vars['myArr'];
title1 = curso+' - '+asignatura+' - '+tema;
document.title = unescape(title1);
verCabecera();
document.write(myArr[0][0]);
}

function verCabecera(){
document.getElementById('cat').innerHTML = unescape(title1);
}

</script>

<title>Sin título 11</title>
<style>
h2 {
font-family: Arial, Helvetica, sans-serif;
font-size: 22px;
color : red;
margin : 6px
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 13px
}
li, td {
font-family: Arial, Helvetica, sans-serif;
font-size: 13px
}
hr {
color: #FF0000;
width:70%;
text-align:center
}
a {
color: #000000
}
input.error{
background-color : silver;
border : 1px solid black;
}
#volver{
text-align:center
}
</style>


</head>

<body>

<table width=100% border=0 cellspacing = 0 bgcolor=#cccccc>
<tr>
<td rowspan = 2>
<a href = "index.php"><img src="imagenes/libro.png" alt="Anagrama Aprendetu" border=0
align=left valign=bottom height = 60 width = 247></a>
</td>
<td align = right valign = bottom>

</td>
</tr>
</table>

<h2 id='cat'></h2>





<script>
inicio();
</script>
</body>
</html>
Gracias y saludos.

Etiquetas: javascript, pasar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:49.