Foros del Web » Programando para Internet » PHP »

Imprimir HTMl de manera ordenada?

Estas en el tema de Imprimir HTMl de manera ordenada? en el foro de PHP en Foros del Web. Que tal amigos del foro del web, tengo una duda hice una funcion para mi fw el cual solo le pases 3 parametros un array ...
  #1 (permalink)  
Antiguo 31/05/2010, 09:10
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Imprimir HTMl de manera ordenada?

Que tal amigos del foro del web, tengo una duda hice una funcion para mi fw el cual solo le pases 3 parametros un array de titulos, el otro un query y el tercero el nombre de una clase, la cual el query es importante no mas.... ok mi duda es funciona todo bien pero al momento de generar la tabla imprime todo lineal, quisiera saber como hacer para dejar un salto de linea

Pruebo con \n, pero no funciona..... el codigo html lo parsea de la siguiente manera:

Código HTML:
Ver original
  1. <table border="1" id="tbMensajes" class="tbMensajes"><th id="th" class="th0">id usuario</th><th id="th" class="th1">id mensaje</th>
  2. <tr><td id="td" class="td0">3</td><td id="td" class="td1">14</td></tr>
  3.  
  4. <tr><td id="td" class="td0">3</td><td id="td" class="td1">13</td></tr>
  5.  
  6. <tr><td id="td" class="td0">3</td><td id="td" class="td1">6</td></tr>
  7.  
  8. <tr><td id="td" class="td0">4</td><td id="td" class="td1">5</td></tr>
  9.  
  10. <tr><td id="td" class="td0">0</td><td id="td" class="td1">4</td></tr>
  11.  
  12. <tr><td id="td" class="td0">6</td><td id="td" class="td1">3</td></tr>
  13.  
  14. <tr><td id="td" class="td0">4</td><td id="td" class="td1">2</td></tr>
  15.  
  16. <tr><td id="td" class="td0">3</td><td id="td" class="td1">1</td></tr>

Me gustaria poder ordenarlo, asi que necesito saber como hacer salto de linea, ah y tambien como haria para correr a la derecha espacios en blanco ?
  #2 (permalink)  
Antiguo 31/05/2010, 09:31
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Respuesta: Imprimir HTMl de manera ordenada?

Holas, probaste con <br />...
Y como lo llenas?

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 31/05/2010, 09:34
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Imprimir HTMl de manera ordenada?

Hola, me refiero que el codigo HTML al dar click derecho en la pagina y ver codigo de fuente se ve desordenado, justamente yo quiero ordenar eso.

Ya que la tabla en si, si esta ordenada al mostrarse
  #4 (permalink)  
Antiguo 31/05/2010, 09:39
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Respuesta: Imprimir HTMl de manera ordenada?

Lo se... pero para eso debemos tener en cuenta como estas llenando esa tabla...

Puede ser incluso que el codigo javascript que genera la tabla este definido para crearla asi.

Saludos
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 31/05/2010, 09:40
Avatar de Sommy  
Fecha de Ingreso: septiembre-2008
Mensajes: 228
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Imprimir HTMl de manera ordenada?

Es un grave error escribir HTML con PHP, lo que se llama "Hardcodear". Lo que tenes que hacer es cerrar tus tags de php y escribir el html puro... por ejemplo...

Código PHP:
<?php
foreach($row AS $item)
{
?>
<tr>
    <td><?php echo $item?></td>
</tr>
<?php
}
?>
Esto deberia resolver tu problema, hace el codigo limpio y si algun dia otro programado tiene que agarrar tu codigo para modificar algo no se acordara de tu familia.

Saludos!
__________________
Si aún lo llevas, dejalo...
Programador PHP argentina
  #6 (permalink)  
Antiguo 31/05/2010, 09:43
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Imprimir HTMl de manera ordenada?

ok colega, de esa manera tambien puedo guardar en variables el contenido no ? porque es un valor que se retorna, no que imprime directamente...


