Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2011, 08:01
Krato
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 16 años
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