Páginas

jueves, 9 de junio de 2011

Comenzando con PHP - Operadores

En esta entrada, continuando con la serie de artículos introductorios al PHP, estaremos hablando de los operadores en PHP  y lo que podemos ir logrando con ellos, también hablaremos un poco de la concatenación de string, variables profundizando un poco más en el lenguaje en si, aunque todavía no hemos hecho ninguna aplicación :-).

Los operadores no son mas que los carácteres que nos permiten realizar ciertas operaciones, en PHP podemos realizar desde operaciones básicas(suma, resta, etc) hasta algunas un poco más complejas, para no extendernos tanto en el tema comencemos a conocer los operadores básicos en PHP.


Operadores Aritméticos

Como su mismo nombre lo indica son los operadores que nos permiten realizar operaciones aritméticas en nuestros programas, estos son sencillos, ya que son los que diariamente nos encontramos, entre ellos tenemos:

  • + (Suma): El signo de mas(+) es el operador que utilizamos para realizar la suma en nuestras operaciones, un ejemplo:
    $resultado = 1 + 1;
    echo $resultado;
    
    Sencillo, nada que no hallamos conocido hasta ahora :-).
  • - (resta): El signo - como es de imaginar lo utilizamos para restar, también nos brinda la sencilles de operaciones que ya hemos realizado.
    $resultado = 3 - 1;
    echo $resultado;
    
  • * (multiplicación): Para los que no han tenido ninguna relación con un lenguaje de programación normalmente el simbolo del asterisco (*) es el que se utiliza para hacer referencia a la multiplicación, PHP no es la excepción.
    $resultado = 3 * 5;
    echo $resultado;
    
  • / (división): Si como lo podemos ver tenemos el slash(/) como signo para identificar la división, ejemplo
    $resultado = 4 / 2;
    echo $resultado;
    
  • % (modulo): En este momento es cuando los que estamos comenzando empezamos a conocer operadores, para los que no lo conocen el módulo es el residuo que queda de una división, este es muy utilizado al momento de saber si un numero es par o impar, pongamos un ejemplo:
    $modulo = 10 % 2;
    if($modulo == 0){
       echo "el numero es par y su residuo es $modulo";
    }
    $modulo1 = 9 % 2;
    if($modulo1 == 0){
       echo "el numero es par";
    }
    else{
        echo "el numero es impar y su residuo es $modulo1";
    }
    echo $resultado;
    
    Que es lo que hace el modulo?? divide el numero de la izquierda entre el numero después del símbolo del porcentaje, y retorna como resultado el residuo que quede de esta división, en el primer caso retornaria "el numero es par y su residuo es 0", en el segundo caso  "el numero es impar y su residuo es 1", para probarlo hagan una división a mano y vean el residuo y entenderan un poco mas (a practicar matemáticas jaja XD). 
Operador de Concatenación de String.

Para concatenar dos string e incluso una variable utilizamos el punto (.)   seguido del string que deseemos concatenar un ejemplo.

$variable = "hola";
echo 'yo deseo que se imprima lo que dice la variable y esto es ' . $variable;

El resultado seria "yo deseo que se imprima lo que dice la variable y esto es hola", esta es una simple concatenación para irnos familiarizando, esto lo utilizaremos bastante eso lo aseguro :-).

Operador de Asignación

El operador de asignación en PHP es el signo igual "=", lo utilizamos para asignar valores a las variables, aunque se ve bastante sencillo PHP nos permite varias formas de asignar valores a nuestras variables, veamos algunas de ellas.
  • = (Igual): Asigna el valor a la variable, ejemplo:
    $variable = "hola";
    

  • .= ( punto seguido del signo igual): Asigna un valor a la variable, si la variable ya contiene un valor, el resultado seria el valor actual de la variable concatenado con el valor que deseamos agregar a esta, un ejemplo:
    $variable = "hola ";
    $variable .= "Como estas";
    echo $variable;
    
    El resultado seria "hola Como estas", fácil verdad??
  • += (símbolo de mas seguido del igual): Al igual que con el punto lo que hacemos es sumar al valor que ya contiene la variable (lo que es igual a un acumulador), si hacemos algo como esto
    $i = 0;
    $i += 5;
    $i += 10;
    echo $i;
    
    Si como ya deben de saber el resultado seria 15.
Para no extendernos con este tipo de asignación podemos realizar la misma forma de asignar con cada uno de los operadores aritméticos ya indicados y estos harán la respectiva operación con el valor y luego la asignación.


Operadores de Comparación


Los operadores de comparación como bien su nombre lo indica se utilizan para hacer comparaciones, estos retornan un valor booleano true / false, mayormente lo utilizamos en los condicionales (ya hablaremos de estos), veamos cuales operadores podemos utilizar:
  • == Doble Igual (Igual que): Colocando el == Indicamos al interprete de PHP que estamos haciendo una comparación de que el valor de la izquierda es igual al valor de la derecha, ejemplo.
    var_dump(2 == 2);
    //retorna true
    var_dump(2 == 1);
    //retorna false
    
    Si copiamos este código y lo vemos en el navegador obtendriamos algo como esto
    bool(true) bool(false)
    Si es el retorno de nuestras comparaciones.
  • ! (cierre exclamación): Con este operador indicamos al navedador que debe negar una operacion si hacemos algo como esto
    var_dump(! 2 == 2);
    
    Obtendremos bool(false) ya que estamos negando el valor que nos da ese resultado.
  • != cierre exclamación igual (diferente): Si como imaginan estamos negando el igual, así que este operador lo utilizamos para indicar que un valor sea diferente, si tomamos el ejemplo inicial
    var_dump(2 != 2);
    //retorna false
    var_dump(2 != 1);
    //retorna true
    Ahora obtendriamos el resultado inverso al que colocábamos en la comparación inicial.
  • <> (diferente): Si es equivalente al operador anterior por lo que podemos utilizar el que deseemos.
  • <, <=, >, >= estos signos creo que todos en algún momento los hemos visto, pondré un ejemplo del uso de cada uno.
    var_dump(2 < 5);
    //retorna true
    var_dump(5 < 2);
    //retorna false
    var_dump(2 > 5);
    //retorna false
    var_dump(5 > 2);
    //retorna true
    var_dump(5 <= 2);
    //retorna false
    var_dump(2 <= 5);
    //retorna true
    var_dump(2 <= 2);
    //retorna true
    var_dump(5 >= 2);
    //retorna true
    var_dump(2 >= 5);
    //retorna false
    var_dump(2 >= 2);
    //retorna true
    
    Fácil verdad??.
  • === (identico): este operador es muy similar al igual cuando estamos comparando, la gran diferencia es que este evalúa que sean del mismo tipo y el mismo caracter, veamos un ejemplo básico
    var_dump("1" == 1);
    //retorna true
    var_dump("1" === 1);
    //retorna false
    
    pero porque?? si es el mismo numero??
    Como se dijo anteriormente las cadenas de carácteres siempre estan entre comillas (así sean números) y los caracteres numéricos no, entonces al preguntar si es igual evalúa que es el mismo caracter, pero si evaluamos si son idénticos al no ser del mismo tipo retorna false.
  • !== (no identico): al igual que en el anterior este evalúa el tipo de dato que estamos evaluando, en sí este evalúa si no son iguales y que no sean del mismo tipo, ejemplo:
    var_dump("1" !== 1);
    //retorna true
    var_dump(1 !== 1);
    //retorna false
    como podemos observar es todo lo contrario al anterior.
Operadores de Incremento:

En PHP podemos incrementar el numero de una variable muy fácilmente, utilizando este tipo de operador, hay cuatro de este tipo y los presentamos a continuación
  • Pre-incremento ++$i: Cuando hacemos el pre-incremento primero hacemos el incremento en uno a la variable y luego la retornamos ejemplo:
    $i = 0;
    echo ++$i;
    echo " 
    
    " . $i;
    
    esto me retornara
    1
    1

  • Post-Incremento $i++: Este operador hace lo inverso al anterior, retorna el valor y luego incrementa en uno a la variable veamos un ejemplo:
    $i = 0;
    echo $i++;
    echo " 
    
    " . $i;
    
    0
    1
    En lo personal mayormente cuando trabajajo con bucles utilizo este operador, aunque cada uno tiene el caso en el cual puede ser usado.
  • Pre-decremento --$i: Cuando hacemos el pre-incremento primero hacemos un decremento en uno a la variable y luego la retornamos ejemplo:
    $i = 10;
    echo --$i;
    echo " 
    
    " . $i;
    
    esto me retornara
    9
    9
  • Post-Incremento $i--: Igualmente este operador hace lo inverso al descrito anteriormente, retorna el valor y luego decrementa en uno a la variable veamos un ejemplo:
    $i = 10;
    echo $i--;
    echo " 
    
    " . $i;
    
    10
    9
Estos son algunos de los operadores en PHP, los más básicos con los que podemos empezar a hacer nuestros programas, más adelante iremos dando y viendo la utilidad que tienen estos, un saludo y hasta una próxima entrada.

martes, 7 de junio de 2011

Comenzando con PHP - Variables y Constantes

En el artículo anterior hicimos nuestro primer código PHP, este fue el popular hola mundo, en el día de hoy vamos a profundizar un poco más en el lenguaje, tocaremos el tema de "Las Variables y las Constantes en PHP".

Lo primero que hay que tener claro es:

¿Que es una variable?

Una variable no es mas que una posición en memoria que guardara un dato específico dentro de nuestro código, en PHP las variables son declaradas con el signo dollar "$" seguido de una palabra que haga referencia al valor que deseamos que esta contenga, un ejemplo de esto seria.
$nombre = "Carlos";
$apellido = "Belisario";

Fácil no??

Como vemos en PHP no hace falta la declaración del tipo de variable que se debe hacer normalmente en lenguajes como JAVA o Lenguaje C, el interprete de PHP entiende el tipo de dato al que pertenece la variable por medio del valor que este contiene.