Código PHP:
Ver original
  1. <?php
  2. require_once("sympla.class.php");
  3. class Tablas extends Sympla
  4. {
  5.     //Metodo para tablas con conexiones a DB, falta crear paginacion
  6.     public function tbConectado($nombres="",$query="",$class="")
  7.     {
  8.         if(@mysql_fetch_array($query))
  9.         {
  10.             $tbinicio = '<table border="1" id="'.$class.'" class="'.$class.'">';
  11.             $tbfin = '</table>';
  12.            
  13.             while($r = @mysql_fetch_row($query))
  14.             {
  15.                 for($i=0;$i<=count($r)-1;$i++)
  16.                 {
  17.                     $td.='<td id="td" class="td'.$i.'">'.$r[$i].'</td>';
  18.                 }
  19.                 if($i<=count($r))
  20.                 {
  21.                     $tr.="\n<tr>$td</tr>\n";
  22.                     $i=0;
  23.                     unset($td);
  24.                 }
  25.                 $a = count($r);
  26.             }
  27.             $a;
  28.             for($i=0;$i<=$a-1;$i++)
  29.             {
  30.                 $th.='<th id="th" class="th'.$i.'">'.$nombres[$i].'</th>';
  31.             }
  32.            
  33.             return $tbinicio.$th.$tr.$tbfin;
  34.         }else
  35.         {
  36.             //Cargar los mensajes para el log
  37.             require_once("log/logs.messages.php");
  38.             $this->logError($reporte[4]);
  39.             return "<strong>".$this->getNombre().":</strong> $tabla[0] <i>".__FUNCTION__."()</i>";
  40.         }
  41.     }
  42. }
  43. ?>
  #7 (permalink)  
Antiguo 31/05/2010, 09:56
Avatar de Sommy  
Fecha de Ingreso: septiembre-2008
Mensajes: 228
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Imprimir HTMl de manera ordenada?

A que lio... ese codigo es lo que llamamos una "ensalada de frutas". La mejor opcion es la de Marvin, poner \n luego de los </tr>... No te funcionan? Si agregas los <br> funcionara, pero estaria mal parseado el html... no puede ir un <br> luego de un </tr>
__________________
Si aún lo llevas, dejalo...
Programador PHP argentina
  #8 (permalink)  
Antiguo 31/05/2010, 11:07
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Imprimir HTMl de manera ordenada?

xD, si pues por que poner un br dentro de un td, no es lo correcto en realida el codigo funciona bien.... el problema es que al momento de ver la fuente me gustaria que se viera ordenado..

Saludos
  #9 (permalink)  
Antiguo 31/05/2010, 11:43
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Respuesta: Imprimir HTMl de manera ordenada?

Waa igual no mas prefiero leer un codigo asi:
Código PHP:
        function generateTable($nFile,$arreglo){
            
header("Content-type: application/vnd.ms-excel");
            
header("Content-Disposition: filename=\"$nFile.xls\";");
            
$table '<table>
            <tr>
                <td>ID</td>
                <td>Rut</td>
                <td>Nombre</td>
                <td>Sexo</td>
                <td>Direccion</td>
                <td>Telefono</td>
                <td>Celular</td>
                <td>Mail</td>
                <td>Fecha de Nacimiento</td>
                <td>Estado</td>
                <td>Unidad</td>
            </tr>'
;
            
$numArr count($arreglo);
            for(
$p=0;$p<$numArr;$p++){
                
$table .= '
            <tr>
                <td>'
.utf8_decode($arreglo[$p]['com_id']).'</td>
                <td>'
.utf8_decode($arreglo[$p]['com_rut']).'</td>
                <td>'
.utf8_decode($arreglo[$p]['com_nombre']).'</td>
                <td>'
.utf8_decode($arreglo[$p]['com_sexo']).'</td>
                <td>'
.utf8_decode($arreglo[$p]['com_direccion']).'</td>
                <td>'
.utf8_decode($arreglo[$p]['com_telefono']).'</td>
                <td>'
.utf8_decode($arreglo[$p]['com_celular']).'</td>
                <td>'
.utf8_decode($arreglo[$p]['com_mail']).'</td>
                <td>'
.utf8_decode($arreglo[$p]['com_fecha_nacimiento']).'</td>
                <td>'
.$arreglo[$p]['com_estado'].'</td>
                <td>'
.$arreglo[$p]['uni_id'].'</td>
            </tr>'
;
            }
            
$table .= '
            </table>'
;
            print 
$table;
        } 
Que asi:
Código PHP:
        <?php
        
