Foros del Web » Programando para Internet » PHP »

Pasar tablas HTML a script PHP

Estas en el tema de Pasar tablas HTML a script PHP en el foro de PHP en Foros del Web. .............
  #1 (permalink)  
Antiguo 15/02/2005, 17:22
 
Fecha de Ingreso: febrero-2005
Mensajes: 5
Antigüedad: 12 años, 10 meses
Puntos: 0
..........

Última edición por orion79; 29/08/2005 a las 01:34
  #2 (permalink)  
Antiguo 15/02/2005, 18:39
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
que tal si pasas el codigo html de la tabla en una variable por medio de la url que usas para abrir el PHP que usa la funcion mail()???
__________________
oohh... quisiera ser godines!!!
  #3 (permalink)  
Antiguo 15/02/2005, 19:23
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
En la parte que le indicas al javascript que pagina queres abrir en el popup pones algo asi:

popup.php?tabla=<table><tr><td>contenido1</td><td>contenido2</td><td>contenido3</td></tr></table>

en el archivo PHP con el formulario guardas esa info en un input invisible... para lo que pones:

<input type="hidden" name="tabla" value="<?=$_GET["tabla"]?>">

y despues en el archivo con el script que manda el mail pones en la parte donde se forma el cuerpo del mensaje pones algo asi:

$mensaje="<html><body>".$_POST["tabla"]."</body></html>";

(usa $_POST["tabla"] si en el formulario usas como metodo de envio post o si usas get usas $_GET["tabla"].)
__________________
oohh... quisiera ser godines!!!
  #4 (permalink)  
Antiguo 15/02/2005, 20:33
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
Cita:
1: Lo que me indicaste funcionaría independientemente de que el formulario no este en PHP?.. es decir, si en lugar de indicar popup.php? como me dijiste, el formulario que aparece en el popup lo estoy llamando de esta manera:
<a href="javascript:ventanaSecundaria('formulario.htm ')">

2: En el caso de que sirva con el formulario en HTML.. dónde debo poner el HTML correspondiente a la tabla? es decir, sería así por ejemplo:
<a href:"javascript:ventanaSecundaria('formulario.htm ') tabla=<table><tr><td>contenido1</td><td>contenido2</td><td>contenido3</td></tr></table>"</a>
La forma correcta de poner eso seria:
<a href:" javascript:ventanaSecundaria('formulario.php?tabla =<table><tr><td>contenido1</td><td>contenido2</td><td>contenido3</td></tr></table>')>Enlace</a>
lo que estas haciendo ahi es abrir la pagina formulario.php y a ella le estas mandando la variable tabla cuyo contenido es "<table>.....".
La pagina donde esta ese link puede ser tanto html como php. Sin embargo la del formulario tiene que ser php para poder tomar esa variable tabla con <?=$_GET["tabla"]?> (GET se llaman las variables que se mandan por la url) ya que html no puede hacerlo y para ello tendrias que recurrir a javascript. Lo que seria solo complicar las cosas, ya que para que esa pagina sea php no tienes mas que cambiarle la extension al archivo de formulario.htm a formulario.php


espero que te hayan quedado un poco mas claro el tema.. sino sigue preguntando
__________________
oohh... quisiera ser godines!!!
  #5 (permalink)  
Antiguo 16/02/2005, 00:00
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
Me alegro de haber sido de ayuda...

Sobre el segundo tema, estuve haciendo unas pruebas y la que primero se me ocurrio (habria que ver si es la mejor) es utilizar una propiedad de javascript llamada innerHTML que devuelve el codigo html dentro de un objeto.
Para ello lo primero que habria que hacer es poner la tabla adentro de una etiqueta DIV a la que le das un id = "tabla".
despues al link lo formamos con lo que teniamos mas el innerHTML del DIV y quedaria algo asi:

<a href="#" onClick="javascript:ventanaSecundaria('formulario. php?tabla=' + document.getElementById('tabla').innerHTML;)">Enla ce</a>

ejemplo:

