El fin de semana me fui en la volada y se me ocurrio crear una especie de solución para un proyecto (que me hara millonario, xD) que estoy desarrollando, que me permita manejar la interacción con el servidor mysql.
Cree 4 clases las cuales me permiten, de forma facil e instuitiva, manejar las consultas SQL y los datos devueltos.
Las clases son:
db: Encargada de realizar la conexión al servidor y a la base de datos a utilizar, cuenta con las siguiente funciones:
- connect(): Encargada de conectarse al servidor y de seleccionar la bd.
- exeQry(): Encargada de ejecutar una SQL (comando o consulta), si la conexión se cerro la abre automaticamente.
- getAffectedRows(): Devuelve el número de registros afectados por la última SQL.
- getNumRows(): Devuelve el número de registros devueltos por la última consulta SQL.
- isConnected(): Devuelve si esta o no conectado al servidor (true o false).
- getError(): Devuelve el error devuelto por el motor mysql.
- closeConnection(): Cierra la conexión actual.
table: Encargada de tratar el recordset como una simple tabla, se compone por:
- load(): Encargada de cargar un recordset a la tabla.
- getNumRows(): Devuelve el número de filas de la tabla.
- getCellValueByPos(): Devuelve el valor de una celda definida por la posición de la fila y la posición de la celda.
- getCellValueByName(): Devuelve el valor de una celda definida por la posición de la fila y el nombre de la celda.
- getFirstRow(): Devuelve la primera fila de la tabla.
- getNhtRow(): Devuelve la fila definida por su posición dentro de la tabla.
- getLastRow(): Devuelve la última fila de la tabla.
- getNextRow(): Devuelve la fila siguiente a la actual.
- getPrevRow(): Devuelve la fila anterior a la actual.
row: Representa una fila dentro de una tabla, se compone por:
- addCell(): Agrega una nueva celda a la fila.
- getCellValueByName(): Devuelve el valor de una celda definida por su nombre.
- getCellValueByPos(): Devuelve el valor de una celda definida por su posición.
- getCellByName(): Devuelve la celda completa definida por su nombre.
- getCellByPos(): Devuelve la celda completa definida por su posición.
- getNumCells(): Devuelve el número de celdas que componen la fila.
cell: Representa una celda dentro de una fila de una tabla, se compone por:
- getPosition(): Devuelve su posición dentro de una fila.
- getName(): Devuelve su nombre (nombre de la columna a la que pertenece)
- getValue(): Devuelve su valor.
NOTA: Estos objetos no contienen funciones adicionales como búsquedas y ordenamientos, una por que no se ( o no se me ocurre ahorita, xD) y otra por que no lo encuentro necesario ya que se pueden definir en la consulta SQL.
USO: Bueno la pregunta seria: ¿como la uso o como veo el cambio con mi aplicación actual?. Yo por lo menos la utilizo de la siguiente forma:
Consulta simple.
Código PHP:
//Creo el objeto
$mdb=new db();
//Llenar este datos es alternativo, se pueden dejar por defecto en la clase.
$mdb->host="localhost";
$mdb->user="user";
$mdb->pass="passwd";
$mdb->dbname="midb";
//Alternativo, si solo se desea realizar comandos o consultas, no es necesario, ya que al ejecutar la SQL verifica si esta conectado, si no lo esta se conecta automaticamente, claro tendras que dejar por defecto los datos de conección.
$mdb->connect();
//Ejecuto un consulta SQL.
$mdb->exeQry("SELECT * FROM user WHERE UID=125");
//Cargo el recordset a mi nueva tabla.
$mtbl=new table($mdb->getResult());
//Cierro la conexión por que ya no la necesito.
$mDB->closeConnection();
//Puedo obtener la cantidad de registros recibidos.
if($tbl->getNumRows()==0){echo "No trajo nada!"; return false;}
//Me posiciono en la primera fila
$perfil=$tbl->getFirstRow();
//Puedo recuperar el valor de la celda con el nombre de la columna de la tabla mysql.
echo "su nombre es: " . $perfil->getCellValueByName('USER_NAME');
//Tambien se puede recuperar el valor de la celda con la posición dentro del registro devuelto.
echo "su apellido es: " . $perfil->getCellValueByPos(1);.
Código PHP:
//Creo el objeto
$mdb=new db();
//Llenar este datos es alternativo, se pueden dejar por defecto en la clase.
$mdb->host="localhost";
$mdb->user="user";
$mdb->pass="passwd";
$mdb->dbname="midb";
//Alternativo, si solo se desea realizar comandos o consultas, no es necesario, ya que al ejecutar la SQL verifica si esta conectado, si no lo esta se conecta automaticamente, claro tendras que dejar por defecto los datos de conección.
$mdb->connect();
//Ejecuto un consulta SQL.
$mdb->exeQry("SELECT * FROM user WHERE CITY='Santiago'");
//Cargo el recordset a mi nueva tabla.
$mtbl=new table($mdb->getResult());
//Cierro la conexión por que ya no la necesito.
$mDB->closeConnection();
//Puedo obtener la cantidad de registros recibidos.
if($tbl->getNumRows()==0){echo "No trajo nada!"; return false;}
//Puedo posicionarme en la primera fila como en la última
$perfil=$tbl->getFirstRow();
//Se puede recorrer los datos con un while
while($perfil){
//Puedo recuperar el valor de la celda con el nombre de la columna de la tabla mysql.
echo "su nombre es: " . $perfil->getCellValueByName('USER_NAME');
//Tambien se puede recuperar el valor de la celda con la posición dentro del registro devuelto.
echo "su apellido es: " . $perfil->getCellValueByPos(1);
//Puedo pasar a la siguiente fila como a la anterior
$perfil=$tbl->getNextRow();
}
//Tambien puedo utilizar un for
for($i=0; $i<=$tbl->getNumRows();$i++){
$perfil=$tbl->getNhtRow($i);
//Puedo recuperar el valor de la celda con el nombre de la columna de la tabla mysql.
echo "su nombre es: " . $perfil->getCellValueByName('USER_NAME');
//Tambien se puede recuperar el valor de la celda con la posición dentro del registro devuelto.
echo "su apellido es: " . $perfil->getCellValueByPos(1);
//Puedo pasar a la siguiente fila
}
//Tambien puedo recorrer los datos sin tomar las filas
for($i=0; $i<=$tbl->getNumRows();$i++){
//Puedo acceder automaticamente al valor de una celda en una fila x dando como parámetro la posición de la fila y el nombre de la celda.
echo "su nombre es: " . $tbl->getCellValueByName($i, "USER_NAME");
//Puedo acceder automaticamente al valor de una celda en una fila x dando como parámetro la posición de la fila y de la celda.
echo "su apellido es: " . $tb->getCellValueByPos($i, 1);
}
Código PHP:
//Creo el objeto
$mdb=new db();
//Llenar este datos es alternativo, se pueden dejar por defecto en la clase.
$mdb->host="localhost";
$mdb->user="user";
$mdb->pass="passwd";
$mdb->dbname="midb";
//Alternativo, si solo se desea realizar comandos o consultas, no es necesario, ya que al ejecutar la SQL verifica si esta conectado, si no lo esta se conecta automaticamente, claro tendras que dejar por defecto los datos de conección.
$mdb->connect();
//Ejecuto los comandos SQL.
$mdb->exeQry("INSERT INTO user(USER_NAME, USER_AGE, USER_EMAIL) VALUES ('Johnx', 23, '[email protected]'");
$mdb->exeQry("UPDATE user SET USER_NAME='John' WHERE USER_NAME='Johnx'");
$mdb->exeQry("DELETE FROM user WHERE USER_NAME='John'");
//Cierro la conexión.");
$mDB->closeConnection();
o de aquí -> http://www.megaupload.com/es/?d=EITU68IW.
Espero les sirva.
Saludos
José Eduardo Ríos
kattatzu(a)gmail.com