miércoles, diciembre 29, 2010

PHP - Clases y Registrar a BD MySQL usando Transacciones


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"

1. Entorno

  • Netbeans 6.9.1.
  • WAMP Server

2. Introducción


PHP no es un lenguaje netamente orientado a objetos, el inicio de este lenguaje fue pensado para realizar una programación del tipo estructurada, pero con el tiempo PHP incorporo a su lenguaje el uso de clases. Para asi poder realizar aplicaciones orientadas a objetos usando PHP.

3. Desarrollo


3.1. Crear proyecto en Netbeans

Debemos de crear un proyecto en Netbeans 6.9.1. ya que este IDE nos da soporte para poder desarrollar aplicaciones basándose en PHP.













La copia de los archivos deben de apuntar a la carpeta "www" del "WAMP"












3.2. Crear las clases

Vamos a crear una clase llamada Conexion donde se centrara el modo de como conectarnos a la base de datos y otra clase que se llamara Alumno donde estará un método para registrar a la base de datos, usando transacciones para que tambien pueda ver como es el manejo de transacciones, de la forma mas sencilla sin usar el método propio de PHP, y otro método donde obtener la información de todos los alumnos. La forma como agrego una clase a nuestro proyecto en Netbeans es hacer clic derecho en el proyecto y luego seleccionar la opción New-->PHP Class

















3.3. Codificación de la clase alumno

3.3.1. Clase Conexion

<?php

class Conexion {

 private $BaseDatos;
 private $Servidor;
 private $Usuario;
 private $Clave;
 private $Conexion_ID;
 private $Error = "";

 function Conexion() {
  $this->BaseDatos = "bdejemplos";
  $this->Servidor = "localhost";
  $this->Usuario = "root";
  $this->Clave = "";
 }

 function conectarClasico() {
  $this->Conexion_ID=mysql_connect($this->Servidor, $this->Usuario, $this->Clave);
  if (!$this->Conexion_ID) {
   $this->Error = "Ha fallado la conexión.";
   return 0;
  }
  if (!@mysql_select_db($this->BaseDatos, $this->Conexion_ID)) {
   $this->Error = "Imposible abrir " . $this->BaseDatos;
   return 0;
  }
  return $this->Conexion_ID;
 }
}
?>

3.3.2. Clase Alumno

<?php

include_once 'Conexion.php';

class Alumno {

    private $codigo;
    private $nombre;
    private $apellido;
    private $escuela;
    private $categoria;
    private $monto;

    private function insertarAlumno() {
        $rpta = false;
        try {
            $miconexion = new conexion();
            $cn = $miconexion->conectarClasico();
            //Inicia la transacción
            mysql_query("BEGIN", $cn);
            $sql = "INSERT INTO alumno(nombre,apellido,codigoEscuela,categoria,monto) VALUES ('$this->nombre','$this->apellido',$this->escuela,'$this->categoria',$this->monto)";
            $result = mysql_query($sql, $cn);
            if (!$result) {
                //Niega la insercion
                mysql_query("ROLLBACK", $cn);
            } else {
                //Realiza el commit
                mysql_query("COMMIT", $cn);
                $rpta = true;
            }
            mysql_close($cn);
        } catch (exception $e) {
            try {
                mysql_query("ROLLBACK", $cn);
            } catch (exception $e1) {
                
            }
            try {
                mysql_close($cn);
            } catch (exception $e1) {
                
            }
            $rpta = false;
        }
        return $rpta;
    }

    public function todosAlumnos() {
        $sql = "SELECT * FROM alumno ORDER BY nombre";
        $registros = array();
        try {
            $miconexion = new conexion();
            $cn = $miconexion->conectarClasico();
            $rs = mysql_query($sql, $cn);
            while ($reg = mysql_fetch_array($rs)) {
                array_push($registros, $reg);
            }
            mysql_free_result($rs);
            mysql_close($cn);
        } catch (exception $e) {
            try {
                mysql_free_result($rs);
            } catch (exception $e) {
                
            }
            try {
                mysql_close($cn);
            } catch (exception $e) {
                
            }
            $registros = array();
        }
        return $registros;
    }

    public function getCodigo() {
        return $this->codigo;
    }

    public function setCodigo($codigo) {
        $this->codigo = $codigo;
    }

    public function getNombre() {
        return $this->nombre;
    }

    public function setNombre($nombre) {
        $this->nombre = $nombre;
    }

    public function getApellido() {
        return $this->apellido;
    }

    public function setApellido($apellido) {
        $this->apellido = $apellido;
    }

    public function getEscuela() {
        return $this->escuela;
    }

    public function setEscuela($escuela) {
        $this->escuela = $escuela;
    }

    public function getCategoria() {
        return $this->categoria;
    }

    public function setCategoria($categoria) {
        $this->categoria = $categoria;
    }

    public function getMonto() {
        return $this->monto;
    }

    public function setMonto($monto) {
        $this->monto = $monto;
    }

}

?>