Foros del Web » Programando para Internet » PHP »

Pasar tabla html a otro archivo

Estas en el tema de Pasar tabla html a otro archivo en el foro de PHP en Foros del Web. Hola a todos, el título no resume lo que quiero hacer, es un poco complicado y creo que me he quedado atascado. El caso es ...
  #1 (permalink)  
Antiguo 12/01/2011, 08:01
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 15 años, 10 meses
Puntos: 0
Pasar tabla html a otro archivo

Hola a todos, el título no resume lo que quiero hacer, es un poco complicado y creo que me he quedado atascado.

El caso es que estoy haciendo una web en la que el usuario tiene que crear un excel mediante la web entre otras cosas.

Después de buscar bastante encontré un plugin en jQuery muy bueno: jQuery.Sheet que hace exactamente lo que quiero.

El problema es que a la hora de guardar la tabla, mm ¿como lo hago?

La tabla la muestro mediante un dialog del jQuery UI al que le agrego dos botones, uno de cancelar que lo único que hace es cerrar la ventana modal y otro de guardar al cual le aplico una función. Dentro del dialogo es un div con un iframe a la página html con el plugin del excel. Hasta aquí todo funciona perfecto.

En la función del botón guardar saco el html de la tabla, pero... ¿como la envió por POST o GET ya que excede la longitud de caracteres permitidos? Bueno, se me ocurrió hacer crear una array dividiendo el código html que obtengo en líneas mediante un simple '.split("\n");'. Después hago un bucle y cada vez envió una linea al php que se encarga de ir anexando las lineas al archivo que quiero que me genere, pero no queda bien la tabla, no se si es por codificación o por algo, pero la tabla no se ve correctamente.

Y la que quiero hacer (que yo pensaba que iba a estar fácil) es pasar la tabla que el usuario hace y edita) a un archivo para después poder crear un pdf con ese archivo.


Éste es el código js:
Código Javascript:
Ver original
  1. jQuery("#add_valoracion").dialog({
  2.                 autoOpen: false,//remove this and the click to aut oopen
  3.                 bgiframe: true,
  4.                 dialogClass: "valor",
  5.                 position: 'top:0',
  6.                 height:1000,
  7.                 width: 1300,
  8.                 modal: true,
  9.                 resizable: false,
  10.                 buttons: {
  11.                     'Cancelar': function() {
  12.                         jQuery(this).dialog('close');
  13.                     },
  14.                     'Guardar': function() {
  15.                         var html_valora = jQuery("#valoracion").contents().find("#jSheetEditPane_0_0").html();
  16.                            
  17.                         jQuery("#valoracion").contents().find("#jSheetEditPane_0_0").table2CSV();
  18.                         var arra = html_valora.split("\n");
  19.                         var num = arra.length;
  20.                         var ref = jQuery("#ref").val();            
  21.                         for (i=0; i < num; i++) {
  22.                             tex = arra[i];
  23.                             agrega(i, ref, tex);               
  24.                         }      
  25.                         jQuery(this).dialog('close');
  26.                     }
  27.                 },
  28.                 open: function(event, ui) {
  29.                
  30.                     $('.valor').css('top', 20);
  31.                 }
  32.             });
  33.            
  34.             function agrega(i, ref,tex){
  35.             var url = "include/valoracion.php";
  36.                         $.ajax({
  37.                             type: "POST",
  38.                             url: url,
  39.                             data: "ref="+ref+"&html="+escape(tex),
  40.                             success: function(msg){        
  41.                             },
  42.                             error: function(msg){
  43.                                 alert(msg);
  44.                             }
  45.                         });
  46.             }

Y este es el código de la página valoracion.php:

Código PHP:
Ver original
  1. <?php
  2. $ref =$_POST["ref"];
  3. $contenido = $_POST["html"];
  4. $contenido = stripslashes($contenido);
  5. $contenido = utf8_encode($contenido);
  6. $myFile = "../archivos/".$ref."/valoracion.html";
  7. $fh = fopen($myFile, 'a') or die("can't open file");
  8. fwrite($fh, $contenido);
  9. fclose($fh);
  10. ?>

Se que es bastante complicado pero haber si entre todos sale una forma de hacerlo.

Gracias por la atención,

Eric
  #2 (permalink)  
Antiguo 12/01/2011, 08:12
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Pasar tabla html a otro archivo

Que tal krato, no podes pasar la info a json(utilizando $().sheetInstance.exportSheet.json() ) y luego enviarla por ajax ?

Saludos.
  #3 (permalink)  
Antiguo 12/01/2011, 13:08
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Pasar tabla html a otro archivo

Gracias por contestar.

Podría hacer eso, pero el problema es que tendría que volver a crear la tabla, ya que lo qe quiero es copiar la tabla que está haciendo el cliente y después imprimirla en pdf, es por eso el problema.

El cliente rellena unos formularios, añade imágenes, etc y finalmente una valoración en excel mediante tablas, y es eso lo que no consigo hacer.

Y ahora que parecía que por fin había conseguido hacerlo mediante web, ahora no consigo guardar la tabla.

Haber si se nos ocurre otra forma...

Gracias.
  #4 (permalink)  
Antiguo 12/01/2011, 13:34
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Pasar tabla html a otro archivo

Otra opción seria separar el html en partes de X tamaño y crear un poll de request's e ir guardando en session, el ultimo request podria enviar un "END_POLL" y ahi rearmar el html(un simple implode bastaria) con lo que esta en session, igualmente creo que la mejor opción seria enviar los datos en json y rearmar la tabla.
  #5 (permalink)  
Antiguo 12/01/2011, 13:39
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Pasar tabla html a otro archivo

Probaré haber y te comento.

Muchas gracias de nuevo. :D
  #6 (permalink)  
Antiguo 13/01/2011, 03:51
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Pasar tabla html a otro archivo

Bueno, escribo de nuevo porque ya lo he resuelto y haber si a otro le puede valer la opción:

Código Javascript:
Ver original
  1. jQuery("#add_valoracion").dialog({
  2.                 autoOpen: false,//remove this and the click to aut oopen
  3.                 bgiframe: true,
  4.                 dialogClass: "valor",
  5.                 position: 'top:0',
  6.                 height:1000,
  7.                 width: 1300,
  8.                 modal: true,
  9.                 resizable: false,
  10.                 buttons: {
  11.                     'Cancelar': function() {
  12.                         jQuery(this).dialog('close');
  13.                     },
  14.                     'Guardar': function() {
  15.                         var html_valora = jQuery("#valoracion").contents().find("#jSheetEditPane_0_0").html();
  16.                        
  17.                         var s = "";
  18.                         jQuery(html_valora).each(function() {
  19.                             s +=  compacta(this);
  20.                             s = unescape(s);
  21.                         });
  22.                        
  23.                         var arra = s.split("\n");
  24.                         var num = arra.length;
  25.                         var ref = jQuery("#ref").val();            
  26.                         for (i=0; i < num; i++) {
  27.                             tex = arra[i];
  28.                             agrega(i, ref, tex);               
  29.                         }      
  30.                         jQuery(this).dialog('close');
  31.                     }
  32.                 },
  33.                 open: function(event, ui) {
  34.                
  35.                     $('.valor').css('top', 20);
  36.                 }
  37.             });
  38.            
  39.             function agrega(i, ref,tex){
  40.             var url = "include/valoracion.php";
  41.                         $.ajax({
  42.                             type: "POST",
  43.                             url: url,
  44.                             data: "ref="+ref+"&html="+escape(tex),
  45.                             success: function(msg){        
  46.                             },
  47.                             error: function(msg){
  48.                                 alert(msg);
  49.                             }
  50.                         });
  51.             }
  52.            
  53.            
  54.             function compacta(node) {
  55.                 var result = "";
  56.                 if (node.nodeType == 1) {
  57.                     result += "<" + node.tagName;
  58.                     hasClass = false;
  59.                    
  60.                     var n = node.attributes.length;
  61.                     for (var i = 0, hasClass = false; i < n; i++) {
  62.                         var key = node.attributes[i].name;
  63.                         var val = node.getAttribute(key);
  64.                         if (val) {
  65.                             if (key == "contentEditable" && val == "inherit") {
  66.                                 continue;
  67.                                 // IE hack.
  68.                             }
  69.                             if (key == "class") {
  70.                                 hasClass = true;
  71.                             }
  72.                            
  73.                             if (typeof(val) == "string") {
  74.                                 result += " " + key + '="' + val.replace(/"/g, "'") + '"';
  75.                             } else if (key == "style" && val.cssText) {
  76.                                 result += ' style="' + val.cssText + '"';
  77.                             }
  78.                         }
  79.                     }
  80.  
  81.                     if (node.tagName == "COL") {
  82.                         result += '/>';
  83.                     } else {
  84.                         result += ">";
  85.                         var childResult = "";
  86.                         jQuery(node.childNodes).each(function() {
  87.                             childResult += HTMLtoCompactSource(this);
  88.                         });
  89.                         result += childResult;
  90.                         result += "</" + node.tagName + ">";
  91.                     }
  92.                 } else if (node.nodeType == 3) {
  93.                     result += node.data.replace(/^\s*(.*)\s*$/g, "$1");
  94.                 }
  95.                 return result;
  96.             }

y el siguiente php:

Código PHP:
Ver original
  1. <?php
  2. $ref =$_POST["ref"];
  3. $contenido = $_POST["html"];
  4. $contenido = stripslashes($contenido);
  5. $contenido = str_replace("%u20AC","€",$contenido);
  6. $myFile = "../archivos/".$ref."/valoracion.html";
  7. $fh = fopen($myFile, 'a') or die("can't open file");
  8. fwrite($fh, $contenido);
  9. fclose($fh);
  10. ?>

Al final lo que he hecho es recorrer el html de la tabla y parsearlo de manera correcta. Y la verdad queda de lujo!

Lo dicho espero que ha alguien le valga.

Un saludo y gracias por las contestaciones masterpuppet

Eric

Etiquetas: html, pasar, tablas
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 15:27.