Wednesday, February 13. 2008
PHP: DOMDocument() - HTML limpio y Bonito...
Wednesday, February 13. 2008
En estos dias he estado haciendo un registro de Cds "donados" para ubuntu-ve... al principio decidi hacerlo de la forma mas rapida (Solo HTML... y php entre lineas usando funciones... muy a lo SASEOMINFRA (En algunas partes...) pero la verdad... vi algo llamado DOMDocument(), ya habia lidiado con esta clase interna de PHP, pero jamas me di cuenta de la potencia... y a la vez poca productividad...
Amenos que te gusten los standares... o que desees ver lo que es un documento HTML bien formado... no te recomiendo que la uses... porque, amenos que sepas "BIEN" como se forma un documento HTML, te va a costar... (ami me costo un poco)... aunque cuando le agarres el truco... ya todo es un tiro al piso...
A grosso modo lo que hice fue "picar" mi HTML en varios trozos...
tengo un archivo "principal.php" que llama a la clase que necesito...
en este caso la clase se llama Contador... y a su vez cuando se accesa
por URL en el caso de esta clase... unicamente puedes "ver", y asi se
muestra el metodo Contador::formularioContador
es decir que accesas asi: http//url-al-proyecto/ver/contador/ y se traduce a
principal.php:
contador.class.inc.php
Contador::ver()
Contador::formularioContador()
Sencillo
verdad?, aqui les dejo el codigo... en lo que lo termine (Solo me
faltan 2 funciones en javascript) publico el proyecto... de cualquier
modo aqui les dejo el codigo que utilizo en la clase Contador
Por razones esteticas, he tenido que cortar el codigo (Se ve feo en mi pantallita), si quieres el codigo fuente completo... haz click aqui
@edit: Acabo de corregir el detallazo con el error 404 que daba... :p
Que lo disfruten! ![]()
public static function formularioContador(){
$documentoHTML = '';
$DOM = new DOMDocument('1.0');
/** Esta es la tabla principal */
$tablaPrincipal = $DOM->createElement('table');
$tablaPrincipal = $DOM->appendChild($tablaPrincipal);
$tablaPrincipal->setAttribute('width', '50%');
$tablaPrincipal->setAttribute('height', '50%');
$tablaPrincipal->setAttribute('id', 'contador');
$tablaPrincipal->setAttribute('align', 'center');
$tablaPrincipal->setAttribute('border', '1px');
/** Esta es la cabecera */
$filaCabecera = $DOM->createElement('tr');
$filaCabecera = $tablaPrincipal->appendChild($filaCabecera);
$filaCabecera->setAttribute('height', '50%');
$filaCabecera->setAttribute('id', 'fila-cabecera');
$filaCabecera->setAttribute('align', 'center');
$filaCabecera->setAttribute('border', '1px');
/** Esta es la celda 0,0 de la cabecera */
$celdaCabecera = $DOM->createElement('td');
$celdaCabecera = $filaCabecera->appendChild($celdaCabecera);
$celdaCabecera->setAttribute('width', '50%');
$celdaCabecera->setAttribute('id', 'celda-cabecera');
$celdaCabecera->setAttribute('name', 'celda de titulo');
$celdaCabecera->setAttribute('align', 'center');
$celdaCabecera->setAttribute('border', '1px');
$celdaCabecera->setAttribute('onclick', '');
/** Juego de registros */
$fieldset = $DOM->createElement('fieldset');
$celdaCabecera->appendChild($fieldset);
$fieldset->setAttribute('id', 'contador');
$leyenda = $DOM->createElement('legend');
$fieldset->appendChild($leyenda);
$leyenda->setAttribute('id', 'leyenda');
$Text = $DOM->createTextNode('Agregar Cds');
$leyenda->appendChild($Text);
/** Tabla para los combos */
$tablaCombos = $DOM->createElement('table');
$tablaCombos->setAttribute('width', '100%');
$tablaCombos->setAttribute('height', '50%');
$tablaCombos->setAttribute('id', 'contador');
$tablaCombos->setAttribute('align', 'center');
$tablaCombos->setAttribute('border', '1px');
$fieldset->appendChild($tablaCombos);
/** Esta es la cabecera */
$filaTablaCombos = $DOM->createElement('tr');
$filaTablaCombos->setAttribute('height', '50%');
$filaTablaCombos->setAttribute('id', 'fila-cabecera');
$filaTablaCombos->setAttribute('align', 'center');
$filaTablaCombos->setAttribute('border', '1px');/** Siempre esta linea hara referencia al padre */
$tablaCombos->appendChild($filaTablaCombos);
/** Esta es la celda 0,0 de la cabecera */
$celdaCabeceraCombos = $DOM->createElement('td');
$celdaCabeceraCombos->setAttribute('width', '30%');
$celdaCabeceraCombos->setAttribute('id', 'celda-cabecera-texto');
$celdaCabeceraCombos->setAttribute('align', 'center');
$celdaCabeceraCombos->setAttribute('border', '1px');
$celdaCabeceraCombos->setAttribute('onclick', '');
$filaTablaCombos->appendChild($celdaCabeceraCombos);
/** No es que el codigo sea largo... pero tuve que eliminar MUCHO */
$filaTablaCombos = $DOM->createElement('tr');
$filaTablaCombos->setAttribute('height', '50%');
$filaTablaCombos->setAttribute('id', 'fila-cabecera');
$filaTablaCombos->setAttribute('align', 'center');
$filaTablaCombos->setAttribute('border', '1px');
$tablaCombos->appendChild($filaTablaCombos);
/** Esta es la celda 0,0 de la cabecera */
$celdaCabeceraCombos = $DOM->createElement('td');
$celdaCabeceraCombos->setAttribute('width', '100%');
$celdaCabeceraCombos->setAttribute('id', 'celda-cabecera-texto');
$celdaCabeceraCombos->setAttribute('align', 'center');
$celdaCabeceraCombos->setAttribute('border', '1px');
$celdaCabeceraCombos->setAttribute('colspan', '2');
$celdaCabeceraCombos->setAttribute('onclick', '');
$filaTablaCombos->appendChild($celdaCabeceraCombos);
$comboCiudades = $DOM->createElement('input');
$comboCiudades->setAttribute('name', 'enviar');
$comboCiudades->setAttribute('id', 'enviar');
$comboCiudades->setAttribute('type', 'submit');
$comboCiudades->setAttribute('onclick', 'guardaContadores();');
$celdaCabeceraCombos->appendChild($comboCiudades);
return $DOM->saveHTML();
}