<div id="tabla">
<table width="450" border="2" cellspacing="0" cellpadding="0">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>dsfds</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>dfdsf</td>
<td>&nbsp;</td>
</tr>
</table>
</div>

<a href="#" onClick="javascript:ventanaSecundaria('formulario. php?tabla=' + document.getElementById('tabla').innerHTML;)">Enla ce</a>

Observaciones: En el explorer funciona bien, pero en el firefox no y creo que es por como se codifican los caracteres al pasarlo por la url en cada uno... habria que averiguar si hay alguna funcion para manejar eso.
__________________
oohh... quisiera ser godines!!!
  #6 (permalink)  
Antiguo 17/02/2005, 00:06
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
hola orion.. el problema que me decis no tiene nada que ver con PHP. Debe ser un problema con el javascript que abre el popup. El hecho que cuando lo apretas vaya a la parte superior de la pagina es porque en el enlace puse href="#" y eso lo que hace es justamente eso, te lleva a la parte superior de la pagina.

Primero ¿que navegador estas usando?.. si es el explorer ¿cuando apretas el link no te aparece abajo a la izquierda como un signo de interrogacion y dice algo como "error en la pagina"? de ser asi hace doble clic ahi y pasame lo que dice...

Lo otro que se me ocurre es que al pasar en la variable tabla comillas dentro del codigo html estas den error en el codigo javascript para abrir el popup, ya que yo a todo lo probe sin la funcion del popup... asi que tambien podrias pasarme eso.
__________________
oohh... quisiera ser godines!!!
  #7 (permalink)  
Antiguo 17/02/2005, 15:42
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
probá poniendo el link asi:

Código PHP:
<a href="#" onClick="javascript:ventanaSecundaria('formrecomendar.php?tabla=' + document.getElementById('tabla').innerHTML)"><img src="../imagenes/homepage/arrobaicono.jpg" width="38" height="35"></a
( fijate que tambien pasa que se separa t abla, tiene que ir junto)

habia un espacio entre formrecomendar.php?tabla y el = que no iba y le saque el ; despues del innerHTML.

Con respecto al dreamweaver no se bien cual es el problema porque yo nunca le configuro el servidor sino que entro directamente por con el explorador, pero obviamente es algun problema de la configuracion del dreamweaver.
__________________
oohh... quisiera ser godines!!!

Última edición por safe; 17/02/2005 a las 15:46
  #8 (permalink)  
Antiguo 17/02/2005, 17:56
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
mmm.. no te confundas.. lo que yo te dije es que no tengo configurado el dreamweaver para poder previsualizar las cosas desde el servidor.
Sino que directamente abro el explorador y escribo http://localhost/misitio/loquesea.php ....
Yo tambien tengo instalado el IIS, PHP y MySQL... no tengo problemas y eso que no toque mucho la configuracion de ninguno.

Por otro lado, la unica diferencia que hace tener instalado esto es poder correr pagina en ASP o PHP. Lo otro (html, jhavascript) se va a seguir viendo exactamente igual. Es por eso que las paginas html no te dan problemas cuando las vez con la direccion C:\Mis Documentos\MisWeb\... mientras que las otras si o si necesitan que las veas con http://localhost/. pero una vez que entras por ahi (por localhost) todos los enlaces se deberian seguir viendo asi. Salvo que por equivocacion o por no conocer bien el dreamweaver los enlaces te esten quedando asi:

<a href="C:\Mis Documentos\MisWeb\website\pagina.html">

de ser asi cambialo para que queden asi:

<a href="pagina.html"> o <a href="algunacarpeta/pagina.html">

¿como te fue con lo otro?
__________________
oohh... quisiera ser godines!!!
  #9 (permalink)  
Antiguo 18/02/2005, 17:55
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
El problea te lo da porque no estas concatenado las variables con las cadenas de texto.... para ellos se pone todo lo que es texto entre comillas y despues los concatenas con un punto... ej: "hola ".$nombredealguien." como estas??"

