Foros del Web » Programando para Internet » Javascript »

popup dentro de una sentencia php

Estas en el tema de popup dentro de una sentencia php en el foro de Javascript en Foros del Web. Hola amigos! recurro a este sector para ver qué puede estar pasando en mi código que no realiza la acción que le pido. Tengo un ...
  #1 (permalink)  
Antiguo 03/06/2010, 15:21
Avatar de kmzero  
Fecha de Ingreso: octubre-2008
Mensajes: 43
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación popup dentro de una sentencia php

Hola amigos!
recurro a este sector para ver qué puede estar pasando en mi código que no realiza la acción que le pido.

Tengo un php con un js definido así

header:
Código HTML:
<script language="JavaScript" type="text/javascript">
<!-- 
function PopWindow(id)
  
      {
  idenviar = id.value;
  window.open('detalle.php?id='+idenviar.value,'width=250,height=250,menubar=no,scrollbars=no,toolbar=no,location=yes,directories=no,resizable=no,top=0,left=0');


       }
 --> 

y la sentencia php en el body armada de la siguiente manera:

Código PHP:
<?
{
               echo 
'<td><a href="javascript:PopWindow('.$row['Id'].')">Más detalles</a></td>';
                      
               }
?>
Por si no se entiende porque el código está extractado, básicamente quiero controlar con js que la ventana que abra la sentencia echo sea como popup, como establezco llamando la función PopWindow (). Como la página que abre es un php también, con cierta información, indico también que la envie la variable que está leyendo el php original.

Se entiende? alguien puede ayudar?
muchas gracias
  #2 (permalink)  
Antiguo 03/06/2010, 15:58
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: popup dentro de una sentencia php

Hola

Aquí te sobre el value

Cita:
idenviar = id;
window.open('detalle.php?id='+idenviar
Así que podrías hacer
Cita:
window.open('detalle.php?id='+id,'width=250,height=250,menubar=no,scrollbars=no,to olbar=no,location=yes,directories=no,resizable=no, top=0,left=0');
Por lo demás todo parece estar bien

Edito: Como dice @ZK falta el segundo parámetro.
@ZK, $row['Id'] trae el valor de un registro de la bd

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 03/06/2010 a las 16:08
  #3 (permalink)  
Antiguo 03/06/2010, 16:00
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: popup dentro de una sentencia php

primero, open admite tres parametros en este orden: url, nombre, opciones. fijate que en tu codigo las opciones las estas pasando como segundo parametro de open en lugar de tercer parametro. tienes que hacer una de dos, asignale un nombre al popup o le pasas un string vacio en el segundo parametro. por otro lado no entiendo que tipo de valor es $row['Id']. si es un string para javascript tienes que encerrar ese string en comillas para que javascript lo pueda recibir como string, de lo contrario lo entiende como una variable. si es el caso de que es una variable ya existente en javascript, entonces no hay problema especificamente en esa parte. pero entonces, fijate que cuando concatenas la variable idenviar con la URL, estas intentando leer la propiedad value el cual no es una propiedad de los strings. simplemente tienes que concatenar idenviar con la URL sin leer la propiedad value.
Código:
window.open('detalle.php?id='+idenviar.value ...
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 03/06/2010, 17:46
Avatar de kmzero  
Fecha de Ingreso: octubre-2008
Mensajes: 43
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: popup dentro de una sentencia php

Bueno, así me queda,
Código HTML:
<script language="JavaScript" type="text/javascript">
<!-- 
function PopWindow(id)
  
      {
 var propiedades:   width=250
                               height=250
			       menubar=no
			       scrollbars=no
			       toolbar=no
			       location=yes
			       directories=no
			       resizable=no
			       top=200
			       left=200;
  
window.open('detalles.php?id=','', propiedades);
		 }	-->
</script> 
La url es siempre detalles.php, pero dependiendo de la búsqueda, será diferente el dato, por eso envío el id.
Pero sigue sin aparecer el popup. Es a eso a lo que se referían?
  #5 (permalink)  
Antiguo 03/06/2010, 19:44
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: popup dentro de una sentencia php

mira el ejemplo de Adler... es justamente como lo tienes que hacer salvo que el segundo parametro de open no son las opciones. si aun asi no te funciona, ¿sera que el navegador te esta bloqueando los popups?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 04/06/2010, 12:45
Avatar de kmzero  
Fecha de Ingreso: octubre-2008
Mensajes: 43
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: popup dentro de una sentencia php

Bueno, ¡¡¡¡ya casi lo tenemos!!!!
Ayer casi me caigo de la alegría cuando abrió el popup!....pensé que estaba, pero aún falta un detalle:
Los datos que me da el detalle.php es el de TODOS, y no el de la Id especificada.

Aquí el código de ayer corregido: agregué la segunda variable y ahí va:
Código HTML:
<script language="JavaScript" type="text/javascript">
function Open(Id)
      {
  			       
window.open(detalles.php?Id=+Id','','width=350,height=350, 

menubar=no,scrollbars=no,toolbar=no,directories=no, 

resizable=no,top=200,left=200');
}

</script> 
Body:
Código PHP:
<?php
echo '<td><a href="javascript:Open('.$row['Id'].')">M&aacute;s Detalles...</a></td>';
?>
¿Por qué no toma la variable Id que recoge el mismo documento en la búsqueda?
Para que ayude a pensar, el detalles.php obtiene el Id así:
Código PHP:
<?php

if ($_GET['Id'])
{
    
$con=mysql_connect("localhost","usuario","pass");
    
//Consulta
    
$sql "SELECT * FROM Mitabla WHERE Id = ".$_GET['Id'];
    
mysql_select_db("Mibase"$con);
    
$result mysql_query($sql$con);
?>
Gracias!
  #7 (permalink)  
Antiguo 04/06/2010, 12:54
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: popup dentro de una sentencia php

no se si es que lo tienes exactamente asi o si lo has divido por comodidad en el foro. pero en tu funcion Open, fijate que tienes un string de multiples lineas, me refiero al tercer parametro de window.open. en javascript, no se puede hacer asi sin mas porque de lo contrario obtienes error de string sin terminar. tienes que ponerlo todo en una sola linea o al final de cada linea del string le introduces una barra invertida (\).

segundo, fijate el primer parametro de window.open no es un string bien formado. es decir, te falto una comilla simple. por otro lado, no estas concatenando correctamente la url con la variable. de nuevo, fijate en el ejemplo de Adler en como ha hecho esa parte.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 04/06/2010, 16:15
Avatar de kmzero  
Fecha de Ingreso: octubre-2008
Mensajes: 43
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: popup dentro de una sentencia php

De nuevo gracias zerokilled y adler:

Cita:
por otro lado, no estas concatenando correctamente la url con la variable
Esto es lo que no logro comprenderte: ya corregí la comilla que se me había olvidado, la línea está bien en mi php, toda entera. Pero ahora en vez de mostrarme el Id que corresponde, no muestra nada.
así queda:
Código HTML:
<script language="JavaScript" type="text/javascript">
<!--
function Open(Id)
      {
  			      
window.open('detalles.php?id='+Id,'','width=250,height=250,menubar=no,scrollbars=no,toolbar=no,location=yes,directories=no,resizable=no, top=0,left=0');
}
-->
</script> 
  #9 (permalink)  
Antiguo 04/06/2010, 16:48
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: popup dentro de una sentencia php

mientras Id corresponda a un string en javascript, no le encuentro nada mal. por otro lado -como ya te habia mencionado antes- verifica que el navegador no este bloqueando los popups.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #10 (permalink)  
Antiguo 05/06/2010, 04:11
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: popup dentro de una sentencia php

Hola

No te muestra nada por que fíjate como recoges la variable

Cita:
if ($_GET['Id'])
y ahora fíjate como la envías

Cita:
window.open('detalles.php?id='+Id
¿Ves cual es el problema?

Acostumbrate a recoger variables, campos, etc con isset

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 05/06/2010, 12:19
Avatar de kmzero  
Fecha de Ingreso: octubre-2008
Mensajes: 43
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: popup dentro de una sentencia php



Gracias Amigos!!!!!
Finalmente el problema estaba en cómo recogía la variable, en mi página detalles.php
Seguí las recomendaciones de Adler y se puede ver el código completito () en el foro de php [URL="http://www.forosdelweb.com/f18/pop-up-php-tras-consulta-mysql-812470/#post3428802"]aquí[/URL]

El script no tenía errores
Les agradezco muchísimo de nuevo por haberme ayudado a desarrollarlo.!!!!
(ya se puede cerrar el tema)

Etiquetas: php, popup
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 03:46.