function generateTable($nFile,$arreglo){
            
header("Content-type: application/vnd.ms-excel");
            
header("Content-Disposition: filename=\"$nFile.xls\";");
        
?>
            <table>
            <tr>
                <td>ID</td>
                <td>Rut</td>
                <td>Nombre</td>
                <td>Sexo</td>
                <td>Direccion</td>
                <td>Telefono</td>
                <td>Celular</td>
                <td>Mail</td>
                <td>Fecha de Nacimiento</td>
                <td>Estado</td>
                <td>Unidad</td>
            </tr>
        <?php
            $numArr 
count($arreglo);
            for(
$p=0;$p<$numArr;$p++){
        
?>
            <tr>
                <td><?php echo utf8_decode($arreglo[$p]['com_id']); ?></td>
                <td><?php echo utf8_decode($arreglo[$p]['com_rut']); ?></td>
                <td><?php echo utf8_decode($arreglo[$p]['com_nombre']); ?></td>
                <td><?php echo utf8_decode($arreglo[$p]['com_sexo']); ?></td>
                <td><?php echo utf8_decode($arreglo[$p]['com_direccion']); ?></td>
                <td><?php echo utf8_decode($arreglo[$p]['com_telefono']); ?></td>
                <td><?php echo utf8_decode($arreglo[$p]['com_celular']); ?></td>
                <td><?php echo utf8_decode($arreglo[$p]['com_mail']); ?></td>
                <td><?php echo utf8_decode($arreglo[$p]['com_fecha_nacimiento']); ?></td>
                <td><?php echo $arreglo[$p]['com_estado']; ?></td>
                <td><?php echo $arreglo[$p]['uni_id']; ?></td>
            </tr>
        <?php
            
}
        
?>
            </table>
        <?php
        
}
        
?>
No va a ser lo correcto pero depende de como este programado... e independiente del lenguaje en que este programado debes tener en cuenta como te gusta ver a ti las paginas.

En lo personal siempre trabajo con el html dentro del php por si necesito cargar algunas funciones en ajax o javascript que se necesiten luego de cargar el html y porque me es mucho mas facil leer como dije recien.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #10 (permalink)  
Antiguo 31/05/2010, 12:27
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Imprimir HTMl de manera ordenada?

gracias colega, si es por eso que cargo mi html dentro de las funciones ya que genera cualquiera tabla en cualquier tamaño con sus columnas respectivas y titulos en base al query enviado, con sus clases tambien xD y funciona muy bien me gusta como quedo la funcion solo que me gustaria que se viera ordenadito al dar click derecho en el navegador y ver codigo de fuente.
  #11 (permalink)  
Antiguo 31/05/2010, 12:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Imprimir HTMl de manera ordenada?

El HTML se esta mostrando de acuerdo a lo que pusiste:

SALTO_DE_LINEA <tr><tds...></tr> SALTO DE LINEA

Supongo que lo que quieres es algo asi:
Código HTML:
Ver original
  1. <table border="1" id="tbMensajes" class="tbMensajes">
  2. <th id="th" class="th0">id usuario</th>
  3. <th id="th" class="th1">id mensaje</th>
  4. <tr>
  5.     <td id="td" class="td0">3</td>
  6.     <td id="td" class="td1">14</td>
  7. </tr>

Para eso, necesitas insertar un salto de linea "\n" al final de cada etiqueta y, para los espacios a la izquierda, inserta al principio de cada linea un tabulador "\t" o mas, de acuerdo a como quieras armar tu HTML final.
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 31/05/2010, 12:43
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Imprimir HTMl de manera ordenada?

colega pero cuando hago eso, no funciona y msa bien imprime el salto de linea

Código PHP:
Ver original
  1. $tr.="<tr>$td</tr>\n";
  #13 (permalink)  
Antiguo 31/05/2010, 12:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Imprimir HTMl de manera ordenada?

A ver... mira, seria algo como:

Código PHP:
Ver original
  1. $tabla = "<table class=\"tabla\">\n";
  2. $tabla .= "<tr>\n";
  3. // Usa \t al principio para sangria izquierda
  4. $tabla .= "\t<td>Contenido de la celda</td>\n";
  5. $tabla .= "\t<td>Contenido de la celda</td>\n";
  6. $tabla .= "</tr>\n";
  7. $tabla .= "</table>\n";

