Wednesday, February 17, 2010

MysqliExt: Facilita el manejo de Mysqli

Publico esta clase para facilitar el manejo de Mysli, para abstraer las consultas más comunes y así acelerar el proceso de desarrollo.

Con esta clase puedes hacer:
  1. Consultas CRUD (create, read, update, delete)
  2. Listar resultados (fetch)
  3. Transacciones
El modo de uso es muy simple y fácil de recordar, acá algunos ejemplos:

Para CRUD y listar:

<?php
//usar tabla usuario
$usuario=new ModeloUsuario();

#CRUD
//insertar usuario nuevo. El resultado entrega el id de la informacion insertada
$campos=array(
'nombre' => 'Cristian',
'correo' => 'mi@correo.com',
'direccion' => 'Mi casa #13'
);
$idUsuario=$usuario->create($campos);

//Seleccionar un usuario
$resultado=$usuario->read($idUsuario);

//actualizar usuario
$campos=array(
'nombre' => 'Juan',
'correo' => 'micorreo@mail.com'
);
$resultado=$usuario->update($campos, $idUsuario);

/*//eliminar un usuario
$resultado=$usuario->delete($idUsuario);*/

#Miscelaneos
//seleccionar id
$resultado=$usuario->seleccionarId('nombre', 'Juan');

//listar resultados
$seleccionar="*";
$where="1";
$limit="50";
$resultado=$usuario->fetch($seleccionar, $where, $limit);

//query2
$resultado=$usuario->query2("select CURDATE() as fecha;");



Para Transacciones:

<?php
#transacción
$usuario->iniciarTransaccion();

$usuario=new ModeloUsuario();
//insercion correcta
$campos=array(
'nombre' => 'Alberto',
'correo' => 'correo1@mail.com'
);
$usuario->create($campos);

//insercion correcta
$campos=array(
'nombre' => 'Pedro',
'correo' => 'correo2@mail.com'
);
$usuario->create($campos);

//insercion correcta
$campos=array(
'nombre' => 'Sonia',
'correo' => 'correo3@mail.com'
);
$usuario->create($campos);

//otra tabla #acá ocurre el error
$modeloAvatar=new ModeloAvatar();
$campos=array(
'ur' => 'http...'
);
$modeloAvatar->create($campos);

//al finalizar no habrá cambios en la BD, ya que hay una inserción incorrecta en la transaccion
var_dump($usuario->finalizarTransaccion());


Descargar Mysqli

Sunday, February 14, 2010

Usa __autoload y ahorate código y tiempo

Reconozco que no uso todas las ayudas que presta PHP, pero ahora estoy desarrollando un sistema más o menos complejo y he tenido que recurrir bastante a este tipo de funciones y métodos mágicos de PHP.

Bueno con __autoload no veía el uso, pero al trabajar con POO el uso de include se multiplica bastante, es por eso que preferí usarlo en vez de seguir ignorándolo. El problema era que tengo dos tipos de clases que incluir: los modelos y las librerías, y luego de pensar cree este pequeño script para facilitar el trabajo. Hace la inclusión dependiendo del nombre de la clase, para asignarle la ruta correspondiente:


#Lo uso para noFramework_MVC.
Si no usas este framework puedes utilizar directamente un include.

/**
* Carga automaticamente archivos de clases Modelo[...] y
* clases en lib
* @param string $clase
*/
function __autoload($clase){
//nombre de clases que empiezan con Modelo[nombredelaclase]
if(ereg("^Modelo", $clase)){
Core::cargarClase("app_modelos_$clase");
}
else{
Core::cargarClase("lib_$clase");
}
}

Más info acerca de __autoload

Espero sirva de ejemplo si desean implementar esta útil función.

Thursday, February 11, 2010

noFramework_MVC

Hace tiempo que no posteaba sobre PHP, pero no era por que no lo he usado, es porque tenía hartas cosas que ordenar. Una de esas es este Sistema MVC que creé para mi tesis (no fue la tesis) y comparto con cualquier interesado que quiera probarlo.

Este sistema MVC fue creado con el propósito de incentivar el uso del patrón MVC, sin obligar a cambiar los propios paradigmas de programación que se utilicen. Sólo “obliga” a separar la aplicación en controladores, modelos y vistas; como exige MVC, nada más. De aquí en adelante el desarrollador puede optar por el framework que desee, para abstraer la BD por ejemplo, entre otros.
Este manual-tutorial está organizado de manera tal, que una vez finalizado y comprendido, será la manera que se organicen y configuren los proyectos, es decir, está ordenado pos pasos concecutivos.
Se toma en cuenta que el lector posee algunos conceptos de MVC, amplios conocimientos en POO y PHP. Ya que no se altera el uso del lenguaje, sólo la manera de organizar la aplicación.
Se recomienda que al leer este documento se abra el archivo al que se hace refencia.


##NOTAS:
  1. Al descomprimir dar permisos de escritura al directorio. Si no apareciese en el navegador.
  2. Por algún motivo que no logro entender, el primer include [include(config.php)] para el archivo indexBoot.php no funciona en Windows, entonces tendrás que copiar el código de config.php y pegarlo directamente en indexBoot.php, reemplazando el include.

##ACTUALIZACIONES
  1. 14/02/10 - Ya no es obligatorio invocar __construct en los Controladores
  2. He alojado el proyecto en google code
Ir al proyecto

Tuesday, February 09, 2010

Pinta: Editor Simple

Se acabó la búsqueda...

Este simple editor es ideal para personas que quieres hacer cosas simples y rápidas con imágenes.



www.pinta-project.com/

Además ya lo agregué a mi lista de software favoritos ;)

Friday, February 05, 2010

Sincronizar [sólo] calendario Evolution con Google Calendar

Para poder sincronizar sólo nuestro Google Calendar con Evolution sólo debemos:
  • Hacer click en el reloj para desplegar el calendario
  • Hacer 2 click en cualquier día
  • Hacer 2 click en cualquier día (Sí de nuevo!!!. Para evitar tener que configurar el correo)
  • Agregar un calendario google, ingresar tu datos y todo eso
  • Cuando termines cierras y podrás ver los eventos en el calendario que se despliega desde el menú.


Nota: Esto es por si deseas sincronizar sólo el calendario.