No soy muy diestra con POO, pero tomando tutoriales y aplicando algo de experiencia con mysql, pude crear esta herramienta que uso para sistemas simples, con php 5 y mysqli.
Comenzaremos con el archivo conexion.php el cual contendrá la clase de conexión y los métodos que generalmente uso para las consultas.
class Conexion{
function __construct(){
try{
//declarando variables
$host="localhost";
$db_name="dbname";
$user="usuariobd";
$pass="passbd";
$this->con=mysqli_connect($host,$user,$pass)or die ("Error en la conexión");
mysqli_set_charset($this->con,"utf8");
mysqli_select_db($this->con,$db_name) or die ("No se ha encontrado la base de datos");
}catch(Exception $ex){
throw $ex;
}
}
/*Elimina y verifica si el registro fue eliminado exitosamente, solo usar con sentencias DELETE*/
function delete($sql){
$res=mysqli_query($this->con,$sql);
return $res;
}
/*Devuelve un array con los datos de la consulta SELECT que luego se debe desintegrar en un foreach*/
function listar($sql){
$res=mysqli_query($this->con,$sql);
$data=null;
while($fila=mysqli_fetch_assoc($res)){
$data[]=$fila;
}
return $data;
}
/*Inserta un registro y devuelve el ID del registro incertado, usar con la sentencia INSERT*/
function id_insert($sql){
$res=mysqli_query($this->con,$sql);
$id = mysqli_insert_id($this->con);
return $id;
}
/*Inserta un registro y devuelve true si el registro fue agregado exitosamente, usar con la sentencia INSERT o UPDATE*/
function registrar($sql){
mysqli_query($this->con,$sql);
if(mysqli_affected_rows($this->con)>=1){
return true;
}
}
/*Devuelve true o false si el registro consultado existe, usar con la sentencia SELECT*/
function verificar($sql){
$res=mysqli_query($this->con,$sql);
if(mysqli_num_rows($res)>=1){
return true;
}else{
return false;
}
}
/*Para consultas con la sentencia SELECT, devuelve el numero de registros consultados*/
function cantidad($sql){
$res=mysqli_query($this->con,$sql);
$cant=mysqli_num_rows($res);
return $cant;
}
/*Usar con la sentencia SELECT, devuelve el valor del registro consultado especificamente, es decir SELECT apellido,edad,etc FROM tabla WHERE nombre=fulano*/
function buscar($sql){
$res=mysqli_query($this->con,$sql);
$data=null;
while($fila=mysqli_fetch_assoc($res)){
$data=$fila;
}
return $data;
}
}
ahora, empezaremos a utilizar los metodos, vamos a usar un archivo de prueba, en este caso, prueba.php, comenzamos...
Método listar
require_once( "conexion.php" );
/* creamos un objeto instanciando la clase Conexion*/
$obj= new Conexion();
/*llamamos al metodo de listar para sacar todos los registros según la consulta*/
$respuesta=$obj->listar("SELECT * FROM cliente");
foreach ($respuesta as $fila) {
$id =$fila["id"];
$nombre =$fila["nombre"];
$correo =$fila["correo"];
$telf =$fila["telf"];
$direccion =$fila["direccion"];
/*imprimire el nombre de todos los registros;*/
echo $nombre."</br>"
/*o bien*/
$data[] =array("id" => $id,"nombre" => $nombre,"correo" => $correo,"telf" => $telf,"direccion" => $direccion);
}
/*enviamos por json al ajax*/
echo json_encode($data);
Este es un ejemplo de una respuesta hacia un ajax de datatable, o para algún each de jquery para llenar una tabla o lista.
Método id_insert
Éste método id_insert lo uso para insertar un dato en una tabla, me devuelva el id de esa inserción:require_once( "conexion.php" );
$obj= new Conexion();
$fecha_registro=date("Y-m-d H:i:s");
$sql_cliente="INSERT INTO clientes (nombre, correo, telf, fecha_registro) VALUES ('".$nombre."', '".$correo."', '".$telf."','".$fecha_registro."')";
/*insertamos y nos devolverá el id de la inserción*/
$id_cliente=$obj->id_insert($sql_cliente);
echo json_encode($id_cliente);
Método registrar
Éste método es tanto para inserción y actualización, nos devolverá un true si se logró insertar y un false en caso tal de que haya un error en la conexión. En el ejemplo anterior, insertamos una dirección que nos devolvió un id, lo usaremos para ingresar el dato en otra tabla, ejemplo: un cliente puede tener varias direcciones, entonces tenemos una tabla de direcciones y otra de clientes, entonces:
/*llamamos al archivo de la conexión*/
require_once( "conexion.php" );
/*llamamos a la conexión*/
$obj= new Conexion();
/*tomamos la fecha y la hora local actual*/
$fecha_registro=date("Y-m-d H:i:s");
/*preparamos la consulta*/
$sql_cliente="INSERT INTO clientes (nombre, correo, telf, fecha_registro) VALUES ('".$nombre."', '".$correo."', '".$telf."','".$fecha_registro."')";
/*insertamos la consulta y nos devolverá el id correspondiente a la inserción*/
$id_cliente=$obj->id_insert($sql_cliente);
/*insertamos la dirección con el id del cliente*/
$sql_direc="INSERT INTO direccion (direccion,id_cliente) VALUES('".$direccion_cliente."','".$id_cliente."')";
$respuesta=$obj->registrar($sql_direc);
/*devolvemos la respuesta true o false si no registró nada*/
echo json_encode($respuesta);
Método verificar
Éste método es usado para sql de comparación, preguntara a la bd y devolverá true o false, siguiendo con el ejemplo anterior, verificaremos si el usuario está registrado, dependiendo del true o false de la respuesta condicionaremos que se inserte o no el cliente.require_once( "conexion.php" );
$obj= new Conexion();
/*tomamos la fecha y la hora local actual*/
$fecha_registro=date("Y-m-d H:i:s");
/*preparamos la verificación*/
$sql_veri="SELECT * FROM clientes WHERE nombre='".$nombre."'";
/*mandamos a verificar*/
$veri=$obj->verificar($sql_veri);
/*comprobamos la verificación, true o false si ese dato existe*/
if($veri==false){
/* si no existe, entonces preparamos la inserción*/
$sql_cliente="INSERT INTO clientes (nombre, correo, telf, fecha_registro) VALUES ('".$nombre."', '".$correo."', '".$telf."','".$fecha_registro."')";
/*insertamos y nos devolverá el id de la inserción*/
$id_cliente=$obj->id_insert($sql_cliente);
/*insertamos la direccion con el id del cliente*/
$sql_direc="INSERT INTO direccion (direccion,id_cliente) VALUES('".$direccion_cliente."','".$id_cliente."')";
$respuesta=$obj->registrar($sql_direc);
}else{
/*si existe, entonces hacemos una actualización del dato*/
$sql ="UPDATE direccion SET direccion='".$direccion_cliente."' WHERE id_cliente='".$id_cliente."'";
$respuesta =$obj->registrar($sql);
}
/*devolvemos la respuesta*/
echo json_encode($respuesta);
Método cantidad
Como su noimbre lo indica, nos contará los registros segun la consulta que le enviemos, preguntaremos cuantas direcciones tiene un cliente:require_once( "conexion.php" );
$obj= new Conexion();
$sql="SELECT * FROM direccion WHERE id_cliente='".$id_cliente."'";
/*nos devilverá la cantidad de registros*/
$respuesta =$obj->cantidad($sql);
/*devolvemos la respuesta, nos dirá en números enteros la cantidad de registros que tenga esa sentencia.*/
echo json_encode($respuesta);
Método buscar
Éste método se explica por sí sola, según la consulta, buscará un dato en la tabla, claro que para esto debes aprenderte el nombre de los campos de la misma, o bien, usar funciones para llamar el dato de forma simple, haré un ejemplo de una tabla de cliente con nombres de campo complicados, y usaremos una función para llamarlo de forma simple.
require_once( "conexion.php" );
function cliente($id){
$obj = new Conexion();
$sql ="SELECT * FROM clientes WHERE id='".$id."'";
$fila =$obj->buscar($sql);
/*nos dará todos los datos de esa consulta*/
$nombre =ucfirst($fila["nombre_largo_cliente"]);
$telf =$fila["num_telf_cliente"];
$correo =$fila["correo_cliente"];
$fecha_registro =$fila["fecha_registro"];
return array("nombre"=>$nombre,"telf"=>$telf,"correo"=>$correo,"fecha_registro"=>$fecha_registro);
}
/*buscaremos el nombre del cliente "25"*/
$id_cliente="25";
/*llamamos a la función*/
$dato_cliente=cliente($id_cliente);
/*llamamos al dato que necesitamos de la función*/
$nombre=$dato_cliente["nombre"];
Método eliminar
Se usa solo con DELETE y devuelve true o false.
require_once( "conexion.php" );
$obj = new Conexion();
$id = $_POST["id"];
$sql = "DELETE FROM cliente WHERE id='".$id."'";
$respuesta= $obj->delete($sql);
echo json_encode($respuesta);
Comentarios
Publicar un comentario