Tipos de Datos que puede contener una variable

  • String o Cadenas de Carácteres:  Como su nombre lo indica son variables cuyo valor contiene una cadena de carácteres, para definir las cadenas como se dijo en el artículo anterior deben de estar entre comillas Dobles " " o comillas simples ' ', ejemplo:

    $string = "Esto es una cadena o string";
    
  • Números Enteros: Son variables que como su nombre lo indican contienen un número entero (sin decimal) dentro de ellas, para declarar estas variables solo hace falta asignar el número a la variable sin comillas, ejemplo
    $entero = 10;
    
  • Numeros Reales o Punto flotante: Son variables que contienen un numero real o con decimal dentro de ellos, al igual que los enteros se declaran asignando el valor numérico a la variable sin necesidad de que este entre comillas, el separador entre la parte entera y la parte decimal es el punto "."
    $real = 15.5;
    
  • Bool: Los variables con datos de tipo bool almacenan los valores de verdadero (true) o falso (false), son mayormente utilizadas para hacer condicionales (tema del que hablaremos en una próxima entrada).
  • Array o Arreglos: En PHP como en algunos otros lenguajes tenemos este tipo de variable, útil al momento de guardar múltiples resultados de un solo tipo, este tipo de variable crea un vector  con los datos almacenados, los cuales pueden ser de diferentes tipos sin que esto sea considerado como un error, para crear un arreglo podemos hacerlo de diferentes formas veamos los casos:
    caso 1:
    $arreglo = array("dato del primer indice","dato del segundo indice",15);
    
    En este caso asignamos al arreglo los valores, indicando la palabra array seguido de los valores dentro de paréntesis, para acceder a un valor de un array debemos hacerlo por medio de los índices del mismo, cuando se crean de esta manera los índices son numéricos y comienzan desde el indice 0 (cero), hasta la cantidad de elementos que tenga el array, en este ejemplo seria
    0 => "Dato del primer indice",
    1 => "Dato del segundo indice",
    2 => 15
    La forma de acceder a un valor de un array es por medio de su índice, esto lo hacemos indicando la variable seguida de el índice que deseamos mostrar, entonces si deseamos mostrar el valor del segundo índice tendríamos que hacer algo como esto
    $arreglo = array("dato del primer indice","dato del segundo indice",15);
    echo $arreglo[1]; 
    
    lo que daría como resultado una salida en el navegador diciendo "dato del segundo indice"
    Fácil verdad

    Caso 2:
    Asignación dinámica del array
    $arreglo[] = "Datos del primer índice";
    $arreglo[] = "Datos del segundo índice";
    $arreglo[] = 15;
    
    Como vemos aca asignamos los datos de una manera dinámica, sin necesidad de indicar la palabra array, solo debemos abrir y cerrar corchete (sin índice en el medio) y este automáticamente tomara el indice que deseemos.
    Nota: Si deseamos podemos indicar el índice que queremos que tenga el valor en el array, aunque cuando se están creando de manera dinámica esto no es necesario.

    Caso 3:
    Arreglos asociativos:
    $arreglo['nombre'] = "Carlos";
    $arreglo['apellido'] = "Belisario";
    $arreglo['edad'] = 24;
    
    Los arreglos asociativos son una de las mas maravillosas formas de crear un arreglo, ya que mediante este podemos indicar el índice con el nombre asociado al valor que estamos almacenando, en el caso que acabamos de mostrar, se veria de esta manera

    'nombre' => "Carlos",
    'apellido' => "Belisario",
    'edad' => 23

    Pero como accedemos a sus valores?? Igualmente con el índice, la única diferencia es que este sera un valor asociativo (string), si quiero saber el nombre como lo haríamos??
    echo $arreglo['nombre']
    
    Los arreglos son una de las partes fundamentales del lenguaje ya que con este tipo de datos es que mayormente se obtienen los resultados de consultas a las base de datos (ya llegaremos alla :-))
  • Objetos: Los objetos son un tipo de dato más complejo, para los que están comenzando en el mundo de la programación decirle que es un objeto y hablarles de métodos, atributos sería correrlos (un poco de humor :-)), pero para los que gusten en un artículo anterior se toco ese tema.
Ahí tenemos alguno de los tipos de datos que podemos tener en una variable, una vez que entendemos el funcionamiento de las variables, ahora veamos lo que son las constantes.

Una constante como su nombre lo indica es un valor que siempre sera el mismo dentro de un sistema, en PHP las definimos por medio de la funcion define(), son un poco menos utilizadas que las variables, pero si tienen su funcionalidad :-), veamos la definición de estas.


define('constante',"Valor de la Constante");
echo constante;
Como podemos ver las constantes se definen fácilmente, tenemos que tener claro que una constante solo es definida una vez, su valor luego no puede ser modificado.

Fácil o no??


Hay que destacar que hay que cosas que tenemos que tener en cuenta al momento de declarar una constante, colocaremos algunas a continuación
  • Las Constantes solo pueden ser definidas una vez, si en algún momento necesitáramos variar su valor entonces ya no tendría razón crear una constante sino crear una variable, hacer algo como esto
    define('constante',"Valor de la Constante");
    define('constante',"Otro valor");
    echo constante;
    
    Sería un esfuerzo perdido para no decir error ya que el interprete de PHP no mostraría ninguno, pero el resultado siempre sera "Valor de la Constante" porque son constantes :-).
  • Las constantes solo contienen valores escalares, que quiere decir esto?? que no contendrán array ni objetos dentro de ellas.
Una vez tenemos un poco más claro lo que son las variables y constantes hagamos un pequeño programita, sencillo pero donde implementemos lo hablado hoy.
calculo del área de un circulo
Indique el Radio:


Como vemos es un pequeño programa donde calculamos el área de un circulo, fácil verdad.
Un poco fuera del tema principal como se puede notar PHP no trabaja solo ya que es un lenguaje de servidor, la parte visual que ve el cliente la hacemos con el HTML, en el programa que acabamos de hacer embebimos el PHP dentro de las etiquetas HTML.

En conclusión hablamos de lo que son las variables y constantes en PHP, espero que se entienda lo que se quiso transmitir en este tercer artículo para los que se inician con el PHP

lunes, 6 de junio de 2011

Comenzando con PHP - MI Primer Código

En esta entrada comenzaremos a escribir código PHP, para los que no lo conocen PHP es un lenguaje de tipo Scripter(Interpretado) que se ejecuta del lado del servidor, desarrollado para realizar aplicaciones web dinámicas, combinándolo con el lenguaje de etiquetas HTML y un servidor de base de datos como MySQL que es del que estaremos hablando a medida que vayamos creando artículos relacionados(un poco de teoría nunca puede faltar :-)).

Como podemos escribir código PHP??

Para empezar a escribir código PHP hay una serie de programas que hacen falta, de los cuales hablamos en el artículo anterior, una vez instalados todos estos artículos solo nos queda comenzar a escribir nuestro código.

Para que nuestro navegador interprete el código que vayamos escribiendo es necesario encerrar entes entre la etiqueta de apertura y cierre de PHP, las cuales presentamos a continuación:

  • <?php Etiqueta natural del Lenguaje: Es la etiqueta de apertura (opent_tags) del lenguaje, es la más recomendada de todas las formas que existen para indicar que utilizaremos código PHP.
  • <?  Etiqueta corta: Con esta etiqueta igual que la anterior indicamos a nuestro navegador que debe intrepertar el código como código PHP, esta etiqueta esta desaconsejada debido a que hay muchos web-hosting que traen deshabilitado el short_open_tags lo cual puede traer problemas al momento de implementar nuestro archivo un poco mas de información sobre este tema aca, además de que esta forma trae problemas con la apertura del documento XML ejemplo <?xml version="1.0" encoding="UTF8">

  • <?= "string" ?> Con esta etiqueta indicamos al navegador que imprima lo que se encuentra después del signo igual lo que nos mostraría en el navegador "string", como es parte del short_open_tag esta desaconsejado totalmente.
  • ?> etiqueta de cierre de PHP, si tal y como lo imaginas con esta etiqueta cerramos el código PHP que hallamos generado.
Como podemos  ver existen varias maneras para que nuestro navegador interprete que el código es de PHP, como se indico la manera más recomendable y la que utilizaremos sera <?php  ?>.

Una vez establecido el como indicamos que estamos trabajando con PHP, llega el momento mas esperado, el momento de poner manos a la obra.

Lo primero que vamos a hacer es crear un sitio que hará referencia a nuestro código  PHP que generemos, esto lo haremos creando una carpeta en la carpeta /VAR/WWW/ si estamos en linux y seguimos el tutorial  anterior o en la carpeta HTDOCS si estamos en windows e instalamos el XAMPP para windows como se indico en el artículo anterior. Entonces en la carpeta que sea su caso creemos una caperta llamada comenzando, dentro de esta carpeta van a ir todos los archivos HTML,PHP que vayamos generando, entonces dentro de nuestra carpeta comenzando creemos un archivo llamado index.php, este archivo contendrá nuestro primer programa, este sera el clásico Hello World o Hola mundo, y  escribiremos el siguiente código
index.php

Si en nuestro navegador colocamos

http:/localhost/comenzando

obtendremos en el la palabra Hola Mundo!.

Nota: En este caso no se indico el archivo .php porque todo archivo index es considerado el archivo inicial a ejecutar, si hubieramos llamado al archivo comenzando.php tendríamos que haber indicado la dirección al navegador de esta manera

http:/localhost/comenzando/comenzando.php

Fácil no?? 

Pero familiaricémonos con la sintaxis de PHP, la primera línea como vemos tenemos la etiqueta de apertura <?php, en la segunda linea tenemos la funcion echo, esta función lo que haces es enviar una salida al navegador, en este caso la palabra Hola Mundo, como es una cadena de carácteres o string esta cadena va entre comillas, bien sean simples ' ', o dobles " " y el final de la línea tenemos el ;, que indica que finalizo la línea de instrucción de nuestro código de PHP, fácil verdad??

