Instalación de Composer en Windows

Composer un administrador de dependencias para PHP, permite indicar que librerías son necesarias para tu proyecto. Así cuando te cambies de computadora, no tengas que estar acordándote de todo lo que se tiene que instalar.

Similar a Maven, pero inspirado en npm de node.js  y bundler de ruby.


Requerimientos

PHP 5.3.2 o superior

Modo de instalación en Windows 8.1

Pueden ocupar el instalador de composer que viene esta en https://getcomposer.org/Composer-Setup.exe sin embargo a mi me arrojo un error así que tuve que hacer la instalación de forma manual.


1. Abrir la línea de comandos en modo administrador.

2. Teclear el comando

php-v

debería mostrarse una información similar a la siguiente imagen:


En caso de no mostrarse es necesario agregar la ubicación del archivo “php.exe” a las variables de entorno.


Para el caso de mi instalación de WAMP server, el archivo está en la siguiente ubicación.

C:\wamp\bin\php\php5.5.12\

Después de hacer el cambio, hay que reiniciar el sistema y probar de nuevo el comando php-v para que todo funcione correctamente.

3. Crear una carpeta (en mi caso C:/dev/Composer ), abrir la ubicación con la linea de comandos y teclear el comando.

php -r “readfile(‘https://getcomposer.org/installer’);” | php

En caso de existir un error como el siguiente:


Es necesario verificar que se tenga acceso a internet y a los puertos de descarga. En mi caso estoy en una red corporativa necesito salir a interner a traves de un proxy.

Estos comandos son opcionales, pues son para agregar los accesos proxy a la linea de comandos. No es necesario ejecutarlos si el comando anterior funciono correctamente.

set http_proxy=http://your_proxy:your_port

set http_proxy=http://username:password@your_proxy:your_port

set https_proxy=https://your_proxy:your_port

set https_proxy=https://username:password@your_proxy:your_port

Para ultrasurf por ejemplo:

set http_proxy=127.0.0.1:9666

En caso de persistir el error puede que no tengan la extensión php_openssl habilitada, o simplemente se puede ingresar a la URL: https://getcomposer.org/installer y guardar el archivo en la ubicación deseada. Para terminar ejecutar el comando:

php -r “readfile(‘installer’);” | php

4. Listo la instalación debe de mostrar un resultado similar.


5. En la carpeta debemos crear un archivo composer.bat y dentro del archivo la siguiente línea de código.

@php “%~dp0composer.phar”%*

También o pueden hacer vía línea de comandos

echo @php “%~dp0composer.phar”%*>composer.bat

Nuestra carpeta ahora tendrá 3 archivos


Ahora cerramos y abrimos la terminal nuevamente, y probamos que todo funcione con el comando.

C:\Users\username> composer -V


En caso de no funcionar el comando composer hay que repetir lo del paso 2, y verificar que la ruta de nuestra carpeta de Composer este en las variables de entorno.


Y listo, Composer instalado en Windows, listo para empezar a desarrollar nuestros proyectos.

Como dato adicional, composer puede ser invocado desde las rutas originales sin necesidad de ajustar las variables de entorno, por si tenemos problemas de administración.

<ubicación de php.exe> <ubicación de composer.phar>[comando|opciones]



VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Solucionar mysql_connect(): No such file or directory en MacOs X

Hoy buscando hacer funcionar un viejo sistema de escuela en un Mac OS Yosemite, me tope con el error.

mysql_connect(): No such file or directory

Aparentemente un tema muy común en la configuración de MySQL en MacOS X con el PHP que viene en la instalación del sistema.

Reproducción del problema

Al realizar llamados con la función deprecada de mysql_connect() al servidor “localhost”

mysql_connect ("localhost", $usuario, $clave);

Definición del problema

El problema es que por alguna razón el sistema busca el mysql.sock en la ubicación incorrecta, ese archivo permite la interpretación del “localhost” a la IP 127.0.0.1 (no confundir con el archivo hosts).

Soluciones

1. Cambiar la petición a la IP del servidor o la IP local

mysql_connect ("127.0.0.1", $usuario, $clave);

2. Crear un alias (acceso directo) al mysql correcto.

Yo para obtener los datos lo hice mediante Workbench, pero se puede hacer con la linea de comandos aunque si me dio mucha pereza.

Captura de pantalla 2015-01-31 a las 11.04.47

Para esta solución me base en esta página,

Con la terminal: Ir a la ubicación /var

cd /var

Después crear un directorio con el nombre mysql

sudo mkdir mysql
cd mysql/

Por ultimo crear un acceso directo / link simbolico / alias  (como lo conozcan)

sudo ln -s /tmp/mysql.sock mysql.sock

Reinicie el Apache de MacOS nativo (por que es el que uso) para que tomará los cambios y listo.

sudo apachectl restart

 

3. Cambiar la configuración de apache

Esta opción ya no la hice, pero debemos abrir el php.ini y ubicar las siguientes lineas

pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket=/tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

Donde hay que cambiar la ruta a la indicada. Recuerden que el PHP que viene en MacOS tiene 2 configuraciones, una para el Root y otra para el usuario actual. Ya no entro a más detalles, pero pueden ver la solución planteada en esta liga de stackoverflow.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
gasolinazo_2015

Precio de Gasolina 2015 México

Ya es 2 de enero y desde ayer los precios de la gasolina aumentaron para supuesta mente “No aumentar en el año” (que por cierto es año de elecciones), entonces a veces algunos centavos se nos hacen mucho, pero esto es lo que se gastara ademas del precio de gasolina.

Precio de Gasolina 2015 Base

  • Magna: $ 13.57
  • Premium: $ 14.38
  • Diesel: $ 14.20

Precio de Gasolina 2015 por Tanque

Suponiendo que tienes un compacto o subcompacto, y suponiendo un tanque de 30 Litros.

  • Tanque Magna: $ 407.10
  • Tanque Premium: $ 431.40
  • Tanque Diesel: $ 426.00

Precio de Gasolina 2015 por Quincena

Si eres como yo y recorres aproximadamente 80 km diarios ida y vuelta a tu trabajo, tienes que cargar más de un tanque y medio a la quincena (eso sin salir fines de semana), entonces si redondeamos:

  • Quincena con Magna: $ 814.40
  • Quincena con Premium: $ 862.80
  • Quiecena con Diesel: $ 852.00

Gasto de Gasolina 2015

Suponiendo lo anterior, al mes son más de $ 1600.00 pesos al mes solo de gasolina, y suponiendo coche pequeño y rendidor como el Spark, March, 500, Beetle, etc…

  • A eso aumenta la “propina” que le das a quien te despacha.
  • Quita la gasolina que te roba el concesionario.
  • Considera embotellamientos que le quitan rendimiento al combustible.

En fin una bola de gastos que te harán considerar seriamente en tener un vehículo de bajo consumo, y aprovechando la ocasión, aquí te dejo los artículos con los coches más rendidores de los últimos 3 años.

[icon type=”icon-lamp”] Coches ahorradores de gasolina 2014

[icon type=”icon-lamp”] Coches ahorradores de gasolina 2013

[icon type=”icon-lamp”] Coches ahorradores de gasolina 2012

La listas incluyen los modelos mas rendidores y ecológicos, para que no te preocupes en un rato de que tu coche no pasa la verificación.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
discografia_clazziquai

Discografía Clazziquai Project

Clazziquai Project Albums

Clazziquai Project – Instant Pig

clazziquai_InstantPig

Clazziquai Project – Instant Pig
Año de lanzamiento: 2004
℗ 2005 FLUXUS Inc.

Audio: Mp3 CBR 192Kbps
Tamaño: 91.4Mb

Mega: http://thinfi.com/jgl
Contraseña: elporfirio.com

Available_Black

 

Track list

  1. You never Know
  2. Come to Me
  3. Futuristic
  4. After Love
  5. Novabossa
  6. Sweety
  7. Stepping Out
  8. Tattoo
  9. I Will Never Cry
  10. Gentle Rain
  11. After Love (Extra remix)
  12. Flower
  13. Play Girl
  14. My Life (Boom remix)
  15. Cat Bossa

 

Clazziquai Project – ZBAM

clazziquai_zbam

Clazziquai Project – ZBAM
Año de lanzamiento: 2004
℗ 2004 FLUXUS Inc.

Audio: Mp3 CBR 128Kbps
Tamaño: 49.2Mb

Mega: http://thinfi.com/jgm
Contraseña: elporfirio.com

Available_Black

Track list

  1. Oh Yes (Drum Bon Remix)
  2. Futuristic (House Remix)
  3. Come To Me (Mellotron Remix)
  4. She Loves You
  5. Stepping Out (Step Remix)
  6. You Never Know (Soft Remix)
  7. Snatcher
  8. Coming At Me To Disco (Rocking Remix)
  9. After Love (Female Version)
  10. Skyscraper
  11. Come To Me (Mellotron Remix Radio Edit)

Clazziquai Project – Color Your Soul

clazziquai_coloryoursoul

Clazziquai Project – Color Your Soul
Año de lanzamiento: 2005
℗ 2006 FLUXUS Inc.

Audio: Mp3 CBR 192Kbps
Tamaño: 76,7Mb

Mega: http://thinfi.com/jgn
Contraseña: elporfirio.com

Available_Black

Track list

  1. Beautiful Woman
  2. Salesman
  3. Fill This Night
  4. Cry Out Loud
  5. I Will Give You Everything
  6. Come Alive
  7. Date Line
  8. Be My Love (English House Remix)
  9. Beautiful Woman
  10. Color Your Soul
  11. Speechless
  12. Sunshine
  13. Steps Ahead
  14. Again…
  15. Be My Love (Original Remix)

Clazziquai Project – Pinch Your Soul

clazziquai_pinchyoursoul

Clazziquai Project – Pinch Your Soul
Año de lanzamiento: 2006
℗ 2006 FLUXUS Inc.

Audio: Mp3 CBR 192Kbps
Tamaño: 63.9Mb

Mega: http://thinfi.com/jgo
Contraseña: elporfirio.com

Available_Black

Track list

  1. Color Your Soul (Pinch Your Remix)
  2. Love Mode (feat. Tablo)
  3. Date Line (날짜변경선, Bon Voyage Remix)
  4. Fill This Night (Paradox Remix)
  5. Come Alive (Distort Remix)
  6. I Will Give You Everything (Buoyant Remix) (feat. J & Bobby Kim)
  7. Speechless (Vanilla Soul Remix)
  8. Cry Out Loud (Black Sunshine Remix)
  9. Sweety (Cosmo Remix)
  10. Chi Chi (Original Remix)
  11. Wakare (2005 国楽祝典記念)

Clazziquai Project – Love Child of the Century

clazziquai_lovechild

Clazziquai Project – Love Child of the Century
Año de lanzamiento: 2007
℗ 2007 FLUXUS Inc.

Audio: Mp3 CBR 192Kbps
Tamaño: 70.3Mb

Mega: http://thinfi.com/jgp
Contraseña: elporfirio.com

Available_Black

Track list

  1. Prayers
  2. Lover Boy
  3. Our Lives
  4. Session 1 : All Hail
  5. Gentle Giant
  6. Last Tango
  7. Fiesta
  8. Next Love
  9. Romeo n Juliet
  10. Flower Children
  11. Session 2 : Confession
  12. Friday Blues
  13. Glory
  14. The Light

Clazziquai Project – Robotica

clazziquai_robotica

Clazziquai Project – Robotica
Año de lanzamiento: 2007
℗ 2007 FLUXUS Inc.

Audio: Mp3 CBR 192Kbps
Tamaño: 91,2Mb

Mega: http://thinfi.com/jgq
Contraseña: elporfirio.com

Available_Black

Track list

  1. Freedom
  2. Iconic Love feat. 이승열
  3. Robotica
  4. You
  5. Why feat. Whale
  6. Beautiful Stranger
  7. Love Mode feat. VERBAL (m-flo) (Hwa Remix)
  8. Prayers (Shinichi Osawa Remix)
  9. Our Lives (FPM Hyper Society Mix)
  10. Fiesta (DAISHI DANCE Remix)
  11. Lover Boy (As Pap As Pop Mix)
  12. Next Love (DJ Kayip Remix)
  13. Love Mode feat. PE’Z & VERBAL (m-flo) (PZQ Mode)

Clazziquai Project – Mucho Punk

clazziquai_muchopunk

Clazziquai Project – Mucho Punk
Año de lanzamiento: 2009
℗ 2009 FLUXUS Inc.

Audio: Mp3 CBR 320Kbps
Tamaño: 103.2Mb

Mega: http://thinfi.com/jgt
Contraseña: elporfirio.com

Track list

  1. 초콜릿 트러플
  2. Kiss Kiss Kiss
  3. Love Again
  4. 사랑끝에
  5. Tell Yourself
  6. Back In Time
  7. Lazy Sunday Morning
  8. Take A Walk
  9. The Road
  10. Spinning The World
  11. 라푼젤
  12. Wizard Of OZ

Clazziquai Project – Mucho Beat

clazziquai_muchobeat

Clazziquai Project – Mucho Beat
Año de lanzamiento: 2009
℗ 2009 FLUXUS Inc.

Audio: Mp3 CBR 320Kbps
Tamaño: 132.7Mb

Mega: http://thinfi.com/jgu
Contraseña: elporfirio.com

Track list

  1. lalala
  2. 집착
  3. Spinning The World (Voice Remix)
  4. Tell Yourself (Daishi Dance Remix-English Ver.)
  5. 초콜릿 트러플 (Unplugged Ver.)
  6. Love Again (Ram Rider Remix)
  7. Kiss Kiss Kiss (Yasutaka Nakata (Capsule) Remix)
  8. 집착 (4Step 4Ward Mix – Han (W))
  9. Back In Time (Cloud Remix)
  10. Flea (Jojal Remix -Audition Grandprix-)
  11. The Road (Sugiurumn Remix)

Clazziquai Project – Blessed

clazziquai_blessed

Clazziquai Project – Blessed
Año de lanzamiento: 2013
℗ 2013 FLUXUS Inc.

Audio: Mp3 VBR 192Kbps+
Tamaño: 69.9Mb

Mega: http://thinfi.com/jgv
Contraseña: elporfirio.com

Available_Black

Track list

  1. Blessed
  2. Sweetest Name
  3. Love Recipe
  4. She is Great
  5. Can’t Go on My Own
  6. Love Right
  7. I Will be there for You
  8. Brown Gold Eyes
  9. Like a Diamond
  10. Hollow and Shallow
  11. Player’s Girlfriend

Clazziquai Project – Blink

clazziquai_blink

Clazziquai Project – Blessed
Año de lanzamiento: 2014
℗ 2014 FLUXUS Inc.

Audio: Mp3 CBR 320Kbps
Tamaño: 90.1Mb

Mega: http://thinfi.com/jgw
Contraseña: elporfirio.com

Available_Black

Track list

  1. Still I’m by Your Side
  2. Madly
  3. Crave You
  4. Android
  5. Maybe Baby
  6. Love Satellite
  7. Come on and Go with Me
  8. Life etc.
  9. Call Me Back
  10. Think About You

Clazziquai Project Specials

Clazziquai Project – Metrotronics

Clazziquai Project – Mucho Mix

DJ Clazzi – Infant

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
tutorial_jsf_helloWorld

Tutorial JSF 2.0 – Hola mundo

Este es un material de recurso y referencia para futuras ocasiones, en está ocasión trabajando con Java, que a diferencia de PHP es un poco más abstracto de desarrollar, ya que el paradigma de POO debe estar casi dominado, este tutorial está basado en el trabajo de MkYong , sin embargo aquí NO utilizaremos Eclipse como IDE.

Creo que ya hay muchas referencias de Eclipse y para mi fue un reto aprende un nuevo IDE como lo es IntelliJ Idea así como un nuevo lenguaje de programación, por lo que las viejas costumbres de PHP en Java no son tan viables..

En fin “a darle átomos”.

Tutorial JSF 2.0 – Requerimientos

Tutorial JSF 2.0 – Crear proyecto

Creamos un nuevo proyecto, elegimos Maven > marcamos “Create form archetype” > elegimos “maven-archetype-webapp” y hacemos click en next.

jsf2_01

 

Ingresamos los datos para GroupId y ArtifactId. El resto lo dejamos como está.

jsf2_02

Por último podemos elegir una ubicación para apache-maven, en mi caso esta en una carpeta dentro de C:\Dev\ cambien los valores si es necesario, ya que IntelliJ Idea incluye un Maven preinstalado (ese también sirve).

jsf2_03

Dentro del cuadro de propiedades hacemos click en el simbolo de “+” para agregar una propiedad con el nombre “packaging” y el valor “war”, presionamos “ok”.

jsf2_04

Haga clic en el botón “next” y después elija un nombre y ubicación para el proyecto, por último haga clic en “Finish”.

Cuando este abierto Intelli J Idea, en la parte superior derecha se mostrará un aviso con la leyenda “Maven projects need to be imported”, haga clic en “Enable Auto-Import”

jsf2_05

El proyecto debe tener el siguiente POM y estructra de archivos:

jsf2_06

 

Tutorial JSF 2.0 – Añadiendo Faltantes

Dentro de la carpeta src>main haga clic derecho, elija “New Directory” y escriba el nombre de “java”.

En la nueva carpeta haga clic secundario, del menú elija la opción “Mark Directory As..” y elija la opción “Sources Root”.

jsf2_07

 

Después diríjase al menú “File > Project Structure”, en el cuadro de dialogo elija la opción “Modules”, del panel izquierdo.

jsf2_08

En panel donde se muestra el modulo “jsfHelloWorld” haga clic secundario sobre “Web” > Add > JSF. Desmarque la cion “Create face-config.xml” y marque la opción “set up library later”.

jsf2_09

Despues de guardar los cambios en la ventana anterior marque el “source root” faltante.

jsf2_10

Tutorial JSF 2.0 – Agregando Dependencias

Abra el archivo pom.xml y agregue las siguientes dependencias (dentro del tag dependencies)

    <!-- JSF -->
    <dependency>
      <groupId>com.sun.faces</groupId>
      <artifactId>jsf-api</artifactId>
      <version>2.2.9</version>
    </dependency>
    <dependency>
      <groupId>com.sun.faces</groupId>
      <artifactId>jsf-impl</artifactId>
      <version>2.2.9</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <!-- END JSF -->

Ultimas versiones del repositorio en maven:

http://mvnrepository.com/artifact/com.sun.faces

http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/

Tutorial JSF 2.0 – Managed Bean

El Managed Bean, es el modelo de de nuestro objeto, y lo crearemos dentro de la carpeta Java, click secundario > New Package, con el nombre de com.elporfirio.models.

jsf2_11

Haga clic secundario sobre el paquete que acaba de crear y elija New > Java Class, de nombre HewlloWorldBean.

jsf2_12

El archivo deberá tener el siguiente código:

 

package com.elporfirio.models;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
 * Created by Porfirio on 29/12/2014.
 */

@ManagedBean(name="HolaMundo")
@RequestScoped
public class HelloWorldBean {
    private String message;
    
    @PostConstruct
    private void init(){
        message = "Hola Mundo!! desde JSF";
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

Ahora en la carpeta “webapp” hacemos un pocedimiento similar, clic secundario sobre la carpeta > New > JSF/Facelets con el nombre “home.xhtml” y el siguiente código:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
<f:view>
    <h:outputLabel value="#{HolaMundo.message}"/>
</f:view>
</html>

Ya casi terminamos, ahora nos dirijimos a editar el archivo “web.xml” dentro de la carpeta WEB-INF y nos aseguramos que tenga el siguiente código:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

         id="WebApp_ID" version="3.0">
    
    <display-name>jsfHelloWorld</display-name>
    <welcome-file-list>
        <welcome-file>faces/home.xhtml</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>faces</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>faces</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
</web-app>

Y listo hora, de correr nuestra aplicación.

Tutorial JSF 2.0 – generar paquete War

Haga clic en el menu “View > Tool Windows > Maven” y despliegue la carpeta “Lifecycle”, para empaquetar solo haga doble clic en “package”

jsf2_13

Se debe mostrar la siguiente información:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.886 s
[INFO] Finished at: 2014-12-29T18:39:38-06:00
[INFO] Final Memory: 11M/27M
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

Ahora dentro de nuestro proyecto existe una carpeta llamada “target”, dentro estará el archivo “.war” que necesitamos para montar en el servidor.

jsf2_14

Ingrese al servidor, en este caso TomEE y despliegue el archivo como se menciona en el tutorial… [tutorial pendiente]

Para ingresar a nuestra nueva app de jsf solo ingrese la URL:

http://localhost:8080/jsfHelloWorld/home.xhtml

deberá visualizar lo siguiente:

jsf2_15

Como siempre dejo la versión en video para mejor explicación, [videotutorial pendiente].

Aquí los archivos del ejemplo

Espero que les haya gustado y nos vemos en el siguiente post, donde enviaremos datos de formulario.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
conexion_pdo

Conectarse a la Base de Datos con PHP y PDO

En mi correo cada día leo como conectarse a la base de datos con PHP, en especifico a un motor con MySQL, sin embargo parece que hasta la fecha todos sigan utilizando los métodos obsoletos de MySQL, como mysql_connect, mysql_query, mysql_scape_string, etc.

Pues en este post decidí publicar como Conectarse a la Base de Datos con PHP y PDO, que a diferencia de mi post anterior: Clase para conexión MySQL con PHP POO y PDO, está solo maneja la forma más simple en programación estructurada de la conexión.

Requerimientos para Conectarse a la Base de Datos con PHP y PDO

  • PHP 5.3 o superior
  • MySQL 5.1 o superior
  • Extensión mysql_pdo para php (la mayoría de distribuciones ya la incluye)
  • Para las pruebas utilizar la tabla del script SQL que anexo más adelante.

Conectarse a la Base de Datos con PHP y PDO

Descargar archivos Base (tabla SQL ejemplo y PHP PDO Scripts)

Declaramos las siguiente variables para identificarlas más fácilmente, recuerden que también pueden hacerlas constantes.

#Datos para conexión
$domain = "localhost";
$database = "pruebas";

$user = "root";
$password = "";

Y ahora sí el script de conexión, realmente es solo una variable con las propiedades de la conexión.

#Conectarse a la base de datos
try {
    $dbConnection = new PDO(
        'mysql:host=' . $domain . ';dbname=' . $database .';port=3306',
        $user,
        $password,
        array(
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
    );
    //$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $ex){
    echo "<strong>Error de Conexión: </strong>" . $ex->getMessage() . "<br>";
    die();
}

Pueden consultar la información oficial de PDO, para mejor referencia.

Consultar la Base de Datos con PHP y PDO

Muy similar a lo que pasaba con mysql_query, después de obtener los datos debemos ordenarlos. aquí muestro el método PDO::FETCH_ASSOC que transforma los resultados de una query bien hecha a un arreglo.

#Consultar datos
try{
    $query = 'SELECT * FROM car_models';
    $stmt = $dbConnection->prepare($query);
    if($stmt->execute()){
        $queryResult = $stmt->fetchAll(PDO::FETCH_ASSOC);
        print_r($queryResult);
    }
} catch (PDOException $ex){
    echo "<strong>Error de ejecución: </strong>" . $ex->getMessage() . "<br>";
    die();
}

Consultar la Base de Datos con PHP y PDO (query dinámico)

Si tenemos consultas con el tipico WHERE que requiere ingresar un dato, también podemos hacerlo muy facilmente.

#Consultar datos con datos dinamicos
$color = "Rojo";

try{
    $query = 'SELECT * FROM car_models
              WHERE color = :color_elegido';

    $stmt = $dbConnection->prepare($query);

    $stmt->bindParam(':color_elegido', $color);

    if($stmt->execute()){
        $queryResult = $stmt->fetchAll(PDO::FETCH_ASSOC);
        print_r($queryResult);
    }
} catch (PDOException $ex){
    echo "<strong>Error de ejecución: </strong>" . $ex->getMessage() . "<br>";
    die();
}

Al final la consulta salio bien, utilizamos el método fetchAll para dar un formato de array() al resultado(s) de la consulta.

Formato a resultado de datos

Si deseamos utilizar los valores para acomodarlos en un formulario o una tabla o lo que sea, simplemente debemos iterar el array() que guarda los resultados.

#Dar formato a los datos consultados
foreach($queryResult as $currentCar){
    $render = "";
    $render = "Marca: " . $currentCar["branch"] ."<br>";
    $render .= "Modelo: " . $currentCar["model"] ."<br>";
    $render .= "Año: " . $currentCar["year"] ."<br>";
    $render .= "Color: " . $currentCar["color"] ."<br>";
    $render .= "<hr>";
    echo $render;
}

Insertar Datos a la Base de Datos con PHP y PDO

El siempre es un ejemplo con un query de inserción, sin embargo también aplica para los querys de consulta y actualización.

Yo utilizo en los values una etiqueta como :marca, :modelo en vez de signos de interrogación ? , ya que es mucho más comodo y legible para realizar ajustes o modificaciones a la query.

#Insertar nuevo Dato a la base de datos
$marca = "Renault";
$modelo = "Duster";
$anio = "2015";
$color = "arena";

try{
    $query = 'INSERT INTO car_models (branch, model, year, color)
              VALUES (:marca, :modelo, :anio, :color)';

    $stmt = $dbConnection->prepare($query);

    $stmt->bindParam(':marca', $marca);
    $stmt->bindParam(':modelo', $modelo);
    $stmt->bindParam(':anio', $anio);
    $stmt->bindParam(':color', $color);

    if($stmt->execute()){
        echo $dbConnection->lastInsertId(); //Devuelve el último ID que se inserta
    }
} catch (PDOException $ex){
    echo "<strong>Error de ejecución: </strong>" . $ex->getMessage() . "<br>";
    die();
}

Insertar múltiples Datos a la Base de Datos con PHP y PDO

Como último ejemplo práctico, genere datos en un ciclo for para ingresarlos a la base de datos. Se destaca que no tengo que estar rehaciendo la query (INSERT INTO …), así como tampoco debo estar volviendo a declarar los valores en el bindParam.

Sin embargo es importante sobre escribir el nombre de la variable declarado anteriormente.

#Insertar varios datos a la base de datos (misma query)
$marca = "Renault";
$modelo = "Duster";
$anio = "2015";
$color = "arena";
try{
    $query = 'INSERT INTO car_models (branch, model, year, color)
              VALUES (:marca, :modelo, :anio, :color)';

    $stmt = $dbConnection->prepare($query);

    $stmt->bindParam(':marca', $marca);
    $stmt->bindParam(':modelo', $modelo);
    $stmt->bindParam(':anio', $anio);
    $stmt->bindParam(':color', $color);

    for($i = 0; $i < 5; $i++){
        $marca = "Renault_" . $i;
        $modelo = "Duster_" . $i;
        $color = "arena_" . $i;
        if($stmt->execute()){
            echo $dbConnection->lastInsertId()."<br>";
        }
    }
} catch (PDOException $ex){
    echo "<strong>Error de ejecución: </strong>" . $ex->getMessage() . "<br>";
    die();
}

Finalizar conexión a la Base de Datos con PHP y PDO

Al finalizar sus consultas y para cerrar la conexión simplemente apliquen lo siguiente:

$stmt->closeCursor();
$stmt = null;
$dbConnection = null;

En está ocasión trate de no dar una explicación tediosa escrita, pues la explicación se incluye en el video tutorial. Sin embargo aquí dejo los archivos.

Descargar archivos Base (tabla SQL ejemplo y PHP PDO Scripts)

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
generar datos

Generar datos de prueba para MySQL

El día de hoy me toco generar datos de prueba, algunos Millones de registros para comprobar el funcionamiento de mi aplicación y su interacción con una tabla, y un funcionamiento de PHP así que aquí comparto las consultas (Querys) para generar datos aleatorios.

Requerimientos generar datos de prueba

  • MySQL Server versión 5.1 o superior.
  • Editor de consultas como MySQL Workbench, SQL Squirrel, etc.

MySQL – Generar número aleatorio (rango)

Utilidad: Cuando se requieren datos enteros por ejemplo IDs y necesitamos que se repitan en un rango aleatorio.

#Genera un numero aleatorio entre 1 y 3
#Ejemplo: 1, 2 
SELECT FLOOR(RAND()*(3-1)+1);

#Si queremos que tambien se muestre el 3
SELECT FLOOR(RAND()*(4-1)+1);

#Se puede utilizar para numeros grandes para generar cantidades
#Ejemplo:  2150, 3220
SELECT FLOOR(RAND()*(4000-10)+10);

Información de método RAND() ,  FLOOR()

 

MySQL – Generar fecha aleatoria (rango)

Utilidad: Cuando necesitamos fecha de inicio y final para ciertos registros

#Obtener fecha en formato UNIX TIME para despues aplicar Random
#Ingresar fecha en formato AAAA-MM-DD
SELECT UNIX_TIMESTAMP('2014-11-25');

#Guardarlo en una variable para mejor legibilidad
SELECT @fechaInicio := UNIX_TIMESTAMP('2014-11-25');
SELECT @fechaFin := UNIX_TIMESTAMP('2014-12-30');

#Genera una fecha tipo DATETIME entre el rango elegido
#Formato AAAA-MM-DD HH:MM:SS
SELECT FROM_UNIXTIME(RAND() * ((@fechaFin) - (@fechaInicio)) + (@fechaInicio));

#Genera una fecha tipo DATE entre el rango elegido
#Formato AAAA-MM-DD
SELECT DATE(FROM_UNIXTIME(RAND() * ((@fechaFin) - (@fechaInicio)) + (@fechaInicio)));

#Modo primitivo sin varibles legibles
SELECT DATE(FROM_UNIXTIME(RAND() * ((SELECT UNIX_TIMESTAMP('2014-12-30')) - (SELECT UNIX_TIMESTAMP('2014-11-25'))) + (SELECT UNIX_TIMESTAMP('2014-11-25'))));

Información de método DATE() , FROM_UNIXTIME() , UNIX_TIMESTAMP() , Definición de Variables @myVar :=

 

MySQL – Elegir un dato aleatorio de un grupo definido (manual)

Utilidad: Si necesitamos llenar con una “X” cantidad de nombres sin necesidad de ir a consultarlos a otra tabla de la base de datos.

#Elegir un texto a partir de valores preestablecidos
#Atención al numero que se aplica a RAND() pues es el que define la cantidad de elementos
SELECT ELT(1 + FLOOR(RAND()*4), 'elporfirio', 'nancy', 'mabel', 'dipper');

Información de método: ELT()

 

MySQL – Concatenar con variables

Utilidad: Para crear texto legible que concuerde con los registros insertados y así comprobar funcionalidad.

#Genera un numero aleatorio
SELECT @lecampana := FLOOR(RAND()*(3-1)+1);

#Genera una cadena con un texto personalizado y el valor de nuestra variable
#Ejemplo: 'Texto Ejemplo 1', 'Texto Ejemplo 3'
SELECT concat('Texto ejemplo ',CAST(@lecampana AS CHAR));

Información del método CONCAT() , CAST()

 

MySQL – Ciclo while para generar datos de prueba

Utilidad: Utilizar todos los procedimientos aprendidos para generar datos de prueba acorde a nuestras necesidades.

#Necesario
DELIMITER $$

#Opcional
DROP PROCEDURE IF EXISTS repeat_it $$

#Creamos un procedimiento para despues ejecutarlo
CREATE PROCEDURE repeat_it ()
BEGIN
	#variables de contador
	DECLARE varcount INT DEFAULT 1;
	DECLARE varmax INT DEFAULT 10;
	
	WHILE varcount <= varmax DO

		INSERT INTO table_name(field1, field2, field3)
		VALUES ("uno", "dos", "tres");

		SET varcount = varcount + 1;
	END WHILE;
END $$

CALL repeat_it();

 

Estos procedimientos nos serán útiles en algún punto de nuestros desarrollos, tan fácil como crear un Query para pruebas que nos ahorrará mucho tiempo (si es que no se tiene área de testing), así como agilizar nuestros desarrollos.

Nos leemos en el siguiente post.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
Related Posts Plugin for WordPress, Blogger...