コード例 #1
0
function paginacion($cSql, $leyenda, $tamPagina = 10, $maxIndex = 10, $leyendaPaginas = "Página %s de %s", $queryString = "")
{
    /* devuelve un array con ( n reg, n paginas, cSQL limitada, navegación ) */
    $paginaActual = 0;
    if ($queryString) {
        $nTemp = strpos($queryString, "PaginaActual=");
        if ($nTemp > 0) {
            $paginaActual = (int) substr($queryString, $nTemp + 13);
        }
    }
    if (!$paginaActual) {
        $paginaActual = por_defecto(si_es_key($_REQUEST, "PaginaActual"), mRequest("PaginaActual"));
        if ($paginaActual == "") {
            $paginaActual = 1;
        }
    }
    $rsTemp = mysql_query($cSql);
    $totalReg = mysql_num_rows($rsTemp);
    $cNavega = "";
    if ($totalReg == 0) {
        // no hay páginas
        $totalPaginas = 0;
        $paginaActual = 0;
    } elseif ($totalReg <= $tamPagina) {
        // solo hay una página
        $totalPaginas = 1;
        $paginaActual = 1;
    } else {
        // hay más de una página
        $totalPaginas = ceil($totalReg / $tamPagina);
        if ($paginaActual > $totalPaginas) {
            $paginaActual = $totalPaginas;
        }
        // calculamos las leyendas si hay
        if ($leyenda != "") {
            $npag = 1;
            $aCampos = explode(",", $leyenda);
            while ($npag <= $totalPaginas && ($aTemp = mysql_fetch_array($rsTemp))) {
                $cTemp = "";
                foreach ($aCampos as $tCampo) {
                    $cTemp .= $aTemp[trim($tCampo)] . " ";
                }
                $aLeyendas[$npag - 1] .= " - {$cTemp}";
                $aLeyendas[$npag] = $cTemp;
                /* TODO mirar error */
                @mysql_data_seek($rsTemp, $npag * $tamPagina);
                $npag++;
            }
            // falta el ultimo
            mysql_data_seek($rsTemp, $totalReg - 1);
            $aTemp = mysql_fetch_array($rsTemp, MYSQL_ASSOC);
            $cTemp = "";
            foreach ($aCampos as $tCampo) {
                $cTemp .= $aTemp[trim($tCampo)] . " ";
            }
            $aLeyendas[$totalPaginas] .= " - {$cTemp}";
        }
        // cambiamos la SQL.
        if (strstr(strtoupper($cSql), " LIMIT ") === false) {
            $cSql .= " LIMIT " . max(0, ($paginaActual - 1) * $tamPagina) . ",{$tamPagina}";
        }
        // Construir barra de navegacion
        $webBase = _paginacion_base($queryString);
        if ($totalPaginas <= $maxIndex) {
            // todas las páginas caben.
            for ($nCont = 1; $nCont <= $totalPaginas; $nCont++) {
                $temp = $leyenda ? " title='{$aLeyendas[$nCont]}'" : "";
                $cNavega .= "&nbsp;<a href='{$webBase}PaginaActual={$nCont}'{$temp} >{$nCont}</a>\n";
            }
        } else {
            // construir barra limitada
            if ($paginaActual > $totalPaginas - $maxIndex) {
                $nDesde = $totalPaginas - $maxIndex;
                $nHasta = $totalPaginas;
            } else {
                $nDesde = floor($paginaActual / $maxIndex) * $maxIndex + 1;
                $nHasta = $nDesde + $maxIndex - 1;
            }
            $nSiguiente = min($totalPaginas, $nDesde == 1 ? $maxIndex : $nDesde + $maxIndex);
            $nAnterior = max(1, $nDesde - $maxIndex);
            // boton de ir al principio (siempre 1)
            if ($nDesde > 1) {
                $temp = $leyenda ? " title='{$aLeyendas[1]}' " : "";
                $cNavega .= "<a class='paginacion_bottom' href='{$webBase}PaginaActual=1'{$temp};>&lt;&lt;</a>";
            }
            // boton de ir al anterior
            if ($nDesde != 1) {
                /* boton anterior */
                $temp = $leyenda ? " title='{$aLeyendas[$nAnterior]}' " : "";
                $cNavega .= "&nbsp;<a class='paginacion_anterior' href='{$webBase}PaginaActual={$nAnterior}'{$temp}>&lt;</a>";
            }
            // poner las paginas
            $cNavega .= "<span class='paginacion_paginas'>\n";
            for ($nCont = $nDesde; $nCont <= $nHasta; $nCont++) {
                $temp = $leyenda ? " title='{$aLeyendas[$nCont]}' " : "";
                $cNavega .= "&nbsp;<a href='{$webBase}PaginaActual={$nCont}'{$temp}>{$nCont}</a>\n";
            }
            $cNavega .= "</span>\n";
            // botón de siguiente
            if ($nHasta < $totalPaginas) {
                $temp = $leyenda ? " title='{$aLeyendas[$nSiguiente]}' " : "";
                $cNavega .= "&nbsp;<a class='paginacion_siguiente' href='{$webBase}PaginaActual={$nSiguiente}' {$temp}'>&gt;</a>\n";
            }
            // botón de ultimo
            if ($nHasta < $totalPaginas) {
                $temp = $leyenda ? " title='{$aLeyendas[$ntotalPaginas]}' " : "";
                $cNavega .= "&nbsp;<a class='paginacion_top' href='{$webBase}PaginaActual={$totalPaginas}' {$temp}>&gt;&gt;</a>\n";
            }
        }
    }
    if ($totalPaginas <= 0) {
        $cPagina = "&nbsp;";
    } else {
        // se genera la paginación. Ej: 5 de 6
        $cPagina = sprintf($leyendaPaginas, $paginaActual, $totalPaginas) . " |" . $cNavega;
    }
    $aTemp = array($totalReg, $totalPaginas, $cSql, $cPagina);
    return $aTemp;
}
コード例 #2
0
function plantillaSegunCantidad($cantidad, $caso_es_0, $caso_es_1 = "", $caso_2oMas = "")
{
    if (strpos($caso_es_0, "|") !== false) {
        $capturas = explode("|", $caso_es_0);
        $caso_2oMas = count($capturas) == 3 ? $capturas[2] : "";
        $caso_es_1 = count($capturas) >= 2 ? $capturas[1] : "";
        $caso_es_0 = count($capturas) >= 1 ? $capturas[0] : "";
    }
    $caso_2oMas = por_defecto($caso_2oMas, $caso_es_1, $caso_es_0);
    $caso_es_1 = por_defecto($caso_es_1, $caso_es_0);
    switch ($cantidad) {
        case 0:
            return sprintf($caso_es_0, 0);
        case 1:
            return sprintf($caso_es_1, 1);
        default:
            return sprintf($caso_2oMas, $cantidad);
    }
}
コード例 #3
0
ファイル: datadriven.php プロジェクト: phyluis/librerias-php
function ddlib_guardar($cTabla, $cWhere, $aEdicion, $aOpciones = NULL)
{
    $cError = "";
    $aRet = "";
    $cNuevo = $cWhere == "" ? "INSERT" : "UPDATE";
    //  Primero verificamos las condiciones de cada campo
    foreach ($aEdicion as $aDatos) {
        $cError .= isset($aDatos["verifica"]) ? ddlib_verificaCampo($aDatos) : "";
    }
    // Revisar los errores
    if ($cError != "") {
        if (isset($aOpciones["errorverificacion"])) {
            $cError = $aOpciones["errorverificacion"] . $cError;
        }
        return mensajeHTML($cError, "error " . ($cNuevo ? "añadir" : "guardar"));
    }
    $aSQL = sql_crear($cNuevo, $cTabla, $cWhere);
    // al terminar la verificación revisar los errores
    foreach ($aEdicion as $aDatos) {
        if (isset($aDatos["acceso"]) and !$aDatos["acceso"]) {
            continue;
        }
        $aParametros = explode(" ", $aDatos["tipo"]);
        switch (strtolower($aParametros[0])) {
            case "hidden":
            case "info":
            case "htmldespues":
            case "infofuncion":
            case "separador":
            case "separadortabla":
            case "verificapassword":
            case "readonly":
                break;
            case "adjunto":
            case "imagen":
            case "irudia":
                if ($_REQUEST[$aDatos["campo"] . "_BORRAR"] == '1' || $_REQUEST[$aDatos["campo"] . "_EZABATU"] == '1') {
                    sql_add($aSQL, $aDatos["campo"], "", "cadena");
                } else {
                    $lPendiente = true;
                }
                break;
            case "nuevopassword":
                if ($_REQUEST[$aDatos["campo"]] != "") {
                    if (isset($aParametros[3]) and $aParametros[3] == "md5") {
                        sql_add($aSQL, $aDatos["campo"], md5($_REQUEST[$aDatos["campo"]]), "cadena");
                    } else {
                        sql_add($aSQL, $aDatos["campo"], "cadena");
                    }
                }
                break;
            case "fijo":
                sql_add($aSQL, $aDatos["campo"], $aDatos["valor"], $aParametros[1]);
                break;
            case "listavalores":
                sql_add_request($aSQL, $aDatos["campo"], por_defecto($aParametros[2], "cadena"));
                break;
            case "listafuncion":
                sql_add_request($aSQL, $aDatos["campo"], $aParametros[2]);
                break;
            default:
                if (isset($aDatos["campos"])) {
                    foreach ($aDatos["campos"] as $tcampo => $tipo) {
                        sql_add_request($aSQL, $tcampo, $tipo);
                    }
                } elseif (isset($aDatos["campo"])) {
                    // el campo puede ser de diversos tipos.
                    list($tipoCampo, $tcampo, $tmas) = explode(" ", $aDatos["campo"]);
                    switch (strtolower($aDatos["campo"])) {
                        case "tcampo":
                        case "funcionget":
                        case "funcion":
                            // estos son campos de consulta no se pueden escribir
                            break;
                        case "serialize":
                        case "serializa":
                            sql_add_request($aSQL, serialize($aDatos["campo"]), $tcampo);
                            break;
                        default:
                            sql_add_request($aSQL, $aDatos["campo"], $aParametros[0]);
                    }
                }
        }
    }
    // si hemos recogido campos, salvamos (puede ser un caso de solo imágenes )
    if (sql_esvacia($aSQL)) {
        $lResul = true;
    } else {
        $lResul = mysql_query(sql_sql($aSQL));
    }
    if ($lResul and $lPendiente) {
        ddlib_guardarAdjuntos($cTabla, $cWhere, $aEdicion);
    }
    // Devolver resultado
    if ($lResul) {
        $lResul = $aOpciones["ok"] ? "<div class='guardarOk'   >{$aOpciones[ok]}</div>" : true;
    } else {
        $lResul = $aOpciones["ok"] ? "<div class='guardarError'>{$aOpciones[error]}</div>" : false;
    }
    return $lResul;
}
コード例 #4
0
ファイル: maquetador.php プロジェクト: phyluis/librerias-php
function maquetador_evaluar_estado($controlador = false, $accion = false)
{
    global $aEstado;
    // Cargar el estado o petición
    $aEstado = array("controlador" => por_defecto($_REQUEST["c"], $controlador, $_GLOBALS["HOME_CONTROLADOR"]), "accion" => por_defecto($_REQUEST["a"], $accion, $_GLOBALS["HOME_ACCION"]), "id" => $_REQUEST["i"], "pagina" => $_REQUEST["p"], "order" => $_REQUEST["order"], "orderby" => $_REQUEST["orderby"], "esHome" => $_REQUEST["c"] == "");
}
コード例 #5
0
ファイル: funciones.php プロジェクト: phyluis/librerias-php
function plantilla_opcion($valor, $plantilla0, $plantilla1 = "", $plantilla2 = "")
{
    $plantilla2 = por_defecto($plantilla2, $plantilla1, $plantilla0);
    $plantilla1 = por_defecto($plantilla1, $plantilla0);
    switch ($valor) {
        case 0:
            return strtr($plantilla0, array("%0" => $valor));
        case 1:
            return strtr($plantilla1, array("%0" => $valor));
        default:
            return strtr($plantilla2, array("%0" => $valor));
    }
}
コード例 #6
0
function maquetador_evaluar_estado($controlador = false, $accion = false, $idiomasValidos = false)
{
    global $aEstado;
    // Determinar el idioma
    $idioma = por_defecto(si_es_key($_REQUEST, "l"), si_es_key($_SESSION, "idioma"));
    if (!$idioma) {
        $idioma = substr(getenv('HTTP_ACCEPT_LANGUAGE'), 0, 2);
    }
    // Corrección final del idioma, y comprobar validez
    if (!preg_match('/^[a-z]{2}(_[a-z]{2})?$/i', $idioma)) {
        $idioma = si_es_key($GLOBALS, "TIDIOMA_DEFECTO", "es");
    }
    if ($idiomasValidos && !preg_match('/^(' . $idiomasValidos . ')?$/i', $idioma)) {
        $idioma = si_es_key($GLOBALS, "TIDIOMA_DEFECTO", "es");
    }
    $_SESSION["idioma"] = $idioma;
    $aEstado = array("controlador" => por_defecto(si_es_key($_REQUEST, "c"), $controlador, si_es_key($GLOBALS, "HOME_CONTROLADOR"), "home"), "accion" => por_defecto(si_es_key($_REQUEST, "a"), $accion, si_es_key($GLOBALS, "HOME_ACCION"), "index"), "id" => si_es_key($_REQUEST, "i"), "idioma" => $idioma, "pagina" => si_es_key($_REQUEST, "p"), "order" => si_es_key($_REQUEST, "order"), "orderby" => si_es_key($_REQUEST, "orderby"), "esHome" => si_es_key($_REQUEST, "c") == "");
}