Como vemos la sintaxis de PHP es bastante sencilla, pero claro no vamos a utilizar PHP solo para hacer un programa con el Hola Mundo, más adelante iremos adentrándonos un poco más en este maravilloso lenguaje, un saludo y hasta la próxima entrada.

domingo, 5 de junio de 2011

Comenzando con PHP - que debemos tener para empezar

En esta entrada vamos a hablar sobre lo que tenemos que tener para comenzar a trabajar con PHP, de tal manera que no tengamos problemas al momento de comenzar a desarrollar nuestros proyctos.

Lo primero que tenemos que tener es un servidor Apache, IIS entre algunos otros, siendo en mi opinión personal trabajando con el PHP el más utilizado el Apache y este el que vamos a indicar como instalar, en este artículo, además de este debemos instalar también el PHP5 con su la librería para apache2, también un servidor y un cliente de  base de datos en este caso trabajaremos con MySQL, sin más preámbulo pongamos manos a la obra:


En los sistemas linux lo hacemos de la siguiente manera:
Lo primero que debemos de hacer es colocarnos como usuario root para tener permisos para instalar en programas en nuestro equipo esto lo hacemos con las siguientes lineas
sudo su
este comando nos pedirá la contraseña de administrador
[sudo] password for tuusuario:
una vez que estamos como root en nuestra terminal empezamos la descarga del software por medio del comando apt-get de la siguiente manera.
#con esta línea instalamos el servidor apache en nuestro equipo
apt-get install apache2
#con esta línea instalamos el el PHP a nuestro equipo
apt-get install php5
#Ahora instalamos el modulo de apache para PHP5
apt-get install libapache2-mod-php5
#instalamos el modulo de PHP para trabajar con MySQL
apt-get install php5-mysql
#Ahora instalamos el soporte para la librería GD de PHP
apt-get install php5-gd
#Instalamos la librería DOM de PHP
apt-get install php5-dom
Ya teniendo instalado el Apache y el PHP, para probar debemos de colocar en nuestro navegador
http://localhost y en este nos debe de salir la frase

It works!

Ya con esto podemos empezar a crear nuestros sitios con PHP, para esto debemos de crear las carpetas de nuestros sitios dentro de la carpeta /var/www y llamarla por el navegador, ejemplo
suponiendo que tenemos un este árbol de carpeta /var/www/misitio/, la dirección dentro del navegador sería
http://localhost/misitio
esto llamaría al archivo index creado dentro de la carpeta misitio en /var/www.
Ahora nos queda instalar el Servidor de Base de datos MySQL.
#procedemos a instalar el servidor mysql
apt-get install mysql-server
#aunque el MySQL trae un cliente para el terminal, instalaremos el PHPMYADMIN un cliente que se trabaja por el navegador
apt-get install phpmyadmin

Una vez instalado el PHPMYADMIN para que pueda ser llamado por el navegador debemos de colocar un enlace simbólico a este, de la siguiente manera
ln -s /usr/share/phpmyadmin /var/www/
lo que hace este comando es crear un enlace simbolico desde /usr/share/phpmyadmin que es donde queda instalado el PHPMYADMIN a /var/www de tal manera que cree un sitio con el nombre PHPMYADMIN.

Luego de estos pasos ya tenemos listo nuestro equipo para realizar aplicaciones con PHP y MySQL

Pero los usuarios de Windows que??

Para hacer la instalación del Apache, PHP y MySQL en windows es un poco mas sencillo ya que existen programas como xampp, wampserver, appserver que traen un paquete con cada uno de estos programas instalados, incluso trae por defecto el PHPMYADMIN, en lo personal me gusta mas trabajar con el XAMPP, por lo cual es el que indicare en este artículo:
Paso 1:
Descargar desde la web oficial: Apache Friends
Paso 2:
Instalar Xampp, este programa te pedirá una ruta a instalar, personalmente lo trabajo en la raíz por lo que crearía una carpeta de esta forma en C:\xampp.
Paso 3: Una vez instalados los paquetes este te mostrara un panel de control donde puedes iniciar o detener cada uno de los servidores instalados.

Luego de tener instalado el xampp y funcionando correctamente solo nos queda crear nuestros sitios en la carpeta HTDOCS ubicada dentro de la carpeta c:\xampp\, quedando por ejemplo
c:\xampp\htdocs\misitio

cuando queramos ver estos sencillamente debemos colocar en el navegador
http://localhost/misitio
y esto nos direccionara a la página index creada en la carpeta misitio.

Luego de esto solo nos queda instalar un IDE con soporte para PHP, personalmente trabajo con eclipse y su plugin para PHP, pero tambien existe Aptana, netbeans para PHP, entre algunos otros
Espero que halla podido explicar bien esto ya que lo más importante para comenzar a trabajar con una aplicación es tener correctamente instalado los programas que vamos a utilizar.

jueves, 19 de mayo de 2011

Conociendo las clases POO setter y getter

En el día de hoy vamos a hablar un poco de un tema que aunque básico es importante al momento de crear nuestras clases y estos son los "setter y los geter".

Para dar una pequeña introducción al tema vamos a explicar que son cada uno de ellos, comenzando por el setter. Un setter es un método de una clase que sirve para asignarle un valor a un atributo de una clase.

Un poco de repaso de POO, un atributo son las características de un objeto, estos por buena práctica deben de ser de acceso privado, de tal manera que solo puedan ser modificados por la misma clase de la que son características y no por otra.

Continuando con lo que se refiere al metodo setter, cuando creamos este tipo de método estamos dando acceso a otros objetos o lugar de nuestra aplicación a indicar el valor de un atributo de nuestra clase, un ejemplo de este.

class MiClase
{
    private $atrbibutoClase;
    private $otroAtributo;
    public function setAtributoClase($atrbibutoClase)
    {
        $this->atrbibutoClase = $atrbibutoClase;
    }   
    public function setOtroAtributo($otroAtributo)
    {
        $this->otroAtributo = $otroAtributo;
    }   
}

Como posemos ver son metodos que asignan valor a cada atributo de nuestra clase
MiClase, de tal manera que podamos trabajar con los datos de esta.

Hasta aca esta sencillo nuestro trabajo con los setter, pero que con los tipos de datos que estos pueden recibir??

En Java por ejemplo este tipo de métodos se les indica el tipo de valor que reciben en el parámetro ya que java es exigente en cuanto a los tipos de datos que se le asignan a las variables y atributos, pero que con nuestro amado PHP.

Hasta el día de hoy nunca había tomado en cuenta la validación de tipo de dato que se da a los setter ya que tengo una clase con la que valido los datos al momento de estar trabajand, pero en el día de hoy foreando un poco en este tema en específico entendí que se puede o mejor dicho debe hacer la validación en nuestros métodos setter. Entonces como quedarian nuestros setter con validaciones??

Suponiendo que uno de los datos sea de tipo numerico quedaria de la siguiente manera.

<?php 
class MiClase
{
    private $atrbibutoClase;
    private $otroAtributo;
    public function setAtributoClase($atrbibutoClase)
    {
        if(is_numeric($atrbibutoClase)){
           $this->atrbibutoClase = $atrbibutoClase;
        }
        else{
             throw new Exception("EL dato debe de ser numerico");
        }
    }       
}
$class = new MiClase();
$class->setAtributoClase("hola");
?>

como vemos hacemos una validacion y sino lanzamos una excepcion indicando que el tipo de dato no es el correcto para este atributo de nuestra clase.

Como vemos aunque son métodos sencillos los setter en PHP tienen que tener un poco de lógica para hacer la validación de tipo de datos del mismo.

Ahora hablemos un poco de los getter, los getter son los métodos que retornan o muestran el valor de un atributo de nuestra clase. Entonces como quedaria nuestro getter??

public function getAtrbibutoClase()
{
    return $this->atrbibutoClase;
}
De esta manera al momento de tener una instancia de nuestro objeto MiClase solo con llamar a este método obtendriamos el valor de el atributo especificado.

Estos métodos de los que hablamos hoy son valiosamente útiles al momento de declarar nuestras clases ya que nos dan acceso a los atríbutos de la misma.

Espero que esta entrada sea de su agrado y que halla explicado bien la misma, cualquier sugerencia o corrección me la hacen saber, saludos.

viernes, 1 de abril de 2011

Entendiendo el MVC II

Siguiendo un poco el consejo del amigo mr_robb me dispuse a llevar un poco lo que hicimos a POO en PHP, para ir mostrando como trabajar los modelos y controladores con esta forma de programar, naturalmente cambia todo lo que es nuestro código anterior ya que ahora trabajaremos clases para nuestros modelos y controladores, aunque en lo que es el trabajo deberian de llevar a lo mismo un pequeño login.

Como lo que se quiere es mostrar como trabajar con los controladores y modelos y no hemos creado una clase base para estos ni para la vista incluiremos e instanciaremos los mismos en el momento que sea el caso pertinente, bueno acontinuación el nuevo código de nuestros modelos

usuario.php