Por otro lado hay muchas funciones de PHP (creo que mail() es una de ellas) que no pueden usarse despues de que se manda algo al cliente (por ejemplo hacer un echo) por lo que siempre se ponen antes de las etiquetas <html>
Entonces lo tuyo quedaria algo asi:

Código PHP:
<?
$emisor
=$_POST['emisor']." <".$_POST['mailemisor'].">"
$receptor=$_POST['receptor']." <".$_POST['mailreceptor'].">";
$asunto=$emisor." le ha enviado esta publicación de Miweb.com";
$cuerpo"<html><head></head><body> <p align='center'>Mensaje adicional de ".$emisor." <br>".$_POST['mensajeadicional']."</p><br><br><br><p align='center'>".$_POST["tabla"]."</p></body></html>";
$headers="Content-type:text/html\n, FROM: .$emisor;

mail($receptor, $asunto,$cuerpo, $headers);
?>

<!DOCTYPE HTML PUBLIC "
-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<
head>
<
title>recomendarphp</title>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</
head>
<
body>
<?
echo 
"Se ha enviado un e-mail con esta publicación a: ".$receptor."
Gracias por preferir a Miweb.com"
;
?>
</body>
</html>
(lo acabo de retocar aca rapido no lo probe asi que se me puede haber escapado algo)

Por otro lado siempre es recomendable de una vez mandado el mail (o cosas por el estilo) se redirija a otra pagina para dar las gracias y eso... asi evitas que si alguien aprieta actualizar se mande de nuevo el mail..

Para ello tendrias que poner despues de mail(...):

headers("location: gracias.htm");

y en gracias.htm pones el mensaje que quieras...
Por ende todo lo que esta despues de eso lo podes borrar (desde <!DOCTYPE HTML.... hasta </html>)
__________________
oohh... quisiera ser godines!!!
  #10 (permalink)  
Antiguo 20/02/2005, 13:16
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
Podrias fijarte dos cosas: Primero cuando estes en la pagina del formulario que recoje la variable $_GET["tabla"] apreta el boton derecho, elegi "ver codigo fuente" y ahi busca el campo del formulario que deberia quedar algo asi:

<input type="hidden" name="tabla" value="<table><tr>........</table>"> ....

si en value="" no sale nada es que no se esta recogiendo bien la variable. De ser asi en el archivo que mandar el mail, comenta la la funcion mail() y hace un echo de la variable que tiene el cuerpo del mensaje.

EJ:

Código PHP:
<?
$emisor
=$_POST['emisor']." <".$_POST['mailemisor'].">";
$receptor=$_POST['receptor']." <".$_POST['mailreceptor'].">";
$asunto=$emisor." le ha enviado esta publicación de Miweb.com";
$cuerpo"<html><head></head><body> <p align='center'>Mensaje adicional de ".$emisor." <br>".$_POST['mensajeadicional']."</p><br><br><br><p align='center'>".$_POST["tabla"]."</p></body></html>";
$headers="Content-type:text/html\n, FROM: ".$emisor;

echo 
$cuerpo;
//mail($receptor, $asunto,$cuerpo, $headers);
?>
Con respecto a lo segundo estas cerca... pero de nuevo no estas concatenando las variables con las cadenas de texto. Te deberia quedar asi:

Código PHP:
headers("location: gracias.php?receptor=".$receptor); 
__________________
oohh... quisiera ser godines!!!

Última edición por safe; 20/02/2005 a las 13:18
  #11 (permalink)  
Antiguo 21/02/2005, 00:34
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
mmmmm.. si ese es todo lo que te aparece en el value debe haber algun tipo de problemas con las comillas del codigo html.. lo unico que se me ocurre por ahora es que en el codigo de la tabla le cambies todas las comillas dobles por comillas simples (o incluso borrarle las comillas).

Proba eso y volve a ver que te aparece en el value del input invisible haber si cambia algo.
__________________
oohh... quisiera ser godines!!!
  #12 (permalink)  
Antiguo 21/02/2005, 14:02
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
proba con algo asi:

en la funcion que te abre el popup agregale:

Código PHP:
URL URL.replace("#",":numeral:");

