<?php include "traduccion.php"; include "funciones.php"; echo "que locales hay", mprint(tIdiomaLocale(), 1, false), "\n";
/** * Consulta de varios registros en forma tabular * @param $aCampos definiciones DD * @param $cSQL consulta SQL sin LIMIT * @param $aOpciones menu para cada registro */ function ddlib_consulta($aCampos, $cSQL, $aOpciones = "") { /* $aCampos array de campos campos acceso cabecera order campo tipo formato ( si no existe, se usa tipo ). styling $cSQL una SQL completa, o desde FROM, o nombre de la tabla $apciones titulo tituloSinHTML menu opciones (array o string), requiere opcionesId opcional opcionesSeparador queryString paginacion registrosPorPagina 20 paginas 10. tablaClase tablaID order $aEstado["order"] orderby $aEstado["orderby"] */ // titulo $cResul = ""; if (isset($aOpciones["titulo"])) { $cResul .= $aOpciones["tituloSinHTML"] == true ? $aOpciones["titulo"] : "<h2><span>{$aOpciones[titulo]}</span></h2>\n"; } // incluir el menu de Opciones if (isset($aOpciones["menu"])) { $aMenu = $aOpciones["menu"]; if (is_array($aMenu)) { foreach ($aMenu as $unaOpcion) { $lista .= "<li>{$unaOpcion}</li>\n"; } } else { $lista .= "<li>{$aMenu}</li>\n"; } $cResul .= "<div class='menuConsulta'>\n<ul>\n{$lista}</ul></div>"; } // queryString $querystring = por_defecto($aOpciones["querystring"], $_SERVER["QUERY_STRING"]); // Calcular cabecera las cabecera de la tabla $lHayOpciones = isset($aOpciones["opciones"]); // Ordenar los campos global $aEstado; $order = isset($_REQUEST["order"]) ? $aEstado["order"] : por_defecto($aOpciones["order"], 0); $orderby = por_defecto($aEstado["orderby"], $aOpciones["orderby"], "ASC"); // completar SELECT if (stripos($cSQL, "SELECT ") !== 0) { foreach ($aCampos as $dd) { if (isset($dd["campo"])) { if (preg_match("/^(funcion |serializ[ea]|tcampo |funcionget)/i", $dd["campo"])) { $campos = array("*"); break; } else { $campos[] = $dd["campo"]; } } elseif (isset($dd["campos"])) { $campos = array_merge($campos, $dd["campos"]); } } $cSQL = "SELECT " . implode(",", $campos) . (stripos($cSQL, "FROM ") === 0 ? " " . $cSQL : " FROM {$cSQL}"); } if (stripos($cSQL, "order by")) { // NO PUEDE SER cero //if (preg_match ("#order by (.*)( LIMIT)?#uim", $cSQL, $aTemp )) Esta seria la buena if (preg_match("#order by ([^ ,]*)#uim", $cSQL, $aTemp)) { $leyenda = $aTemp[1]; } } elseif (isset($aCampos[$order]["order"])) { $cTempOrder = $aCampos[$order]["order"]; if ($cTempOrder == 1) { $cTempOrder = $aCampos[$order]["campo"]; } $cSQL .= sql_order($cTempOrder, $orderby == "ASC" ? " ASC" : " DESC"); $leyenda = $cTempOrder; // @TODO ordenes de varios campos } // PaginaciĆ³n. if (!isset($aOpciones['paginacion']) || !$aOpciones['paginacion']) { $pags = por_defecto($aOpciones["paginas"], 10); $regs = por_defecto($aOpciones["registrosPorPagina"], 20); $aPaginacion = paginacion($cSQL, $leyenda, $regs, $pags, tIdiomaLocale("paginacion")); } else { $aPaginacion = array("", "", $cSQL, ""); } // calcular la cabecera (pie incluido ) y luego el cuerpo. $atributosTabla = "class='" . por_defecto($aOpciones["tablaClase"], "consulta") . "'"; if (isset($aOpciones["tablaID"])) { $atributosTabla .= " id='{$aOpciones[tablaID]}"; } $cResul .= "\n<table {$atributosTabla}>\n"; $cResul .= _ddlib_consulta_cabecera($aCampos, $querystring, $lHayOpciones, $aPaginacion[3], $order, $orderby); $cResul .= _ddlib_consulta_cuerpo($aCampos, $aPaginacion[2], $aOpciones); $cResul .= "\n</table>\n"; return $cResul; }