/**
*
*Clase Modelo para gestionar los Usuarios
*/
/*Traemos la clase para trabajar las conexiones con la base de datos*/
require_once("db.php");
class Usuario 
{
 /**
 *
 *Definicion de atributos
 */
 private $_connection;
 /**
 *
 * Metodo Constructor para inicializar la conexion con la DB
 */
 public function __construct()
 {  
  $this->_connection = new db();
 }
 /**
 *
 *Metodo que gestiona el login de la aplicacion
 */
 public function login($user,$password)
 {
  $login = $this->_connection->selectAll('users',array('user'=>$user,'password'=>$password));
  if(count($login > 0)){
   if($login[0]['estatus'] === 'habilitado'){
    return true;
   }
   else{
    return "deshabilitado";
   }
  }
  else{
   return false;
  }
 }
 /**
 *
 * Metodo para agregar los usuarios 
 */
 public function agregarUsuario($datos = array())
 {
  if(!is_array($datos)){
   return false;
  }
  $insert = $this->_connection->insert('users',$datos);  
  if($insert){
   return true;
  }
  else{
   return "fallo";
  }  
 } 
 /**
 *
 *Metodo para deshabilitar los usuarios
 */
 public function deshabilitarUsuario($user)
 {
  $update = $this->_connection->update('users',array('estatus'=>'deshabilitado'),array('user'=>$user));  
  if($insert){
   return true;
  }
  else{
   return "fallo";
  }  
 }
}
Como podemos observar es una clase donde hacemos toda la lógica que tiene que ver con la gestión de usuarios, dentro de la misma se instancia la clase DB para trabajar con la base de datos (la clase DB es la implementada en este artículo).

UsuariosController.php

session_start();
require_once("model/usuario.php");
class UsuariosController
{
 private $model = new Usuario(); 
 public function login($user,$pass)
 {
  if($_SERVER['REQUEST_METHOD'] == "POST"){ 
   $login = $this->model->login($user,$pass);
   if($login){
    $_SESSION['login'] = "si";
    header("location: index.php");
    exit;
   }
   elseif($login === "deshabilitado"){
    unset($_SESSION['login']);
    $_SESSION['messaje'] = "Usuario Deshabilitado";
    header("location:index.php");
    exit;
   }
   else{
    unset($_SESSION['login']);
    $_SESSION['messaje'] = "Usuario o Contraseña incorrecto";
    header("location:index.php");
    exit;
  }
  else{
   header("location:login.php");
   exit;
  }
 } 
}

En el caso del controlador podemos visualizar que es una clase que instancia el modelo y llama a sus métodos de la lógica segun una acción, en este caso solo indicamos la del login para no extendernos tanto, lo importante es que se vea que el controlador no tiene ninguna lógica del negocio como plantean algunas personas, sino que en este se llama a la lógica del mismo según la acción indicada y según el caso este llamara a la vista correspondiente.

También es importante destacar que por cada acción (método) del controlador que realicemos debemos de crear una vista (código html) de tal manera que este tenga a donde redirigir y mandar los mensajes al usuario si esto es pertinente.

Como podemos ver el MVC es más útil cuando se trabaja de manera orientada a objetos, aunque esta es solo una aplicación sencilla de un login, podemos ver algo mas avanzado sobre este patrón en este artículo MVC avanzado donde el autor nos muestra como crear las clases para gestionar controladores y vistas de una gran manera, espero que esta pequeña introducción a este patrón de diseño les sirva como base en lo referente a este patrón, saludos

lunes, 28 de marzo de 2011

Entendiendo el MVC

En esta entrada vamos a hablar un poco del MVC, con la intención de hacerlo entendible a personas que se estén iniciando con este patrón de diseño lo llevaremos desde un punto de vista sencillo y entendible para cualquiera que tenga nociones de programación.

Pondremos manos a la obra haciendo una pequeña definición de este patrón de diseño.


El Patrón MVC sus siglas en ingles significan Model View Controller que significa Modelo Vista Controlador, es una arquitectura de Software que define la separación de los datos que conforman la vista de la lógica de una aplicación.

Esto se hace con la finalidad de que cada una de las partes de una aplicación solo realice lo que está en su responsabilidad, además de que le da mayor entendimiento a nuestros desarrollos y los hace más fácil de mantener, ya que la parte del diseño solo tiene la cantidad de código de programación que necesita al igual que en la parte que conforma nuestro código del negocio solo se va a encontrar lógica de programación en el lenguaje que estemos trabajando (PHP en nuestro caso) y no como algunos estamos acostumbrados muchos a hacer cosas como estas:



Insertar un registro


Como vemos tenemos el código de nuestro negocio que es la inserción del registro y la vista en un mismo archivo cosa que no es de lo mas recomendable y es lo que este patrón desea evitar.

Ya sabemos que es lo que no quiere el MVC pero veamos en si lo que está detrás de sus siglas.

  • V (View o Vista): Aunque la primera letra del patrón es la M decidí mejor hablar primero de la vista ya que es lo más sencillo de explicar al momento de trabajar con este patrón.

    La vista como su nombre lo indica es la parte visual, lo que el usuario final visualizara en su aplicación.

    La vista podemos establecerla como la primera fase de este patrón ya que la vista es la que comunica al usuario lo que quiere ver, esta tiene acceso directo al modelo como podemos observar en la imagen que tenemos en la parte superior y es esta la que transmite los datos a la aplicación para hacer el proceso que necesitemos

  • M (Model o Modelo):El modelo es lugar donde se encuentra la lógica del negocio de nuestro desarrollo, es ahí donde se procesan todos los datos provenientes de la vista.
  • C (Controller o Controlador): Es el encargado de hacer la conexión entre la parte visual y la lógica del negocio de nuestro desarrollo (MODELO), este se encarga de pasar los datos de la vista hacia el modelo y según la respuesta que este le entregue selecciona la vista a cargar pasando los datos provenientes del modelo.

Bien hasta ahora hemos visto la teoría de este patrón pero como se construye una aplicación con él??

Vamos a trabajar de la manera más básica posible, para ello vamos a trabajar un poco el PHP de manera estructurada aunque mayor provecho a este patrón se saca trabajando OOP; Planteemos un ejemplo que todo sistema debe de tener una gestión de usuarios, entonces normalmente cuando trabajábamos sin el patrón hacíamos algo como esto



Como podemos observar es un login básico que hace todo el proceso en la misma página, si llegara un usuario y se logueara correctamente lo haría, pero como vemos tenemos lo que yo llamo un arroz con mango en nuestro código, pasemos este pequeño login al patrón MVC.

Comencemos con la vista

login.php

Como podemos observar la vista de nuestro pequeño sistema de login es todo lo que corresponde al HTML dejando todo el proceso ya que este corresponde a la lógica de nuestro negocio la cual estará en el modelo.

Ahora nuestro modelo.
usuario.php

Como vemos en nuestro modelo hicimos una función ya que el modelo del usuario debería tener toda la lógica que corresponde a la gestión de estos, como registrar, modificar y eliminar usuarios, para el ejemplo fuera lo más sencillo posible trabaje con el login ya que es algo que normalmente se hace en cualquier tipo de sistema.

Pero el controlador donde queda??

Como vemos ya tenemos la parte visual de nuestro login y tenemos la parte del negocio de nuestra aplicación pero para que el controlador y donde queda?? Como ya definimos el controlador comunica los datos de la vista al modelo entonces como debe de ser este?? Algo como esto

usuariosController.php



Con este pequeño controlador podemos observar cual es la función de este, sencillamente pasar datos de la vista al modelo y según la respuesta cargar la vista que se necesite según los datos obtenidos del modelo, sencillo no??

Espero que esta entrada ayude a los que están comenzando a conocer este patrón de diseño a entenderlo un poco mejor lo hice lo más sencillo posible según mi criterio :-), saludos hasta una próxima entrada.

viernes, 25 de marzo de 2011

Hablando de Clases y Objetos POO

En un artículo anterior habíamos tocado el tema de las clases y los objetos desde el punto de vista del PHP aunque muy generalizado, en el día de hoy vamos a tocarlo un poco mas general de tal manera que podamos tener claro que son.

Cuando hablamos de un Objeto la teoría nos indica que es la instancia de una clase, en PHP mayormente asignado a una variable de esta manera

$objeto = new Clase();
var_dump($objeto)
el resultado seria
object(Clase)#1 (1) { ["var":"Clase":private]=> NULL } 

Como vemos la variable $objeto se convirtió justamente en eso en un Objeto o una instancia de la clase Clase donde por medio de esta instancia podemos acceder a sus métodos y atributos públicos por cierto.

Ok el concepto de objeto sencillo la instancia de una clase, pero entonces que es una clase, es ahí donde muchos autores nos complican la vida literalmente diciéndonos que es una abstracción de datos, donde el concepto de abstracción de datos es algo muy complicado por lo que muchos o huimos del concepto o sencillamente nos quedamos con dudas sobre este concepto.

En lo personal tenía algunas dudas con lo que era el concepto de una clase y abstracciones de datos pero esta semana creo que se me aclaro mucho por lo que decidí hacer este post, entonces comencemos con los conceptos que tanto nos cuesta a algunos.

Una clase: es simplemente una entidad compleja llevada a lo resumido pero como es esto?? Un ejemplo pudiera ser cuando necesitamos trabajar con animales, todos conocemos que existen muchas clasificaciones de los animales, ejemplo por lo que comen (herbívoros, carnívoros....) o por la forma que nacen (ovíparos, mamíferos...) pero todo esta complejidad la resumimos en una sola palabra es decir Animales. Que fácil no??, también podríamos decir que una clase es un tipo de datos creados por el desarrollador, pero como así?? Explico un poco mi experiencia y la de algunos profesores que he tenido, no sé si en algún momento alguien ha visto algo como esto

public function miMetodo(Animales $animal){
/*grupo de sentencias del metodo miMetodo*/
}
Como podemos observar el parámetro del método miMetodo es de tipo Animales pero donde está definido este tipo de datos??? En una clase que creamos llamada Animales, entonces también podríamos definir a una clase como la declaración de un tipo de dato creada por el desarrollador, un ejemplo de esto es en JAVA los desarrolladores de este lenguaje notaron que no había un buen soporte para el trabajo con las variables de tipo carácter, por esto crearon una clase llamada String que define este tipo de datos ejemplo
String var;
y así indicamos al lenguaje que trabajaremos la variable var como de tipo String una clase creada por JAVA y podemos acceder a todos sus métodos y atributos de esta.

