Foros del Web » Programando para Internet » Javascript »

Insertar PHP en una variable Java

Estas en el tema de Insertar PHP en una variable Java en el foro de Javascript en Foros del Web. Hola gente, Quiero insertar el contenido de una variable PHP en una cadena Javascript. Ej: Código: // defino la var en PHP <? define("cServicios","Servicios"); ?> ...
  #1 (permalink)  
Antiguo 29/12/2002, 21:53
Avatar de BooMeranGz  
Fecha de Ingreso: febrero-2001
Mensajes: 350
Antigüedad: 23 años, 9 meses
Puntos: 0
Insertar PHP en una variable Java

Hola gente,

Quiero insertar el contenido de una variable PHP en una cadena Javascript.

Ej:

Código:
// defino la var en PHP
<? define("cServicios","Servicios"); ?>

// Quiero insertar ese valor en la siguiente cadena javascript:
<script LANGUAGE="JavaScript1.2">
McServicios = '1 espacio'.<? echo cServicios; ?>.'1 espacio';

/* Reemplazo la variable con la cadena modificada */
appendSTMI("false",McServicios,"center","#000000");
</script>
Bueno, eso he intentado, pero no me toma la variable, seguramente no se inserta de ese modo.

Si alguien me ayuda, se lo agradezco enormemente :)

Salu2.
  #2 (permalink)  
Antiguo 30/12/2002, 01:26
Avatar de SpiceMan  
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 22 años
Puntos: 0
hmmm. muy raro.

probaste obligar al PHP a que tome cServicios como una constante?

<? echo constant("cServicios"); ?>
  #3 (permalink)  
Antiguo 30/12/2002, 11:31
Avatar de BooMeranGz  
Fecha de Ingreso: febrero-2001
Mensajes: 350
Antigüedad: 23 años, 9 meses
Puntos: 0
Hola,

Si he probado, pero me dice "constante de cadena sin terminar" o se esperaba un identificador (si le saco el ".").

Salu2.
  #4 (permalink)  
Antiguo 30/12/2002, 11:42
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 10 meses
Puntos: 38
Re: Insertar PHP en una variable Java

Hola BooMeranGz.

Fíjate, el . es un operador de PHP, no de JavaScript ni de HTML, por lo tanto no es comprendido por nadie fuera de los tags <? y ?>.

Tienes varias maneras de hacerlo:

- Si tu cadena es una constante PHP "345" por ejemplo, y quieres generar la siguiente instrucción JavaScript:

Código:
McServicios = '1 espacio3451 espacio';
Deber hacerlo asi:

Código:
McServicios = '1 espacio<? echo cServicios; ?>1 espacio';
- Si tu constante define el nombre de una variable JavaScript, por ejemplo "var15" y quieres que tu instrucción sea esta:

Código:
McServicios = '1 espacio' + var15 + '1 espacio';
Deber hacerlo asi:

Código:
McServicios = '1 espacio + '<? echo cServicios; ?> + '1 espacio';
Saludos.
  #5 (permalink)  
Antiguo 30/12/2002, 11:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
El problema principal que tienes es el uso del . (punto) como caracter "concatenador" .. Estas usandolo en "javascript" .. y en ese lugar ya no es PHP (está fuera de <? ?> .. ) (ademas en javascrip seria el + )

Piensa en PHP como en un "parser" .. osese .. en algo que lee el archivo y sustituye los echo $variable (o en tu caso una constante definida) y mas si están fuera de <? ?> incrustados ..

Quedaría así:

Código PHP:
/* defino la var en PHP */
<? define("cServicios","Servicios"); ?>

// Quiero insertar ese valor en la siguiente cadena java script:
<script LANGUAGE="JavaScript1.2">
McServicios = "1 espacio <? echo cServicios?> 1 espacio";

/* Reemplazo la variable con la cadena modificada */
appendSTMI("false",McServicios,"center","#000000") ;
</script>
La rutina javascript está en HTML y lo que incrustas es PHP .. si fuera al reves si que te hubieran servidor los puntos de concatenación .. aunque como veras si usas comillas dobles .. PHP lo interpreta todo (buscando variables por ejemplo q sustituir su valor .. ) asi q no es necesario. ejemplo:

Código PHP:
<?
define
("cServicios","Servicios"); 
echo 
"<script LANGUAGE=\"JavaScript1.2\">";
echo 
"McServicios=\" cServicios \"";
// etc ...
echo "</script>";
?>
Un saludo,

Última edición por Cluster; 30/12/2002 a las 11:52
  #6 (permalink)  
Antiguo 30/12/2002, 11:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
jeje Kaopectate te adelantastes o escribes mas rápido xD ..

Bueno de todas formas ya hay explicacion al respecto tanto por Javascript como por PHP .. xD

Un saludo,
  #7 (permalink)  
Antiguo 30/12/2002, 12:01
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 10 meses
Puntos: 38
Me asusté cuando vi que habías respondido. Las dos veces que he incursionado en el foro de PHP he cometido mis JavaScriptsadas. Pensé que algo había hecho mal en PHP y me estabas corrigiendo.

Bueno compadre, al menos esta vez me salvé.

Un abrazo.
  #8 (permalink)  
Antiguo 30/12/2002, 12:15
Avatar de BooMeranGz  
Fecha de Ingreso: febrero-2001
Mensajes: 350
Antigüedad: 23 años, 9 meses
Puntos: 0
Gracias amigos,

Justamente lo primero que probé fué el:
McServicios = "1 espacio <? echo cServicios; ?> 1 espacio";

Pero eso me da el error: "Constante de cadena sin terminar"

Le probé sacar los espacios, ponerle comillas simples, pero igual da ese error, ¿que podrá ser?
  #9 (permalink)  
Antiguo 30/12/2002, 12:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
A mi este código me va OK (solo esta porción .. ) No se si tendras mas código en la misma página ..

Código PHP:
/* defino la var en PHP */
<? define("cServicios","Servicios"); ?>

// Quiero insertar ese valor en la siguiente cadena java script:
<script LANGUAGE="JavaScript1.2">
McServicios = "1 espacio <? echo cServicios?> 1 espacio";

/* Reemplazo la variable con la cadena modificada */
/* appendSTMI("false",McServicios,"center","#000000") ; */
</script>
lo unico que hago es comentar la linea appendSTMI() (la llamada a esa funcion) .. pues en el código que has dado no está y obvio que dá un error de "se esperaba un objeto" (error de Javascript) ..

El error que te dá es de PHP o de javascript? ...

Podrias poner el código entero de la página que contiene ese javascript para evaluar como abres y cierras <? ?> .. (aunque esto ya sería mas cosa de verlo en el foro de PHP .. ).


Un saludo,
  #10 (permalink)  
Antiguo 30/12/2002, 16:10
Avatar de BooMeranGz  
Fecha de Ingreso: febrero-2001
Mensajes: 350
Antigüedad: 23 años, 9 meses
Puntos: 0
Cluster, si no encuentro la solucion, copiaré los js y publicaré el link para que lo revises, posiblemente el problema está en la llamada a las funciones (es un menu hecho con S. DHTML menu).

Dejando de lado el paso de variables, si pruebo insertarla directamente donde debe ir tampoco me carga el menu, o sea:

Código:
/* defino la var en PHP */
<? define("cServicios","Servicios"); ?>

