PHP - Con Paginator tus listados serán otro cantar.

14 02 2008

Como describen en su página, muy elocuentemente:

Paginator es un script de paginación desarrollado en PHP para dividir resultados de consultas extensas a una base de datos MySql, en grupos de “n” registros por página. Como ejemplo de paginación podemos ver la página de google, donde se dice que hay 13,235 resultados, pero aparecen divididos en varias páginas de 20 resultados cada una.”

Lo que puedo empezar diciendo de este script es que es “cojonudo”. Si, siempre me ha funcionado, no me ha dado ningún problema y implementarlo es “pim..pam” vamos, cosa de 5 segundos.

Como se suele decir, “Cuando consideramos que algo es sencillo, es por que esta bien hecho”.

//Conexión a la base de datos
$con = mysql_connect("localhost","tu_username","tu_password") or die (mysql_error());
mysql_select_db("tu_base",$con) or die (mysql_error());

//Sentencia sql (sin limit)
$_pagi_sql = "SELECT * FROM clientes WHERE sexo='m' ORDER BY edad";

//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos = 2;//Elegí un número pequeño para que se generen varias páginas

//cantidad de enlaces que se mostrarán como máximo en la barra de navegación
$_pagi_nav_num_enlaces = 3;//Elegí un número pequeño para que se note el resultado

//Decidimos si queremos que se muesten los errores de mysql
$_pagi_mostrar_errores = false;//recomendado true sólo en tiempo de desarrollo.

//Si tenemos una consulta compleja que hace que el Paginator no funcione correctamente,
//realizamos el conteo alternativo.
$_pagi_conteo_alternativo = true;//recomendado false.

//Supongamos que sólo nos interesa propagar estas dos variables
$_pagi_propagar = array("id","termino");//No importa si son POST o GET

//Definimos qué estilo CSS se utilizará para los enlaces de paginación.
//El estilo debe estar definido previamente
$_pagi_nav_estilo = "paginacion";

//definimos qué irá en el enlace a la página anterior
$_pagi_nav_anterior = "<";// podría ir un tag  o lo que sea

//definimos qué irá en el enlace a la página siguiente
$_pagi_nav_siguiente = “>”;// podría ir un tag  o lo que sea

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include(”paginator.inc.php”);

//Leemos y escribimos los registros de la página actual
while($row = mysql_fetch_array($_pagi_result)){
    echo $row[’nombre’].”";
}

//Incluimos la barra de navegación
echo”

“.$_pagi_navegacion.”

“;

//Incluimos la información de la página actual
echo”

Mostrando Clientes “.$_pagi_info.”

“;

.: PHP - Paginator :.



PHP cortar texto, sin cortar palabras..

17 10 2007

Pues buscando, mirando y re-mirando me encontré con una función para mostrar parte de un texto, esto es algo muy sencillo, usando la función substr() de PHP se hace en cero coma. Pero usando substr() tenemos el problema de que cortamos las palabras y muchas veces se ven medias palabras o la primera sílaba o letra.

Esto ya se puede solucionar con la siguiente función que nos corta los textos, pero siempre respetando la última palabra, que la mantiene entera.

//cortar texto, sin cortar palabras.

function cortarTexto($str, $n, $delim='...') {

 $len = strlen($str);

 if ($len > $n) {

   preg_match('/(.{' . $n . '}.*?)b/', $str, $matches);

   return rtrim($matches[1]) . $delim;

 }else{

 	return $str;

 }

}


Comunidad DeeRme

5 10 2007

Buenos scripts PHP, hace unos meses que no la actualiza pero es interesante su contenido de clases y ejemplos. He encontrado esta página buscando la manera de generar un PDF desde PHP y en ella muestra 2 maneras muy buenas de hacerlo.

.: Comunidad DeeRme :. 



Mi solución a “escapar carácteres” en php…

2 10 2007

Pues de momento este código me hace el uso, imagino que se debe poder mejorar, pero con este código, inserto los datos de cualquier formulario en bases de datos sin crear ningún conflicto con ningún tipo de conversión, ya sea ISO, utf8 o HTML…

function controlChars($string){
$newString = $string; 

if(!empty($string) && !is_array($string)){
$newString = mysql_real_escape_string($string);
$newString = str_replace("<","<",$newString);
$newString = str_replace(">",">",$newString);
}  

return $newString;  

}

Se usa….

$var_edad = controlChars($_POST["edad"]);

Ahora, el modo de uso es muy sencillo, pero tenemos que tener en cuenta que mysql_real_escape_string() requiere que haya una conexión abierta para funcionar… ok?
De modo que esta función siempre la ejecutaremos después de haber abierto la conexión con la base de datos.
Normalmente en las páginas donde proceso datos, al inicio suelo abrir la conexión y al final la cierro, de manera que siempre mientras uso este código tengo la conexión establecida, es una opción ;)
Igualmente, se aceptan sugerencias, comentarios y lo que venga.

Esto es el resultado de lo que comente en un anterior post…

.: Escapar carácteres para  inserción de datos en MySQL :.



Escapar carácteres, utf-8, inserción de datos en mysql…

27 09 2007

Esta mañana me ha dado por arreglar un problema que venia acarreando desde hace un tiempo, pero que siempre por falta de tiempo lo dejaba aparcado a un lado como si de lentejas se tratara. El problema básicamente es que desde hace un par de meses todas las bases de datos que estaba creando en MySQL, las creaba con codificación latin1_spanish_ci. Y francamente eso es una guarrada.

Hoy en día tal y como está el tema del multilenguage en las páginas web, es una marranada, por que el día en que tengamos que aplicarle otro idioma, a vamos a liar. Pues bien, hoy se ha empezado a hacer esto bien, cada una de las tablas con codificación utf8_general_ci.

Por otro lado, tenia una función para parsear carácteres maliciosos para la base de datos, sobre todo apostrofes, y también para evitar el SQLInjection. Esta función consistía en filtrar las cadenas de texto por la función htmlentities() de PHP.
Bueno, pues maaaaaaaal, otra cagada, por que esto lo que hace es que cualquier simbolo (acento, eñes, dieresis, etc…) los transforma a su código HTML correspondiente, por lo cual al insertar los datos en la base de datos, insertaba una palabra y en lugar de haber la vocal con su acento, aparecía su código HTML correspondiente.

Estas cosas a según que idiomas, no les gusta nada, básicamente por que no existe conversión HTML para todos los idiomas.

La forma correcta de almacenar los datos en una base de datos es tal cual se introducen en los campos de formulario, entonces pensareis “bueno y que hago con los apostrofes de las pel***” pues bien, para ello está la función mysql_real_escape_string() de PHP.

http://www.php-es.com/function.mysql-real-escape-string.html

Mañana os coloco un ejemplo del uso de esta función, de momento echadle un ojo a ver que sacáis en claro.