//osea que te quedaria asi:

<script language=javascript>
function 
ventanaSecundaria (URL){
URL URL.replace("#",":numeral:");
window.open(URL,"ventanita","scrollbars=NO, resizable=NO, width=281, height=392, top=150, left=350")
}
</script> 
y despues cuando vas a agarrar la variable en el campo invisible pone asi:

Código PHP:
<?
$tabla 
str_replace(':numeral:''#'$_GET["tabla"]);
$tabla str_replace('\"'''$tabla);
$tabla str_replace('\\'''$tabla);
?>
<input type="hidden" name="tabla" value="<?=$tabla?>">
probalo y decime como te fue.
__________________
oohh... quisiera ser godines!!!
  #13 (permalink)  
Antiguo 22/02/2005, 18:10
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
La verdad no tenia ni idea que el replace de javascript sea tan malo ... el de PHP te cambia todos.

Bueno despues de investigar llegue a la conclusion de que esto tiene que funcionar :

a la funcion de la primer pagina pone:

Código PHP:
<script language=javascript>
function 
ventanaSecundaria (URL){
    while (
URL.search("#") != -1) {
        
URL URL.replace("#",":numeral:");
    }
    while (
URL.search("&nbsp;") != -1) {
        
URL URL.replace("&nbsp;",":espacio:");
    }
    while (
URL.search("\"") != -1) {
        
URL URL.replace("\"",":comillas:");
    }

window.open(URL,"ventanita","scrollbars=NO, resizable=NO, width=281, height=392, top=150, left=350")
}
</script> 
en la segunda donde recoges la variable pone
Código PHP:
<?
$tabla 
str_replace(":numeral:""#"$_GET["tabla"]);
$tabla str_replace(":espacio:""&nbsp;"$tabla);
$tabla str_replace(":comillas:""'"$tabla);
?>
<input type="hidden" name="tabla" value="<?=$tabla?>">
y en la que mandas el mail pone:

Código PHP:
 
$tabla 
str_replace("\\"""$_POST["tabla"]);

$cuerpo"<html><head></head><body> <p align='center'>Mensaje adicional de ".$emisor." <br>".$_POST['mensajeadicional']."</p><br><br><br><p align='center'>".$tabla."</p></body></html>";
$headers="Content-type:text/html\n, FROM: ".$emisor

//acordate que la variable cuerpo yo no la tengo igual que vos, o no estoy seguro... asi que lo que tenes que hacer es agregar la primer linea ($tabla =$_P.....) y en la variable cuerpo cambiar $_POST["tabla"] por $tabla 
__________________
oohh... quisiera ser godines!!!
  #14 (permalink)  
Antiguo 22/02/2005, 22:04
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
mira, ahi lo que esta haciendo dreamweaver es crear una clase CSS con las caracteristicas que me decis (12pixels, color blanco, fuente Arial) en el documento y/o en un archivo .css aparte y despues aplica esa clase en la etiqueta div. Pero esta no incluye el formato sino que hace referencia a la clase que esta separada.
Lo que deberias hacer seria aplicar el estilo directamente a la celda:

Osea tendrias que cambiar las cosas para que figuran asi:

<td width="12%" bgcolor="#000000"><span class="style39">MARCA:</span></td>

por algo como esto:

<td width="12%" bgcolor="#000000" style=" font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#FFFFFF">MARCA:</td>

Eso seria para todo donde figure -> class="style39" ... y para los que diga class="styleOTRONUMERO" deberias figarte que caracteristicas tiene esa clase y crear el -> style="" para aplicarselo a la celda.
Con eso te aseguras qwue todo texto que haya adentro de esa celda se vea como vos queres.
__________________
oohh... quisiera ser godines!!!
  #15 (permalink)  
Antiguo 23/02/2005, 00:20
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
Es que si lo pones com te dije yo no importa si borra todo, un poquito o nada... cuando vuelva a escribir la palabra va a tener el formato que vos le asignaste. Es mas para cambiarlo si deberian saber usar el programa.

