12 de mayo de 2015

Buscador PHP utilizando MySQLi

Antes de empezar hago la acotación que este es un ejemplo básico pero que aun se utiliza, lo mejor seria utilizar Jquery para utilizar AJAX y recibir los mensajes vía JSON, también utilizar Jquery Validate para el campo obligatorio que en este caso es el DUI, pero es una recomendación, si es puro php lo que te interesa te va servir.

Los parámetros de configuración de la base de datos es una buena practica tenerlos en un archivo php por separado a fin de poder modificarlos de ser necesario, también te puedes crear una archivo .ini, en este caso para el ejemplo se llama parametros.php

<?php
define ('cn_host','localhost');
define ('cn_username','root');
define ('cn_password','');
define ('cn_database','ejemplo');
?>

Para conectarme a la base de datos utilizo la funcion conectarse() la cual pide los parametros definidos anteriormente y utiliza mysqli, esta funcion devuelve la conexion a la base de datos especificada en parametros.php o un error i no se alcanza la conexion
<?php
require_once "parametros.php";

 function conectarse(){
 
 $mysql= new mysqli(cn_host, cn_username, cn_password);
 if($mysql->connect_error){
  echo "Error conectandose al servidor de base de datos";
  echo "/n";
  echo $mysql->connect_error;
     exit();
 }
 if(!($mysql->select_db(cn_database))){
  echo "Error al conectarse a la base de datos";
 }
 return $mysql;
}
?>

por ultimo el buscador.php, solo hacer notar que debería existir un formulario que envíe por el método POST la información de ID_name, un ejemplo básico podría ser este

Buscador PHP - Mysqli ID a buscar:
Ahora si, el código que realiza la búsqueda en la base de datos según el dui proporcionado
<?php
require_once "conexion.php";
$mysqli = conectarse(); 
$query="select Nombre from empleado_php where ID=?";
$dato= trim($_POST['ID_name']);
$dato = filter_var($dato, FILTER_SANITIZE_STRING);
if($dato == null){
echo "debe especificar el valor del DUI a buscar";
exit(); 
}

//puede utilizarse try-catch(Exception $e)
 
if(!($stmt=$mysqli->stmt_init())){
 echo "Error en stmt_init";
 exit();
}
if(!($stmt->prepare($query))){
 echo "Error al preparar la consulta";
 exit();
}
if(!($stmt->bind_param("s",$dato))){
 echo "Error anexando parametro";
 exit();
}
if(!($stmt->execute())){
 echo "Error al ejecutar la consulta";
 exit();
}

if(!($stmt->bind_result($nombre))){
 echo"Error al anexar resultado";
 exit();
}

// store_result debe aparecer antes de fetch()
$stmt->store_result();
$stmt->fetch();
$count = $stmt->num_rows();

if($count!=null){
echo "Se encontraron " .$count. " resultados";
echo "";
echo "El dui " .htmlspecialchars($dato). "  pertenece al empleado " .htmlspecialchars($nombre);
}
else { echo "no se encontraron resultados para el DUI " .$dato. "."; }
$stmt->close();
$mysqli->close();
?>
y si recogiéramos mas de un resultado? en ese caso utilizamos un while y mostramos los resultados, como muestres esos resultados depende de ti, en mi caso utilizare una tabla, recuerda que debes anexar este código según lo que necesites al código mostrado anteriormente
<?php
require_once "conexion.php";
error_reporting(E_ALL);
 
CargarDatos();

function CargarDatos(){ 
$query= "select * from empleado_php";

 try{
 if(!$mysqli = conectarse()){
  die("Error al crear la conexion:  " .$mysqli->connect_error);
 }
 if(!$stmt= $mysqli->query($query)){
    die('Ocurrio un error: [' . $mysqli->error . ']');
}
 
 if($stmt->num_rows > 0){
 echo "Total de registros:  " .$stmt->num_rows;
    echo "


"; echo''; while($row = $stmt->fetch_object()) { echo''; } echo '
ID Nombre
'.$row->ID.' '.$row->Nombre.'
'; }else{ echo "No hay resultados"; } }catch(Exception $e){ echo "Error " .$e->getMessage(); }} ?>

Related Posts:

  • PHP PDO Singleton CRUDLo primero es crear la clase Singleton que implementara el patrón de diseño Singleton que servirá para asegurarnos de crear una instancia de clase única, estas características las utilizaremos para conectarnos a la base de da… Read More
  • ob_start PHPAl programar en PHP primero se realiza un procesamiento de la página que se muestra en el ordenador del usuario, luego se envía la petición al servidor y por último se envía al ordenador del usuario el resultado de procesar e… Read More
  • file_get_contents() y file_put_contents() en PHPfile_get_contents() se utiliza para obtener archivos desde PHP y es equivalente a usar fopen(), fgets() y fclose() por lo que es la manera abreviada y preferida de transmitir el contenido de un fichero a una cadena. Usa técn… Read More
  • Patrón Dependency InjectionRobert C. Martin afirma en el Principio de Inyección de Dependencias: A. Las clases de alto nivel no deberían depender de las clases de bajo nivel. Ambas deberían depender de las abstracciones. B. Las abstracciones no deber… Read More
  • register_globals() en PHP...porque no?El primer paso antes de validar cualquier datos de entrada, es comprobar que la directiva register_globals este desactivada. Desde PHP 5.3 fue declarada obsoleta y a partir de la versión 5.4 fue eliminada. Pero hay que tener … Read More