Aunque la explicación de que es una clase fue algo larga creo que lleva lo complicado a lo simple tal cual como lo hace una clase, pero entonces en donde esta lo abstracto de las clases o mejor dicho que es una abstracción?? El concepto de abstracción va ligado al de la clase, como es esto?? Sencillamente lleva lo complejo a lo sencillo ya que se enfoca en el que hace y no en como lo hace con todo lo complejo que esto pueda ser.

Bueno espero que esta entrada sea del agrado de todos, es sencillamente un artículo que intenta llevar lo complicado del concepto de una clase a ser entendido de manera fácil tal cual y como lo hace una clase.

lunes, 14 de marzo de 2011

clase validación de datos

Buenas un poco abandonado el blog el día de hoy compartire una clase que realice para hacer validaciones, esta clase surge de un tema que planteaba en forosdelweb por una duda correspondiente al patrón MVC, según tenía entendido por un poco de experiencia con el framework cakePHP, la lógica de nuestros sistemas se encuentra en el controlador según entendia yo :-), resulta que esto era un error de concepto que tenia y los amigos del foro me ayudaron a entender y ver este error, luego de entender este concepto me genero otra duda donde realizar las validaciones?? en el controlador?? en el modelo?? según mi criterio si en el patrón MVC toda la lógica y el trabajo con los datos se hace con el modelo entonces las validaciones de los datos deve de ser en el modelo, entonces me dispuse a crear una clase para hacer las validaciones es una primera versión que hace la validación de manera correcta lo unico que se debe es llamar al método de la clase e indicar los parámetros para realizar la validacion

/**
/**
* Clase para realizar validaciones en el modelo
* Es utilizada para realizar validaciones en el modelo de nuestras clases.
*
* @author Carlos Belisario
*/
class Validacion
{
 protected $_atributos;
 protected $_error;
 public $mensaje;
 
 /**
 * Metodo para indicar la regla de validacion
 * El método retorna un valor verdadero si la validación es correcta, de lo contrario retorna el objeto 
 * actual, permitiendo acceder al atributo Validacion::$mensaje ya que es publico
 */
 public function rules($rule = array(),$data)
 {
  
  if(!is_array($rule)){
   $this->mensaje = "las reglas deben de estar en formato de arreglo";
   return $this;
  }  
  foreach($rule as $key => $rules){
   $reglas = explode(',',$rules['regla']);
   if(array_key_exists($rules['name'],$data)){
    foreach($data as $indice => $valor){     
     if($indice === $rules['name']){
      foreach($reglas as $clave => $valores){ 
       $validator = $this->_getInflectedName($valores);        
       if(!is_callable(array($this, $validator))){
          throw new BadMethodCallException("No se encontro el metodo actual");
       }
       $respuesta = $this->$validator($rules['name'], $valor);        
      }
      break;
     }
    }
   }
   else{
    $this->mensaje[$rules['name']] = "el campo $value no esta dentro de la regla de validación o en el formulario";    
   }
  }  
  if(!$respuesta){
   return $this;
  }
  else{
   return true;
  }
 } 
 
 /**
 * Metodo inflector de la clase 
 * por medio de este metodo llamamos a las reglas de validacion que se generen
 */
 private function _getInflectedName($text)
 {
  $_validator = preg_replace('/[^A-Za-z0-9]+/',' ',$text);
  $arrayValidator = explode(' ',$_validator);    
  if(count($arrayValidator) > 1){
   foreach($arrayValidator as $key => $value){     
    if($key == 0){
     $validator .= "_".$value; 
    }
    else{     
     $validator .= ucwords($value);
    }
   }
  }
  else{
   $validator = "_".$_validator;
  }    
  return $validator;
 }
  
 /**
 * Metodo de verificacion de que el dato no este vacio o NULL
 * El metodo retorna un valor verdadero si la validacion es correcta de lo contrario retorna un valor falso
 * y llena el atributo validacion::$mensaje con un arreglo indicando el campo que mostrara el mensaje y el 
 * mensaje que visualizara el usuario
 */
 protected function _noEmpty($campo,$valor)
 {   
  if(isset($valor) && !empty($valor)){   
   return true;   
  }
  else{   
   $this->mensaje[$campo][] = "el campo $campo debe de estar lleno";
   return false;
  }
 }
 /**
 * Metodo de verificacion de tipo numerico
 * El metodo retorna un valor verdadero si la validacion es correcta de lo contrario retorna un valor falso
 * y llena el atributo validacion::$mensaje con un arreglo indicando el campo que mostrara el mensaje y el 
 * mensaje que visualizara el usuario
 */
 protected function _numeric($campo,$valor)
 {   
  if(is_numeric($valor)){
   return true;
  }  
  else{
   $this->mensaje[$campo][] = "el campo $campo debe de ser numerico";
   return false;
  }
 }
 
 /**
 * Metodo de verificacion de tipo email
 * El metodo retorna un valor verdadero si la validacion es correcta de lo contrario retorna un valor falso
 * y llena el atributo validacion::$mensaje con un arreglo indicando el campo que mostrara el mensaje y el 
 * mensaje que visualizara el usuario
 */
 protected function _email($campo,$valor)
 {
  if(preg_match("/^[a-z]+([\.]?[a-z0-9_-]+)*@[a-z]+([\.-]+[a-z0-9]+)*\.[a-z]{2,}$/",$valor)){     
   return true;
  } 
  else{
   $this->mensaje[$campo][] = "el campo $campo de estar en el formato de email usuario@servidor.com";
   return false;
  }
 }
}
el uso de la clase es muy sencillo aca dejo las pruebas que realice a la clase

$_POST['campo1'] = 1;
$_POST['campo2'] = "usuario@hotmail.com";
$datos = $_POST;
$validacion =  new Validacion();
$regla = array(
   array('name'=>'campo1','regla'=>'no-empty,numeric'),
   array('name'=>'campo2','regla'=>'no-empty,email')
  );
$validaciones = $validacion->rules($regla,$datos);
print_r($validaciones);

por ahora solo tengo tres reglas de validación son muy básicas y sencillas, espero que sea de su agrado si tienen alguna corrección o critica que hacer a la clase no hay ningun problema, saludos

domingo, 13 de febrero de 2011

MySQL: Lenguaje de Consulta de datos DQL Parte III

Continuando con el Lengaje de consulta de datos DQL, hablaremos de funciones que podemos utilizar para trabajar los datos que obtendremos en nuestras consultas y  las operaciones que podemos realizar con cada uno de estos datos, estas funciones nos ahorran trabajo al momento de mostrar los datos que necesitamos normalmente en nuestros sistemas facilitandonos mucho la vida al momento de trabajar con un lenguaje de programación sea este cual sea.

Bueno ya es hora de que conozcamos estas funciones que hablabamos en la introducción de este artículo, empezemos nuestra lista de funciones con una de las mas básicas y utilizadas:

a)COUNT(): Esta funciób ya la aviamos trabajado en el artículo anterior aunque no la habiamos explicado cual es su uso, lo que esta función hace es contar el numero de registros que devuelve una consulta, veamos un ejemplo:

SELECT COUNT(*) FROM tabla WHERE estatus = 1;

El resultado nos dira cuantos son los registros cuyo estatus es igual a 1, esta consulta es muy util al momento de dar numeros mientras administramos nuestras DB.

b) SUM(): Con esta función realizamos la suma de los valores que se encuentran en un campo especifico, la sintaxis de esta sentencia es la siguiente

SELECT SUM(campo) FROM tabla;

Como resultado de esta consulta obtendremos el valor de la suma de todos los valores que tienen el campo "campo".

c)AVG(): Esta función nos calcula un averaje del campo seleccionado un pequeño ejemplo:

SELECT AVG(campo) FROM tabla;


Esto nos dara un average del campo que seleccionemos.

Nota: Antes de continuar cabe destacar que las funciones que nombramos anteriormente exectuando la funcion COUNT trabaja mayormente con la cláusula GROUP BY, ya que mayormente cuando queremos un averaje por ejemplo de un deporte queremos saberlo por deportista, igualmente una suma.

d)DISTINCT(): Esta funcion nos da como resultados los distintos valores que se encuentran en el campo especificado, en un ejemplo si existen mil registros que tienen el nombre carlos, cien que tienen el nombre luis nos dara como resultado carlos y luis una sola vez. Ejemplo:

SELECT DISTINCT(campo) FROM tabla;

e)MAX(): Esta funcion nos da como resultado el valor máximo que tiene un campo en una tabla, la sintaxis al igual que las funciones anteriores es la siguiente

SELECT MAX(campo) FROM tabla;

f)MIN(): Esta función es la inversa a la descrita anteriormente, ya que la misma nos devuelve el valor mínimo que existe en un campo de la base de datos, sintaxis:

SELECT MIN(campo) FROM tabla;

g)CONCAT(): Con esta función concatenamos el valor de dos campos, la sintaxis de la misma es la siguiente:

SELECT CONCAT(campo1,'valor con el que se concatenara',campo2);

Veamoslo en un ejemplo:

SELECT CONCAT(nombre,', ',apellido) FROM datos_personales;

El resultado nos concatenara el nombre y el apellido separados por una coma.

Nota: Si se desea concatenar con un espacio en blanco con tan solo darle un espacio entre las comillas del segundo parámetro obtendremos el resultado requerido.

h)DATE_FORMAT(): Esta función la utilizamos para darle el formato a nuestros campos de tipo fecha, la sintaxis de esta funcion es a siguiente:

SELECT DATE_FORMAT(campo_date,'%formato'); los formátos de la función DATE_FORMAT los tenemos acontinuación:

Especificador Descripción
%a Día de semana abreviado
(Sun..Sat)
%b Mes abreviado (Jan..Dec)
%c Mes, numérico (0..12)
%D Día del mes con sufijo inglés (0th,
1st, 2nd,
3rd, ...)
%d Día del mes numérico (00..31)
%e Día del mes numérico (0..31)
%f Microsegundos (000000..999999)
%H Hora (00..23)
%h Hora (01..12)
%I Hora (01..12)
%i Minutos, numérico (00..59)
%j Día del año (001..366)
%k Hora (0..23)
%l Hora (1..12)
%M Nombre mes (January..December)
%m Mes, numérico (00..12)
%p
AM o PM
%r Hora, 12 horas (hh:mm:ss seguido de
AM o PM)
%S Segundos (00..59)
%s Segundos (00..59)
%T Hora, 24 horas (hh:mm:ss)
%U Semana (00..53), donde domingo es
el primer día de la semana
%u Semana (00..53), donde lunes es el
primer día de la semana
%V Semana (01..53), donde domingo es
el primer día de la semana; usado con
%X

%v Semana (01..53), donde lunes es el
primer día de la semana; usado con
%x
%W Nombre día semana
(Sunday..Saturday)
%w Día de la semana
(0=Sunday..6=Saturday)
%X Año para la semana donde domingo es el primer día de la semana,
numérico, cuatro dígitos; usado con
%V
%x Año para la semana, donde lunes es el primer día de la semana,
numérico, cuatro dígitos; usado con
%v
%Y Año, numérico, cuatro dígitos
%y Año, numérico (dos dígitos)
%% Carácter '%' literal
Fuente: Manual de MySQL

Los usos de esta función los podemos ver en este artículo  donde se mostraban algunos de los usos que se le da a esta útil función que utilizamos para formatear nuestras fechas.

Estas son algunas de las funciones que nos ofrece MySQL para trabajar los datos que obtenemos, existen otras que podemos encontrar en el manual oficial de este manejador de base de datos.

Operaciones que se pueden realizar en nuestras Consultas con MySQL

En nuestras consultas podemos realizar operaciones aritméticas y lógicas, veamos un poco de estas.

a)SUMA: Anteriormente vimos como sumar todos los datos de un campo, pero que si necesitamos el resultado de la suma de dos campos diferentes?? esto podemos hacerlo por medio del operador +, en nuestra consulta de tal manera que la consulta quede así:

SELECT campo1 + campo2 FROM tabla;

El resultado sera la suma de estos campos de cada uno de los registros, podemos hacerlo con la cantidad de campos que necesitemos en este caso solo se realizo con dos para mostrar la sencilles de la operación.

b)RESTA,MULTIPLICACIÓN Y DIVISIÓN: Tal cual como se indico en la suma podemos hacerlo con la operación de restar, multiplicar y dividir, lo que cambiaria es el  operador a utilizar, siendo los operadores los siguientes:
  • Resta (-).
  • Multiplicacion (*).
  • División (/).
MySQL también  nos permite combinar estas operaciones para obtener resultados necesarios de campos ejemplo:

SELECT (campo1 + campo2) * campo2 - campo3 FROM tabla;

Sencillo la realización de operaciones aritméticas con MySQL verdad, pero que con las operaciones lógicas.

Las operaciones lógicas son un poco más complicadas al momento de trabajar en nuestras tablas ya que mayormente se utilizan las aritméticas pero también podemos hacer uso de estas, veamos como:

Las operaciones lógicas nos dan como resultados dos posibles valores verdadero/falso en el caso de MySQL 1 ó 0,y los operadores son al igual que se indico en la cláusula WHERE los siguientes:

  • Mayor que (>).
  • Menor que(>).
  • Igual (=).
  • Mayor Igual (>=).
  • Menor Igual (<=).
  • Diferente (<>).
Estos son los más usados para mayor información consultar el manual oficial de esta base de datos relacional.

En conclusión aprendimos hoy el trabajo con las funciones y operadores en nuestras consultas DQL, de manera que podamos realizar operaciones aritméticas y lógicas dentro de nuestras consultas teniendo como ventaja que esta nos ahorra realizar este tipo de operaciones con el lenguaje de programación que estemos trabajando nuestro proyecto.

Espero que esta entrada sea de su agrado cualquier sugerencia no duden en indicarla que sera tomada en cuenta, saludos hasta una próxima entrada donde seguiremos el tema de las consultas DQL en MySQL.

domingo, 6 de febrero de 2011

MySQL: Lenguaje de Consulta de datos DQL Parte II

Continuando con el Lenguaje de Consulta de Datos, vamos ha proseguir conociendo las consultas SELECT y sus cláusulas de manera de profundizar un poco mas en la manera en que obtendremos nuestros datos en con nuestras sentencias.

En el artículo anterior vimos como colocar condiciones a nuestras consultas y los distintos operadores que podemos usar para obtener únicamente los datos que necesitamos de nuestras tablas, también estudiamos un poco la cláusula ORDER BY para ordenar los datos obtenidos de nuestra sentencia, pero esto es solo una parte de lo que podemos realizar con el lenguaje de consulta de datos, continuemos con las cláusulas de este tipo de sentencias:

c)LIMIT: Este operador lo utilizamos para indicar la cantidad de resultados que mostraremos en una consulta,esta cláusula nos pide uno o dos parámetros donde indicamos la cantidad de registros que deseamos obtener, por ejemplo:

SELECT * FROM alumno LIMIT 5;

Con esta sentencia obtendremos como resultado los datos de los primeros 5 alumnos, la segunda forma de limitar es indicando un inicio y un fin de los registros que deseamos obtener, un ejemplo:

SELECT * FROM alumno LIMIT 2,10;

De esta manera obtendríamos los datos del tercer hasta el onceavo alumno de nuestra tabla, esto porque?? porque el primer índice que da como resultado MySQL de una tabla es 0.

d)GROUP BY: Como su nombre lo indica sirve para agrupar según un valor especifico, la sintaxis es la siguiente:
SELECT campos FROM tabla GROUP BY campo_agrupar;

Un ejemplo de uso:

SELECT nombre,COUNT(*) FROM empleado GROUP BY nombre;

el resultado nos mostrara los distintos nombres y cuantos hay de cada uno ejemplo


+---------------+---------------------+
| nombre    | COUNT(*) |
+---------------+---------------------+
| Juan         |     5                |
| carlos      |     3                |
| Luis         |     4                |
+--------------+- --------------------+


Estas son algunas de las cláusulas mas utilizadas al momento de trabajar con nuestras consultas de datos, para el próximo artículo hablaremos de la funciones que podemos utilizar al momento de obtener los datos por medio de nuestras consultas, hasta una próxima entrada.

domingo, 23 de enero de 2011

MySQL: Lenguaje de Consulta de datos DQL Parte I

Para esta nueva entrada vamos a hablar sobre el lenguaje de consulta de datos, vamos a mostrar varias consultas que podemos aplicar mediante este tipo de lenguaje.

DQL(): Data Query Lenguage o Lenguaje de Consulta de Datos, es el lenguaje que provee el estándar SQL para recuperar o mostrar los datos existentes dentro de nuestras bases de datos, esta conformado por las sentencias SELECT.

SELECT: Como lo indicamos este tipo de sentencias nos permite recuperar los datos de una base de datos, la sintaxis es sencilla.

SELECT campos FROM tabla;

Donde campos son los campos de la tabla que deseemos traer en nuestra consulta separados por coma (,) y tabla son las tablas de las que deseemos extraer los datos.

Cabe destacar que si en los campos se especifica el asterisco (*) se seleccionaran todos los datos de la tabla indicada, ejemplo:

SELECT * FROM tabla;


Fácil no??

Hasta acá hemos visto una sentencia SELECT simple donde traemos datos de una tabla especifica.


Dentro de las consultas SELECT tenemos cláusulas para colocar condiciones en nuestras consultas de maneras que podamos obtener los datos en forma que deseemos veamos cuales son:

a)ORDER BY: Esta cláusula nos sirve para indicar el orden en que se mostraran los datos obtenidos de nuestra consulta, la sintaxis es la siguiente:

SELECT campos FROM tabla ORDER BY campos_orden [DESC/ASC];

Donde campos_orden es por el campo que estará ordenado nuestro resultado, dando la prioridad a los primeros campos y separando cada uno por coma, [DESC/ASC] es si los queremos de forma ascendente o descendente, si indicamos el campo y no indicamos [DESC/ASC], el lo toma como si fuera ordenar ascendente por defecto,  veamos con un ejemplo:

Deseamos traer los datos personales de los trabajadores ordenados por el apellido:

SELECT nombre,apellido FROM empleado ORDER BY apellido,nombre;

En esta consulta Automáticamente al terminar de ordenar por apellido empieza a ordenar por el nombre por ejemplo si existen dos cuyo apellido sea PEREZ entonces ordena por el nombre

------------------------------
nombre       |  apellido|
-----------------------------
| ALBERTO | PEREZ  |
|PEDRO      | PEREZ   |
-------------------------------------

Aunque los dos tiene el mismo apellido el orden se da por el segundo campo indicado en nuestra consulta, como vimos no indicamos el DESC debido a que no es necesario cuando ordenamos de esta manera aunque hay autores que recomiendan usarlo.

b)WHERE: Esta cláusula nos permite ponerle condiciones a nuestras consultas, de manera de traer solo los campos deseados, su sintaxis es la siguiente:

SELECT campos FROM tabla WHERE campo1='condicion';

Donde campo1 es uno de los campos que estamos colocando como condicional para que nuestra consulta traiga los datos que deseamos, para hacer nuestras condiciones debemos tomar en cuenta los operadores de MySQL, veamos cuales son:

1.- = Signo igual: Lo usuamos en nuestras condiciones para indicar que traiga el dato mientras el valor en el campo sea igual a un valor dado ejemplo:

SELECT nombre FROM empleado WHERE apellido='perez';

El resultado de esta consulta serán todos los registros de nuestra tabla cuyo apellido sea PEREZ.

2.- <> Diferente: Este operador lo utilizamos para obtener los resultados mientras el valor en el campo sea diferente al valor dado, ejemplo:

SELECT nombre FROM empleado WHERE apellido<>'perez';

En este caso el resultado sera contrario al ejemplo anterior ya que solo obtendremos los registros que el apellido sea diferente de PEREZ.

3. > Mayor que: Este operador como su nombre lo indica lo utilizamos para traer datos que el valor del campo indicado sea mayor al campo dado ejemplo:

SELECT nombre,edad FROM empleado WHERE edad>17;

En este caso obtendremos a los empleados que sean mayor de edad, comparando que su edad sea mayor a 18 años.


4.- >= Mayor Igual que: Con este operador indicamos a nuestra condición que el resultado debe de ser mayor o igual a el valor establecido ejemplo

SELECT nombre,edad FROM empleado WHERE edad>=18;

En este caso también obtendríamos los empleados mayores de edad, pero como vemos el valor de la condición es algo diferente.

5.- < Menor que: Con este operador obtenemos los datos que son menores a un valor establecido, ejemplo:

SELECT nombre, edad FROM empleado WHERE edad<18;

Siguiendo con los ejemplo de las edades en este caso obtendríamos los empleados menores de edad.

6.- <= Menor Igual que: Es el inverso a Mayor igual que (>=), es decir mediante de este operador obtenemos los menores o iguales a cierta valor, ejemplo:

SELECT nombre,edad FROM empleado WHERE edad<=17;

7.-LIKE: Indicando este operador indicamos una coincidencia entre el campo y el valor indicado, para esto utilizamos los comodines (%), un pequeño ejemplo de esta sentencia:

SELECT * FROM table WHERE campo LIKE '%carlos%';

De esta manera obtendremos todos los campos donde en campo exista la palabra carlos por ejemplo:

juan carlos
carlos luis
jose carlos perez.

Este operador podemos utilizarlo en varios casos que presentamos a continuacion:

El comodin porcentaje (%): Lo utilizamos para indicar en el patron coincidencias de varios carácteres los posibles casos los mostramos a continuación:

1.- LIKE 'buscar%' : Del resultado de esta condición obtenemos todos los campos donde dentro del campo  "campo" exista la palabra buscar, seguido de cualquier cadena incluyendo también la palabra buscar, posibles resultados:

buscar.
buscar todo.
buscar_algo.

Entre otros posibles resultados.

2.-LIKE '%buscar': El resultado de esta condición es todos los campos indicados que terminen con la palabra buscar incluyendo también la misma palabra, por ejemplo:

buscar
vamos a buscar.

3.- LIKE '%buscar%': Con esta consulta obtenemos resultados que tengan una coincidencia con buscar bien sea al principio, entre cadenas o al final, incluyendo la misma palabra sola por ejemplo:

buscar.
buscar algo.
anda a buscar.
vamos a buscar algo.

Dentro del operador LIKE tambien tenemos otro comodin que mostraremos a continuación:


El comodin underscore (_) : Lo utilizamos en el operador LIKE para indicar que buscara en el patron las coincidencias con un solo carácter, a continuación los posibles casos.

1.-LIKE 'busca_': Los resultados solo seran los que contengan la palabra busca seguido de cualquier carácter, sin incluir la palabra busca solo por ejemplo:

buscar.
buscas

2.- LIKE '_ana': Los resultados seran los que coincidan con el patrón con cualquier primera letra, por ejemplo:

lana.
cana.

3.- LIKE 'ca_a': Con esta condición obtendremos los datos que coincidan con el patrón, siendo la tercera letra variable por ejemplo:

cama.
cana.
caza.
casa.

El operador LIKE es muy útil para trabajar nuestras consultas por medio de patrones y busquedas donde no conocemos completamente el dato.

Continuando con los operadores el siguiente es:

7.- El operador BETWEEN: Utilizado para indicar que el valor del campo este entre dos valores posibles, muy utilizado al momento de comparar  fechas, la sintaxis es la siguiente:

SELECT campo FROM tabla WHERE campo BETWEEN 'valor1' AND 'valor2';


Veamos un ejemplo:

SELECT nombre,fecha_ingreso FROMempleado WHERE fecha_ingreso BETWEEN '2010-01-10' AND '2010-01-20';

El resultado sera el nombre de los empleados y la fecha de ingreso que ingresaron entre el 10 de enero del 2010 y el 20 de enero del 2010, sencillo no??

8.-Operador AND: Lo utilizamos para unir dos o más condiciones, para que exista una respuesta se deben cumplir cada una de estas, la sintaxis es la siguiente:

SELECT campo FROM tabla WHERE campo1='condicion1' AND campo2='condicion2';

Si alguna de las condiciones no existe no retornara ningun valor esta consulta.

9.-Operador OR: Lo utilizamos para unir dos o mas condiciones, la diferencia con el AND es que para este caso al cumplirse alguna de las condiciones obtendremos un resultado, la sintaxis es la siguiente:

SELECT campo FROM tabla WHERE campo1='condicion1' OR campo2='condicion2';

Al existir coincidencia entre alguna de las condiciones e incluso ambas, la consulta retornara los resultados.

10.-Operador IN: Funciona al igual que el operador OR, pero indicando solo un campo, su sintaxis es la siguiente:

SELECT campo FROM tabla WHERE campo IN('valor1','valor2');

Seria equivalente a lo siguiente

SELECT campo FROM tabla WHERE campo='valor1' OR campo='valor2';


Estos son los operadores mas usados al momento de trabajar con MySQL, podemos obtener mas información sobre ellos en el manual oficial, cualquier otro que no se halla tomado en cuentan no duden en indicarlo.


Por esta entrada es todo, en la próxima continuaremos hablando sobre el Lenguaje de consulta de datos ya que es un tema bastante extenso, cualquier critica o sugerencia es aceptada, saludos

domingo, 16 de enero de 2011

UPLOAD de Archivos Con PHP

Retomando el PHP en esta ocasión compartiremos una clase para subir archivos a nuestro sitio Web, para hacer esta operación utilizaremos la función copy, además trabajaremos con un formulario con un campos tipo file y el enctype "multipart/form-data" para trabajar con la variable $_FILE de PHP,  vamos a la acción.


Un UPLOAD de archivos consiste en subir un archivo de nuestra maquina a un Sitio Web alojado en un servidor, como logramos esto?? moviendo el archivo desde nuestra maquina bien sea mediante la funcion copy o move_uploaded_file(), en lo personal me gusta mas trabajar con la funcion copy, para ello seguiremos una serie de pasos que presentamos a continuación:

Lo primero que tenemos que hacer es crear un formulario


Si nos fijamos nuestro formulario además del método de envió, el nombre y la acción tiene un atributo mas que es enctype donde indicamos el tipo de datos que vamos a enviar por defecto este es application/x-www-form-urlencoded, pero cuando necesitamos enviar archivos necesitamos especificar "multipart/form-data" de manera que nuestro servidor entienda que se han enviado archivos mediante este formulario y podemos utilizar $_FILE


Una vez explicado que para poder subir archivos a nuestro servidor debemos usar este tipo de enctype veamos ahora la clase para subirlos y su implementación

/*

clase para subir archivos al servidor

autor: Carlos Belisario

*/
class upload
{
 #atributo para tener los archivos
 private $_file; 
 #atributo para obtener el peso maximo
 private $_maxSize;
 #atributo para obtener el tipo de archivos a subir
 private $_type;
 #atributo para la ruta donde sera subido el archivo
 private $_ruta;
 #iniciamos toda la magia pasamos como parametro el dato $_FILE['campo'],$destino
 public function __construct($file = NULL,$destino = NULL, $validate = array())
 {   
  if(count($file) === 0){
   echo "debe indicar el archivo que desea subir";
  }    
  else{
   $this->_file = $file;
   if(!empty($destino))
    $this->_ruta = $destino.'/'.$file['name'];      
   else
    $this->_ruta = $file['name'];   
   if(is_array($validate)){
    if(count($validate) > 0){
     if(array_key_exists('maximo',$validate))
      $this->_maxSize = $validate['maximo'];
     if(array_key_exists('tipo',$validate)){
      if(is_array($validate['tipo']))      
       $this->_type = $validate['tipo'];
      else
       echo "debe indicar los tipo de archivo en formato array";
     }
     $return = $this->validate();        
    }
   }
   else{
    $return = $this->uploadFile();   
   } 
   echo $return;     
  }
 }
 private function validate()
 {   
  if(file_exists($this->_ruta))
   $return = "el archivo ya existe en el servidor";  
  if(!empty($this->_maxSize)){    
   if($this->_maxSize < $this->_file['size'])    
    $return = "el tamaño del archivo es superior al soportado";
  }
  if(count($this->_type) > 0){  
   $tipo = explode('/',$this->_file['type']);
   if(!in_array($tipo[1],$this->_type))    
    $return = "no esta en el arreglo";         
  }  
  if(empty($return)){      
   $return = $this->uploadFile();   
  } 
  return $return;
 }
 private function uploadFile()
 {
  if(@copy($this->_file['tmp_name'],$this->_ruta))
   return "el archivo fue subido correctamente";  
  else
   return "ha ocurrido un error al subir el archivo ".$this->_file['name']."
 puede que la ruta indicada ".$this->_ruta." no sea correcta";  
 }
}


Si nos fijamos la forma de utilizar esta clase es indicando los parámetros al constructor de nuestras clases y automáticamente según los parámetros que se indiquen el automáticamente subirá el archivo los parámetros que tenemos son los siguientes:

$file: Este parámetro indicamos el valor recibido del formulario por medio de $_FILE de manera que tengamos disponibles todos los índices de este arreglo en nuestra clase.

$destino: En este parámetro indicamos la carpeta destino de nuestro archivo es decir donde quedaran guardados los archivos que subamos por nuestra clase. Si este vacio automáticamente lo guarda en el mismo nivel que esta el archivo en el árbol de carpetas de nuestro sitio.

$validate: Es un arreglo asociativo donde podemos indicar el tamaño máximo y el tipo de archivo que deseamos que sean subidos a nuestro servidor, de manera que si queremos solo JPG lo indicamos este array asociativo está compuesto de la siguiente manera

$validate = array('maximo'=>cantidad_maxima_en_byte,'tipo'=>array('tipoarchivo1',tipoarchivo2)); 


El índice máximo indica el tamaño máximo del archivo que deseamos subir, el índice tipo indicamos los tipos de archivos soportados.

Fácil no??

Pues entonces veamos la implementación

subir.php


require_once(upload.php);
$archivo = $_FILE['campo_archivo'];
$destino = 'Imagenes';
$validate = array('maximo'=>1048576,'tipo'=>array('jpg','png',gif));
$upload = new upload($archivo,$destino,$validate); 

con tan solo indicar los parametros al constructor de nuestra clase podremos subir nuestro archivo al servidor, espero que les sea util, cualquier sugerencia o mejora por favor indicarla y asi como siempre digo aprendemos todos en el caminos hasta una proxima entrada

viernes, 14 de enero de 2011

Introduccion a MySQL DCL

Muy buen día tengan todos, en esta nueva entrada hablaremos del Lenguaje de Control de Datos ( DCL DATA CONTROL LENGUAGE) en MySQL, veremos la gestion de los usuarios los permisos que se otorgan a cada uno de ellos, entre algunas cosas.

Lenguaje de Control de Datos (DCL): Por medio de este lenguaje podemos controlar el acceso a la información de nuestra Base de Datos, proporcionando la seguridad de la misma, dandole integridad a nuestros datos.

Caracteristicas:
a) Garantiza la seguridad  de nuestros datos.


b) Previene el acceso ilegal a nuestros datos.

c)Monitorea el acceso a nuestros datos.

d)Especifica a cada usuario lo que puede realizar en nuestra base de datos.

Como podemos notar por medio de este lenguaje ofrecemos seguridad a la administración de nuestras base de datos, este lenguaje en MySQL esta conformado por dos comandos cuya sintaxis mostraremos a continuación

1.- GRANT: Se utiliza para darle permisos a un usuario en nuestra base de datos la sintaxis es la siguiente.

GRANT privilegios ON basededatos.tabla TO usuario IDENTIFIED BY 'contraseña del usuario';

Donde los privilegios pueden ser:

Privilegio Significado
ALL [PRIVILEGES] Da todos los permisos simples excepto GRANT OPTION
ALTER Permite el uso de ALTER TABLE
ALTER ROUTINE Modifica o borra rutinas almacenadas
CREATE Permite el uso de CREATE TABLE
CREATE ROUTINE Crea rutinas almacenadas
CREATE TEMPORARY TABLES Permite el uso de CREATE TEMPORARY TABLE

CREATE USER Permite el uso de CREATE USER, DROP
USER
, RENAME USER, y
REVOKE ALL PRIVILEGES.
CREATE VIEW Permite el uso de CREATE VIEW
DELETE Permite el uso de DELETE
DROP Permite el uso de DROP TABLE
EXECUTE Permite al usuario ejecutar rutinas almacenadas
FILE Permite el uso de SELECT ... INTO OUTFILE y
LOAD DATA INFILE

INDEX Permite el uso de CREATE INDEX y DROP
INDEX
INSERT Permite el uso de INSERT

LOCK TABLES Permite el uso de LOCK TABLES en tablas para las que
tenga el permiso SELECT
PROCESS Permite el uso de SHOW FULL PROCESSLIST

REFERENCES No implementado
RELOAD Permite el uso de FLUSH
REPLICATION CLIENT Permite al usuario preguntar dónde están los servidores maestro o
esclavo
REPLICATION SLAVE Necesario para los esclavos de replicación (para leer eventos del log
binario desde el maestro)
SELECT Permite el uso de SELECT

SHOW DATABASES
SHOW DATABASES muestra todas las bases de datos
SHOW VIEW Permite el uso de SHOW CREATE VIEW

SHUTDOWN Permite el uso de mysqladmin shutdown
SUPER Permite el uso de comandos CHANGE MASTER,
KILL, PURGE MASTER
LOGS
, and SET GLOBAL , el
comando mysqladmin debug le permite
conectar (una vez) incluso si se llega a
max_connections

UPDATE Permite el uso de UPDATE
USAGE Sinónimo de “no privileges
GRANT OPTION Permite dar permisos
Fuente: manual de MySQL

Además de los privilegios vemos que debemos indicar la base de datos sobre la cual se le otorgan los privilegios al usuario, si se coloca el * el cual es el selector universal se indica que sobre todas, tendremos varios casos:

a)El asterisco punto asterisco solo: Indicaríamos que el usuario tiene el privilegio indicado sobre todas las tablas y todas las base de datos. Ejemplo:

GRANT ALL PRIVILEGES ON *.* TO usuario IDENTIFIED BY 'contraseña';

b)Nombre de la base de datos seguido de punto(.) asterisco (*): Indicamos todas las tablas de esa base de datos.

GRANT ALL PRIVILEGES ON base_datos.* TO usuario IDENTIFIED BY 'contraseña';

c)Nombre de la base de datos seguido de punto(.) y nombre de la tabla: Indicamos a cual tabla en especifica se le darán los privilegios indicados.

GRANT ALL PRIVILEGES ON base_datos.tabla TO usuario IDENTIFIED BY 'contraseña';

Como se puede ver con el GRANT otorgamos privilegios a los usuarios desde nuestro usuario administrador ROOT de manera que solo tengan acceso a lo que el administrador del sistema indique.

2.-REVOKE: Es utilizado para quitarle o revocar los privilegios de un usuario en nuestras base de datos, la sintaxis es la siguiente:

REVOKE privilegios ON basedatos FROM usuario;

Donde los privilegios son igual que los establecidos en la tabla anterior, y la base de datos igualmente se le indica de la manera que se indico con el GRANT.

Como podemos observar el lenguaje DCL es importante en la Administración de nuestras base de datos ya que nos ayuda a mantenerlas seguras y tener control total sobre lo que los usuarios pueden o no hacer dentro de ella. Espero que el artículo sea de su agrado cualquier información extra pueden buscar como siempre indico en el manual de MySQL, tambien si existe sugerencias o algo que me alla faltado solo indiquenlo así aprendemos todos en el camino, me despido hasta una próxima entrada saludos


lunes, 10 de enero de 2011

Introducción a MySQL INSERT,DELETE,UPDATE(DML)

Buenas para esta nueva entrada hablaremos del Lenguaje de Manipulación de Datos(DML), veremos las sentencias por la que está formado y lo que haremos con cada una de ellas.

Este tutorial supone que ya conoce el Lenguaje de Definición de Datos (DDL), de no conocerlo vea el artículo anterior donde explicamos las sentencias que conforman este lenguaje

Lenguaje de Manipulación de Datos(DML)

 
Está conformado por las sentencias que nos permiten Ingresar, Actualizar y Borrar datos a una base de datos, de manera que podamos Manipular cada uno de ellos.

Sentencias que conforman el DML

1.- INSERT: Por medio de esta sentencia podemos ingresar los datos en nuestras tablas. La sintaxis de esta sentencia es la siguiente:

INSERT INTO nombre_tabla (campo1,campo2) VALUES ('valor1','valor2');

Fácil no?? si deseamos insertar todos los datos dentro de nuestra tabla no es necesario llenar todos los campos sino que se ejecuta la sentencia de la siguiente manera:

INSERT INTO nombre_tabla VALUES('valor1','valor2');

Personalmente uso la primera opción ya que estoy viendo en si en donde estoy insertando cada valor, pero como cada administrador puede realizar la consulta como lo desee ahí les dejo esa opción.

2.-REPLACE:  Como su nombre lo indica sirve para remplazar, la sintaxis es igual que la de un INSERT, la diferencia es que si existe una clave bien sea primaria o única esta reemplazara el valor del registro quedando olvidado el anterior, si no existen claves dentro de la tabla el uso de esta sentencia no es útil ya que se comportaría como un INSERT.

3.-UPDATE: Por medio de esta sentencia podemos actualizar nuestros registros que tenemos dentro de nuestra tabla, la sintaxis es la siguiente:

UPDATE TABLE nombre_tabla SET campo1 = 'valor',campo2 = 'valor2' WHERE campo1 = 'valor';

Si nos fijamos en la sintaxis del UPDATE es simple, sencillamente indicamos la tabla que deseamos actualizar, cuales son los valores y luego establecemos una condición que indica cual registro actualizar, ojo hay que estar muy atentos al momento de realizar un UPDATE ya que de no establecer esta condición que indica cual registro actualizar se actualizaran todos los registros de nuestra tabla con los valores establecidos.

4.- DELETE: Este tipo de sentencia nos sirve para borrar registros de una tabla, su sintaxis es la siguiente:

DELETE FROM nombre_tabla WHERE campo = 'valor';

La sentencia del DELETE borra el campo especificado en la condición, al igual que como se indico con el UPDATE hay que tener en cuenta que si no se indica una condición se borraran todos los registros de la tabla.

5.- TRUNCATE: Nos sirve para borrar todos los campos de una tabla, tiene algunas diferencias básicas con el DELETE, una de ellas que esta sentencia reinicia los campos auto_incrementos, la sentencia TRUNCATE borra todos los campos de la tabla, sin establecérsele ninguna condición, la sintaxis es la siguiente:

TRUNCATE TABLE nombre_tabla;

Como se puede ver en este tipo de sentencia no existe condición ya que es para el borrado completo de una tabla, yo normalmente la uso para reiniciar tablas cuando implemento sistemas.

Estas son las sentencias de manipulación de datos, si se paso alguna por alto pueden indicarlo, un saludo como indico siempre el manual de MySQL es nuestro amigo en el podemos acceder a información oficial de este lengiaje, saludos espero que este tercer artículo de este pequeño tutorial introductorio a MySQL les sea útil, saludos hasta la proxima entrada