Lo que pasa es que sino lo usas muy cuidadosamente el dreamweaver para dar formatos mete codigo que no es necesario. Entonces Como el no sabe si las propiedades que vos pones son para el texto o para que, le agrega adentro de la celda un etiqueta del tipo SPAN o DIV y a ella le aplica el estilo. Y ahi si, si borras todo lo que hay adentro se borra esa etiqueta Span o DIV (para que la necesita si ya no hay nada adentro) y por eso se pierde el formato.
En cambio si haces como yo te puse, el formato se lo aplicas a la Celda y le decis "todo el texto que se escriba aca va del tal color y tal tamaño", entonces no importa cuantas veces se borre lo de adentro, siempre que se vuelva a escribiir y mientras no se toque el formato siempre se va a ver igual.

Por lo menos yo lo uso asi y nunca tuve problemas.
__________________
oohh... quisiera ser godines!!!
  #16 (permalink)  
Antiguo 24/02/2005, 14:13
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
despues de leer un poco de info al respecto encontre que el limite del tamaño de las variables del GET es de 2kb y te fijas lo que vos decis que te toma en el campo invisible pesa mas o menos eso.

Asi que hice un par de modificaciones para que la variable se pase por POST que supuestamente no tiene limite:

En la primer pagina hace estos cambios:

la funcion javascript queda asi:
Código PHP:
<script language=javascript>
function 
ventanaSecundaria (URL){
var 
tabla document.getElementById('capacontabla').innerHTML;
while (
tabla.search("\"") != -1) {
    
tabla tabla.replace("\"","'");
}
document.getElementById('tabla').value tabla;
window.open(URL,"ventanita","scrollbars=NO, resizable=NO, width=281, height=392, top=150, left=350");
document.frm.submit();
}
</script> 
al div que lleva la tabla le cambias el nombre por capacontabla:

Código PHP:
<div id="capacontabla"
despues de la capa que lleva lka tabla pones esto:

Código PHP:
<form id="frm" name="frm" action="2.php" method="post" target="ventanita">
<
input type="hidden" id="tabla" name="tabla">
</
form
y el enlace queda asi:

Código PHP:
<a href="#" onClick="javascript: ventanaSecundaria('2.php')"><img src="../imagenes/homepage/arrobaicono.jpg" width="38" height="35"></a
En la segunda:

cambias esto:

Código PHP:
<?
$tabla 
str_replace(":numeral:""#"$_GET["tabla"]);
$tabla str_replace(":espacio:""&nbsp;"$tabla);
$tabla str_replace(":comillas:""'"$tabla);
?>
<input type="hidden" name="tabla" value="<?=$tabla?>">
por esto:
Código PHP:
<input type="hidden" name="tabla" value="<?=$_POST["tabla"]?>">
y en la tercera no cambias nada.
__________________
oohh... quisiera ser godines!!!
  #17 (permalink)  
Antiguo 26/02/2005, 17:14
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
Orion me alegro que el primer problema este solucionado...
Cita:
No hay una algo que yo deteste más que las cosas que hay que aprender de memoria y que no se pueden recordar solo usando la lógica. De verdad, detesto las cosas que para aprenderlas, no lo puedes hacer usando deducciones, sino que tioenes que aprenderlo de memoria, y al parecer... estos lenguajes de programación web hay que apederlos así... de memoria...
No estoy de acuerdo con eso, para mi la programacion es 25% conocer las funciones y como trabaja cada lenguaje y un 75% de logica para deducr cual es la mejor manera de llegar a un resultado deseado utilizando esas funciones.
Pasa que cuando no conoces el lenguaje a fondo la logica no te va a servir de mucho porque por mas que pienses cual deberia ser la mejor forma para hacer algo no tendras las "herramientas" para lograrlo.

Con respecto al problema que me comentas proba poniendo asi:

Código PHP:
header("Location: gracias.php?emisor=".urlencode($emisor)."&receptor=".urlencode($receptor)); 
__________________
oohh... quisiera ser godines!!!
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 19:49.