Cuando dices que te imprime el salto de linea.... te refieres a que aparecen directamente los \n ?
__________________
- León, Guanajuato
- GV-Foto
  #14 (permalink)  
Antiguo 31/05/2010, 13:11
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Respuesta: Imprimir HTMl de manera ordenada?

Trata reemplazando con esto:
Código PHP:
<?php
    
require_once("sympla.class.php");
    class 
Tablas extends Sympla{
        
//Metodo para tablas con conexiones a DB, falta crear paginacion
        
public function tbConectado($nombres="",$query="",$class=""){
            if(@
mysql_fetch_array($query)){
                
$tbinicio '
<table border="1" id="'
.$class.'" class="'.$class.'">';
                
$tbfin '
</table>'
;
                while(
$r = @mysql_fetch_row($query)){
                    for(
$i=0;$i<=count($r)-1;$i++){
                        
$td.='
    <td id="td" class="td'
.$i.'">'.$r[$i].'</td>';
                    }
                    if(
$i<=count($r)){
                        
$tr.="
<tr>
    $td
</tr>"
;
                        
$i=0;
                        unset(
$td);
                    }
                    
$a count($r);
                }
                
$a;
                for(
$i=0;$i<=$a-1;$i++){
                    
$th.='
    <th id="th" class="th'
.$i.'">'.$nombres[$i].'</th>';
                }
                return 
$tbinicio.$th.$tr.$tbfin;
            }else{
                
//Cargar los mensajes para el log
                
require_once("log/logs.messages.php");
                
$this->logError($reporte[4]);
                return 
"<strong>".$this->getNombre().":</strong> $tabla[0] <i>".__FUNCTION__."()</i>";
            }
        }
    }
?>
Si te fijas en el codigo lo que hice fue poner las tablas de manera que cada <table> y <tr> quedaran en la misma tabulacion y los <td> un tab mas adentro.

Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #15 (permalink)  
Antiguo 31/05/2010, 13:52
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Imprimir HTMl de manera ordenada?

Gracias Marvin, salio ordenadito ... aunque en la clase se ve recontraaa feooo xDD el que quisiera meter mano, se va a loquear

Código HTML:
Ver original
  1. <table border="1" id="tbUsuarios" class="tbUsuarios">
  2.   <th id="th" class="th0">correo electronico</th>
  3.   <th id="th" class="th1">nombre del usuario</th>
  4.   <tr>
  5.     <td id="td" class="td0">[email protected]</td>
  6.     <td id="td" class="td1">Nuria </td>
  7.   </tr>
  8.  
  9.   <tr>
  10.     <td id="td" class="td0">[email protected]</td>
  11.     <td id="td" class="td1">angel</td>
  12.   </tr>
  13.   <tr>
  14.     <td id="td" class="td0">[email protected]</td>
  15.     <td id="td" class="td1">diego</td>
  16.  
  17.   </tr>
  18.   <tr>
  19.     <td id="td" class="td0">[email protected]</td>
  20.     <td id="td" class="td1">marvin</td>
  21.   </tr>
  22.   <tr>
  23.     <td id="td" class="td0">[email protected]</td>
  24.  
  25.     <td id="td" class="td1">patrick</td>
  26.   </tr>
  #16 (permalink)  
Antiguo 31/05/2010, 14:06
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Imprimir HTMl de manera ordenada?

una pregunta, se puede poner el /n y /t sin que impreso en la web ? xq la verdad, como me dio la solucion marvin esta bien, pero no entiendo nada mi clase ya que queda reocntra desordenado
  #17 (permalink)  
Antiguo 31/05/2010, 14:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Imprimir HTMl de manera ordenada?

Los caracteres especiales \n \t \r, etc. solo son interpretados cuando estan encerrados entre comillas dobles:

Código PHP:
Ver original
  1. // Esto no funciona como lo esperas:
  2. echo 'Salto de linea\n';
  3. echo '\tTabulador y salto de linea\n';
  4.  
  5. // Esto si:
  6. echo "Salto de linea\n";
  7. echo "\tTabulador y salto de linea\n";
__________________
- León, Guanajuato
- GV-Foto
  #18 (permalink)  
Antiguo 31/05/2010, 14:47
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Imprimir HTMl de manera ordenada?

Gracias Triby

Etiquetas: html, ordenada
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:55.