mini-plantillas con mysql

febrero 13, 2010

Si has programado en PHP contra un servidor SQL, a menudo has tenido que calcular código HTML según una consulta SQL. Hay lanzar la consulta, y mientras tengamos resultados, se van imprimiendo….es sencillopero también tedioso.

Supongamos que tenemos una función a la que simplemente le pasamos dos argumentos: la sentencia SQL y una plantilla HTML:


mysql_plantilla ( "SELECT url, titulo FROM enlaces ORDER BY Hits DESC LIMIT 10",
"<li><a href='{%url}'>{%titulo}</a></li>" );

mysql_plantilla ("SELECT titulo,resumen,id FROM post ..",
"<div ><a href='?post={%id}'>{%titulo}</a></h2>
<div class='resumen'>{$resument}<...")

Ahora la programación resulta mucho mas elegante.
Pero..¿cuanto costaría hacer una función así?

La función es muy sencilla, apenas 20 líneas, como verás mas abajo.
Pero supone un cambio importante a la hora de programar. Ahora solo tienes que concentrarte en escribir SQL, y una especie de HTML donde los campos de la consulta SQL se codifican con {%CAMPO}. Además, dispones de dos simpáticas ayudantes: un contador y par/impar.


function mysql_plantilla( $cSQL , $cHTML){
$nContador = 0;
$lPar = true;

$rsQuery= mysql_query ( $cSQL );
while ( $aFila = mysql_fetch_array ( $rsQuery, MYSQL_BOTH ) ) {
$nContador++;
$lPar = !$lPar;
$aFila [ "contador"] = $nContador ;
$aFila [ "par"] = ( $lPar ? "par" : "impar" ) ;
$cParcial = $cHTML;
foreach ( $aFila as $k=>$valor ){
$cParcial = str_replace ( "{%$k}", $valor, $cParcial);
}
$cRet .= $cParcial;
}
mysql_free_result ($rsQuery);
return $cRet;
}

Añadiendo un poquito mas de código y unas cuantas expresiones regulares, se pueden hacer:
– bucles de repetición.
– partes condicionales en la plantilla.
– Suma de campos.
pero eso ya lo veremos otro día, pequeño saltamontes.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: