Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/07/2008, 11:41
Israfel
 
Fecha de Ingreso: febrero-2005
Ubicación: Santiago - Chile
Mensajes: 8
Antigüedad: 19 años, 3 meses
Puntos: 0
Recordset MySQL tratado con una tabla

Estimados

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);. 
Recorrido de registros

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($i1);
    } 
Ejecución de Comandos SQL.

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(); 
Pueden descargarlo desde aquí -> http://rapidshare.com/files/12967700...a.1.0.zip.html
o de aquí -> http://www.megaupload.com/es/?d=EITU68IW.


Espero les sirva.

Saludos

José Eduardo Ríos
kattatzu(a)gmail.com