<!-- Quiero insertar ese valor en la siguiente cadena java script: -->
<script LANGUAGE="JavaScript1.2">
/* Reemplazo la variable con la cadena PHP directamente */
appendSTMI("false",<? echo cServicios; ?>,"center","#000000") ;
</script>
Creo que asi deberia funcionar :( pero no lo hace...

(El error me lo da sobre javascript).
  #11 (permalink)  
Antiguo 30/12/2002, 16:23
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
¿Qué error javascript te da??

Prueba a poner esto

appendSTMI("false","<? echo cServicios; ?>","center","#000000") ;

Creo que el parámetro te debe quedar sin comillas y javascript dirá que no está definido. Claro que eso suponiendo que cServicios sea un valor, y no el nombre de un objeto

saludos
  #12 (permalink)  
Antiguo 30/12/2002, 16:48
Avatar de BooMeranGz  
Fecha de Ingreso: febrero-2001
Mensajes: 350
Antigüedad: 23 años, 9 meses
Puntos: 0
A ver, vamos por pasos, esta es la llamada completa a esa función y pasa lo siguiente:

Si pongo así:
Código PHP:
appendSTMI("false","&nbsp;&nbsp;&nbsp;&nbsp;<? echo cServicios?>&nbsp;&nbsp;&nbsp;&nbsp;|","center","middle","","","-1","-1","0","normal","#ffffff","#ffffff","","1","-1","-1","blank.gif","blank.gif","0","0","0","","","_self","'Arial'","8pt","#000000","normal","normal","none","'Arial'","8pt","#999999","normal","normal","none","0","none","#ffffff","#000000","#ffffff","#000000");
Me da: Constante de cadena sin terminar
El código fuente me muestra esto:
Código PHP:
appendSTMI("false","&nbsp;&nbsp;&nbsp;&nbsp;
servicios&nbsp;&nbsp;&nbsp;&nbsp;|"
,"center","middle","","","-1","-1","0","normal","#ffffff","#ffffff","","1","-1","-1","blank.gif","blank.gif","0","0","0","","","_self","'Arial'","8pt","#000000","normal","normal","none","'Arial'","8pt","#999999","normal","normal","none","0","none","#ffffff","#000000","#ffffff","#000000"); 
Si pongo así:
Código PHP:
appendSTMI("false","&nbsp;&nbsp;&nbsp;&nbsp;"+"<? echo cServicios?>"+"&nbsp;&nbsp;&nbsp;&nbsp;|","center","middle","","","-1","-1","0","normal","#ffffff","#ffffff","","1","-1","-1","blank.gif","blank.gif","0","0","0","","","_self","'Arial'","8pt","#000000","normal","normal","none","'Arial'","8pt","#999999","normal","normal","none","0","none","#ffffff","#000000","#ffffff","#000000");
Me da: Constante de cadena sin terminar
El código fuente me muestra esto:
Código PHP:
appendSTMI("false","&nbsp;&nbsp;&nbsp;&nbsp;"+"
servicios"
+"&nbsp;&nbsp;&nbsp;&nbsp;|","center","middle","","","-1","-1","0","normal","#ffffff","#ffffff","","1","-1","-1","blank.gif","blank.gif","0","0","0","","","_self","'Arial'","8pt","#000000","normal","normal","none","'Arial'","8pt","#999999","normal","normal","none","0","none","#ffffff","#000000","#ffffff","#000000"); 
Si pongo así:
Código PHP:
appendSTMI("false","&nbsp;&nbsp;&nbsp;&nbsp;"+<? echo cServicios?>+"&nbsp;&nbsp;&nbsp;&nbsp;|","center","middle","","","-1","-1","0","normal","#ffffff","#ffffff","","1","-1","-1","blank.gif","blank.gif","0","0","0","","","_self","'Arial'","8pt","#000000","normal","normal","none","'Arial'","8pt","#999999","normal","normal","none","0","none","#ffffff","#000000","#ffffff","#000000");
Me da: 'this.getBlock().style' es nulo o no es un objeto.
El código fuente me muestra esto:
Código PHP:
appendSTMI("false","&nbsp;&nbsp;&nbsp;&nbsp;"+
servicios+"&nbsp;&nbsp;&nbsp;&nbsp;|","center","middle","","","-1","-1","0","normal","#ffffff","#ffffff","","1","-1","-1","blank.gif","blank.gif","0","0","0","","","_self","'Arial'","8pt","#000000","normal","normal","none","'Arial'","8pt","#999999","normal","normal","none","0","none","#ffffff","#000000","#ffffff","#000000"); 
Ya no se de que otra manera puedo probar, y necesito reemplazar varias variables del menú, ya que es multilingual :(

cServicios ya está definido en un x.php y si hago un <? echo cServicios; ?> antes del javascript, me lo muestra bien.

Y como pueden ver, el cód. fuente de la página me muestra la variable con el valor reemplazado, pero no se carga el menú.


Última edición por BooMeranGz; 30/12/2002 a las 16:54
  #13 (permalink)  
Antiguo 30/12/2002, 16:57
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Esto:
Cita:
appendSTMI("false","
servicios |","center","middle","","","-1","-1","0","normal","#ffffff","#ffffff","","1","-1","-1","blank.gif","blank.gif","0","0","0","","","_sel f","'Arial'","8pt","#000000","normal","normal","no ne","'Arial'","8pt","#999999","normal","normal","n one","0","none","#ffffff","#000000","#ffffff","#00 0000");
Lo tienes en 2 líneas y debería estar en una sola.
Tenerlo en 2 líneas es el equivalente a decirle ; en medio de la línea. Es un final de sentencia.
Por eso te da error de constante de cadena sin terminar. Cree que yá ha terminado la sentencia y cree que le falta " y )

Después el otro intento con el + no puedes hacerlo así.
Habrías de concatenarlo todo en una variable primero y luego poner esa variable como argumento.
  #14 (permalink)  
Antiguo 30/12/2002, 17:03
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 10 meses
Puntos: 38
Lo que yo veo es que el contenido de la variable te conlleva un salto de línea que te daña la expresión.

  #15 (permalink)  
Antiguo 30/12/2002, 17:12
Avatar de BooMeranGz  
Fecha de Ingreso: febrero-2001
Mensajes: 350
Antigüedad: 23 años, 9 meses
Puntos: 0
Cita:
Lo tienes en 2 líneas y debería estar en una sola.
Tenerlo en 2 líneas es el equivalente a decirle ; en medio de la línea. Es un final de sentencia.
Por eso te da error de constante de cadena sin terminar. Cree que yá ha terminado la sentencia y cree que le falta " y )
Claro, eso veo en el fuente, pero no se como hacer para que salga en una sola linea :(

Cita:
Lo que yo veo es que el contenido de la variable te conlleva un salto de línea que te daña la expresión.
Y es raro, ya que la constante está definida de este modo:
<?
define("cServicios","servicios");
?>

A no ser que deba probar con definirla en una variable tipo:
<?
$cServicios = "servicios";
?>

No se, ustedes que son los maestros sabrán, yo sigo con el mismo problema

Salu2.
  #16 (permalink)  
Antiguo 30/12/2002, 17:17
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 10 meses
Puntos: 38
Bueno, maestro en cual es la mejor manera de asignar el contenido a esa variable PHP, me imagino que Cluster.

Yo en lo personal te digo que hagas la prueba que dices. La forma como estás inicializando es propia de constantes y no se el grado de compatibilidad en PHP.

En realidad, en el punto en el que estás, mas te favorecería estar en el foro de PHP que por acá, aunque de mil amores yo en lo personal sigo lanzando flechazos a ver como te ayudo.

Eso si, si llega a funcionar nos tienes que avisar.

Saludos.
  #17 (permalink)  
Antiguo 30/12/2002, 17:23
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Hum... realmente la inserción de la variable php te genera un salto de línea.

Yo es que no he tocadó aún el php. Ese punto y com (;) que va detrás de la variable hay que ponerla?
  #18 (permalink)  
Antiguo 30/12/2002, 17:41
Avatar de BooMeranGz  
Fecha de Ingreso: febrero-2001
Mensajes: 350
Antigüedad: 23 años, 9 meses
Puntos: 0
Bueno, resuelto el problema :)

El error estaba en el file donde defino las constantes (lang.php), ya que para mejor lectura lo tenía como:

Código PHP:
<?
bla
;
bla;

define("cServicios","
servicios"
);

bla;
bla;
?>
Y debe ir así para que lo tome el Javascript (al menos este):

Código PHP:
<?
bla
;
bla;

define("cServicios","servicios");

bla;
bla;
?>
Gracias a todos por la ayuda, que con sus ideas y sugerencias pude depurarlo

Salu2.
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 18:09.