function generar_nombre_plano($n){
$result = strtolower($n);
$result = utf8_decode($result);
$ascii_table['á'] = 'a';
$ascii_table['a'] = 'a';
$ascii_table['A'] = 'a';
$ascii_table['s'] = 's';
$ascii_table['S'] = 's';
$ascii_table['ó'] = 'o';
$ascii_table['Ó'] = 'o';
$ascii_table['l'] = 'l';
$ascii_table['L'] = 'l';
$ascii_table['n'] = 'n';
$ascii_table['N'] = 'n';
$ascii_table['z'] = 'z';
$ascii_table['Z'] = 'z';
$ascii_table['z'] = 'z';
$ascii_table['Z'] = 'z';
$ascii_table['c'] = 'c';
$ascii_table['C'] = 'c';
$ascii_table['é'] = 'e';
$ascii_table['e'] = 'e';
$ascii_table['E'] = 'e';
$ascii_table['í'] = 'i';
$ascii_table['ó'] = 'o';
$ascii_table['Ö'] = 'o';
$ascii_table['õ'] = 'o';
$ascii_table['Ü'] = 'u';
$ascii_table['ü'] = 'u';
$ascii_table['ä'] = 'a';
$ascii_table['Ä'] = 'a';
$ascii_table['ß'] = 'ss';
$ascii_table['ú'] = 'u';
$ascii_table['ñ'] = 'n';
$keys = array_keys($ascii_table);
$result = str_replace($keys, $ascii_table, $result);
$result = preg_replace("/[^a-z0-9\s-]/", "", $result);
$result = trim(preg_replace("/\s+/", " ", $result));
$result = trim(substr($result, 0, 45));
$result = preg_replace("/\s/", "-", $result);
return $result;
}
viernes, 12 de marzo de 2010
URLs amigables (url friendly)
Le dejo una funcion que hice para generar nombres planos para urls amigables, si tienen mas caracteres especiales que quieran añadir pueden hacerlo en el array ascii_table
jueves, 11 de marzo de 2010
MySQL y la importancia de los índices para consultas óptimas
He estado haciendo bastantes pruebas para optimizar consultas SQL que utilizan varios INNER JOIN entre tablas y logré bajar los tiempos de las consutlas en 2,5 segundos con solo manipular algunos índices en las tablas.
Les dejo algunas experiencias que me han dado buen resultado:
Espero les sea de utilidad, espero sus comentarios,...
Les dejo algunas experiencias que me han dado buen resultado:
- No tener más índices que los necesarios en las tablas
- Crear índice en campos que se van a consultar con LIKE
- Crear índices sobre campos que se van a utlizar con ORDER BY
- Utilizar solo los JOIN que sean necesarios, si una búsqueda no va a utlizar algunas tablas no incluirlas en ningún JOIN
- No utilizar INT (10) en los índices, pueden guardarse 16 millones de registros con un índice Mediumint, ocupa la mitad de espacio y acelera las consultas en un 25%
Espero les sea de utilidad, espero sus comentarios,...
viernes, 5 de marzo de 2010
jsTree - Un plugin para jQuery para crear árboles de datos
jsTree es un componente basado en javascript, multi-browser.
Utiliza jQuery y Sarissa (opcional) para generar árboles al estilo de los árboles de directorio, también puede ser utilizado para árboles de categorías. Es muy configurable y además posee themas y plugins que amplían su capacidad.
Soporta JSON, XML,HTML y su contenido puede ser estático o asincrónico.
Un ejemplo de su utlización es:
$(function () {
$("#tree_categorias").tree({
data : {
type:"json",
async:true,
opts:{
method:"POST",
url:"ajax.action.php?type=rellena_categorias"
}
},
ui:{
theme_name:"checkbox",
three_state:false
},
plugins:{checkbox:{}}
});
});
El php al que se conecta para obtener las categorías debe generar un objeto JSON de la siguiente forma:
http://www.jstree.com/
Utiliza jQuery y Sarissa (opcional) para generar árboles al estilo de los árboles de directorio, también puede ser utilizado para árboles de categorías. Es muy configurable y además posee themas y plugins que amplían su capacidad.
Soporta JSON, XML,HTML y su contenido puede ser estático o asincrónico.
Un ejemplo de su utlización es:
$(function () {
$("#tree_categorias").tree({
data : {
type:"json",
async:true,
opts:{
method:"POST",
url:"ajax.action.php?type=rellena_categorias"
}
},
ui:{
theme_name:"checkbox",
three_state:false
},
plugins:{checkbox:{}}
});
});
El php al que se conecta para obtener las categorías debe generar un objeto JSON de la siguiente forma:
{
attributes: { id:"node_identificator",some-other-attribute:"attribute_value" },
data: "titulo del nodo",
state: "closed",
children: [ /* an array of child nodes objects */ ]
data: {title:titulo_del_nodo,attributes:{"class":"checked"}}
}
Para más información puede visitar la página:http://www.jstree.com/
Suscribirse a:
Entradas (Atom)