PHP es conocido y amado como una de las mejores tecnologias para la generacion de sitios web dinamicos. Pero a traves de la linea de comandos de PHP (CLI), tambien puede realizar shell scripting (programacion de linea de comandos) usando su lenguaje favorito PHP. PHP CLI permite ejecutar scripts PHP e incluso fragmentos de codigo PHP fuera del navegador web. En windows, la accion se lleva a cabo dentro de la ventana DOS (tambien conocida como consola o ventana de comandos). En UNIX y Mac OS X, va utilizar una terminal (o un programa similar).
Prueba de su instalacion
Para comenzar, lo primero que debemos hacer es confirmar que nosotros tenemos PHP CLI disponible, entonces veremos la version.
Con suerte es cuestion de solo seguir unos pasos.
1.- Abra una interfaz de comandos
2.- ponga php -v y pulse la tecla enter o retorno
Si la version de PHP CLI se encuentra instalado en su PATH (Lista de ubicaciones donde el sistema operativo puede encontrar los archivos) con esto deberia ser mas que suficiente.
En el peor de los casos suponiendo que PHP CLI esta instalado, usted tendra que moverse a la ruta de PHP CLI o poner la ruta completa. Junto a la opcion -v, hay otros tres que podemos mostrarle por adelantado:
* -i revela informacion sobre la instalacion de PHP.
* -h accede al archivo de ayuda.
* -m indica los modulos compilados en su instalacion de PHP.
Uso de la CLI
El hecho de que usted pueda realizar script desde la linea de comandos con PHP no significa que siempre deba utilizarlo. En realidad lo que trata PHP es que utilices los conocimientos que ya tienes en PHP en lugar de utilizar algun otro lenguaje de CLI como PERL o shell en los cuales tengas que volver a iniciarte en la sintaxis. PHP CLI nos sirve mucho para realizar tareas basicas tales como:
* Probar fragmentos de codigo PHP rapidamente
* Realizar algun mantenimiento rutinario
* Crear utilidades para el sistema
* Hacer instaladores para sus aplicaciones de PHP
Ejecutando pequeños fragmentos de codigo
Uno de los primeros usos de PHP CLI es probar pequeños fragmentos de codigo rapidamente, sin pasar por el proceso de:
1.- Escribir un script formal de PHP
2.- Colocarlo en un directorio web
3.- Habilitar el servidor web, si no esta ON (activo)
4.- Ejecutar el script PHP en un navegador web
En vez de hacer todo eso, puede probar pequeños fragmentos de codigo con esta sintaxis:
php -r 'codigo_php_aqui'
Para un ejemplo:
php -r "echo 'Hola, mundo!';"
Un par de cosas a tener en cuenta es el uso de comillas dobles o comillas simples (esto dependiendo del sistema operativo donde estes trabajando) y siempre cerrar el codigo usando ; (punto y coma).
Tambien podemos conectar a un servidor remoto usando putty para conectar, solo es necesario ingresar nuestras credenciales.
Para continuar con el ejemplo, vamos a realizar un codigo que nos muestre la ultima modificacion de un archivo, en el cual podemos especificar la ruta completa o movernos al directorio donde se encuentra el archivo.
C:\Users\arthusu>php -r "$filename = 'log.txt'; $fmtime = filemtime($filename);
if(file_exists($filename)){ echo date('F d Y H:i:s',$fmtime); }"
May 02 2014 07:57:30
Mi directorio actual es C:\Users\arthusu en este directorio se encuentra el archivo 'log.txt'.
Y el resultado que nos arroja es May 02 2014 07:57:30 que es la fecha de la ultima modificacion del archivo.
vamos a explicar el codigo, en la variable $filename especificamos la ruta del archivo que queremos saber su ultima modificacion en este caso 'log.txt' pero tu podrias poner la ruta completa, con la variable $fmtime se guarda la ultima fecha de modificacion el archivo 'log.txt' en formato devuelto como tiempo UNIX, por ultimo hacemos un condicional donde verificamos si el archivo existe y si es asi mostramos la ultima fecha de modificacion en el formato anterior usando la funcion date().
Para agregar una nueva linea en consola usamos \n ya que no podemos usar HTML.
C:\Users\arthusu>php -r "echo \"Hola Mundo!\n\";"
Hola Mundo!
PHP CLI interactivo
Desde la version 5.1, PHP es compilado con una extension Readline la cual podemos correr una shell interactiva. Para utilizar PHP CLI Interactivo solo tenemos que seguir los pasos de abajo.
1.- entramos en modo shell interactiva php -a
2.- escribimos un fragmento pequeño de codigo y presionamos la tecla enter
Tambien podemos ver con php -m que el modulo readline esta activado.
Creamos una variable:
Usted puede crear variables, arrays para su posterior consulta, tal como constantes y funciones todo en una sola sesion.
Tambien si ponemos pri y presionamos la tecla TAB nos autocompleta. Gracias a la extension Readline incluimos muchas caracteristicas tales como tambien usar flecha arriba y flecha abajo para ver las lineas anteriores.
Poniendo exit salimos de la sesion del modo shell interactivo.
Creando un script de linea de comandos
Ser capaz de probar pequeños fragmentos de codigo en la linea de comandos es agradable, pero no te llevara lejos. Lo que normalmente se desea hacer es ejecutar scripts (varias lineas) en la linea de comandos. Tales scripts pueden ejecutar algunos archivos, realizar mantenimiento a una base de datos, ejecutar actualizaciones para el sitio web y demas. Un script para utilizarlo en PHP CLI es diferente a un script de PHP WEB.
1.- No se debe utilizar con codigo HTML
2.- No es necesario utilizar la extension .php (aunque si es recomendable)
3.- La primera linea de su script sera: #!/usr/bin/php
No hay nada de malo en usar codigo HMTL, pero solo va estorbar en el resultado en la consola. En cuanto a la extesion del archivo podria utilizar literalmente cualquier extension o nombre, pero .php todavia es una buena idea. La ultima linea indica para sistemas MAC OS X o UNIX donde se encuentra el ejecutable de php, esta linea es llamada Shebang, en sistemas Windows no es necesario especificarla ya que es ignorada completamente.
Vamos a crear nuestro primer script de linea de comandos y explicarlo.
#!/usr/bin/php
<?php # Script - numero.php
/* Esta pagina lee un archivo
* e imprime el numero de lineas junto al contenido.
* Este script puede ser usado con PHP CLI
*/
// El archivo:
$file = 'c:\users\arthusu\log.txt';
// Imprimimos un mensaje dentro:
echo "\nNumerando el archivo llamado '$file' ... ----------------\n\n";
// Leemos en el archivo:
$data = file($file);
// Contador del numero de linea:
$n = 1;
// Imprimimos para cada linea:
foreach($data as $line){
// Imprimimos el numero y linea del archivo:
echo "$n $line";
// Incrementamos le numeor de linea:
$n++;
} // Terminamos el bucle foreach.
echo "\n ------------------------ Fin del archivo '$file'.\n";
?>
1.- Especificamos la linea Shebang (aunque realmente no es necesaria si estas en windows), y despues abrimos la etique php (porfin!!!)
2.- Indicamos la ruta del archivo a ser numerado en la variable $file
3.- Usamos la funcion file() para leer el archivo que se guardara en un array
4.- Imprimimos un mensaje de que el archivo comienza
5.- Creamos una variable $n la cual contendra el numero de lineas, recorremos con el bucle foreach() cada linea y aumentamos la variable $n de la linea en 1 para ir contando las lineas.
6.- Terminamos el mensaje de que el archivo termina, y recuerda aqui si cerramos la etiqueta de php.
Usted puede hacer uso de la configuracion php.ini desde la linea de comandos, una manera de buscar el archivo de configuracion es utilizar:
D:\>php -i | find /i "Configuration File"
Configuration File (php.ini) Path => C:\Windows
Loaded Configuration File => C:\xampp\php\php.ini
o tambien:
php --ini
Hay algunas opciones con la que podemos cambiar le comportamiento del archivo php.ini.
* -c Le decimos a php donde buscar el archivo php.ini
* -n Le decimos a php que no utilice el archivo php.ini
* -d Establece un valor para php.ini
Por ejemplo, podemos hacer uso de ignore_user_abort en true para que el script se siga ejecutando incluso cuando el usuario aborte el script, para ello cuando invocamos CLI usamos:
php nombredelscript.php -d ignore_user_abort=1
Corriendo un script de linea de comandos
Hay dos maneras de correr un script en php. La primera manera es utilizar php y el nombre del archivo a ejecutar:
php nombredelscript.php
tambien podemos utilizar la bandera -f:
php -f nombredelscript.php
aunque no es necesario, pero si recomendable.
La segunda manera de hacerlo que se decia es simplemente utilizar el nombre del archivo, pero para ello tienes que tener configurado windows por ejemplo a abrir por defecto ese tipo de archivo con php.exe:
Clic derecho en el archivo > Abrir con... y eliges el archivo php.exe (en mi caso C:\Xampp\htdocs\php\php.exe), para correr el archivo solo entras en la consola y escribes el nombre del archivo, por ejemplo: miarchivo.php y enter.
Podemos utilizar la opcion -l para saber si algun archivo tiene algun error de sintaxis:
php -l elnombredemiarchivo.php
Si no contiene errores devolvera algo como lo siguiente:
No syntax errors detected in xxxx.php
Trabajando con argumentos en la linea de comandos
El ejemplo numero.php es una aplicacion bastante razonable en PHP CLI. El script proporciona un valioso servicio, pero tiene una limitacion: el archivo a ser numerado en el script esta hard-coded. Seria mejor establecer ese valor del archivo cuando se utiliza la aplicacion. Esto puede lograrse facilmente reescribiendo el script para que utilice argumentos en la linea de comandos. Los argumentos en la linea de comandos son valores pasados en una aplicacion cuando se ejecuta. Los argumentos se pasan a la aplicacion invocada añadiendolos despues del nombre de la aplicacion:
nombredelscript.php argumento1 argumento2
En su script PHP puede acceder a estos argumentos refiriendose a $argv y $argc (o mas formal $_SERVER['argv'] y $_SERVER['argc'])
El array $argv almacena cada argumento proporcionado; $argc almacena el numero de elementos en $argv. El unico incoveniente a la utilizacion de estos es que el nombre del script en si es el primer argumento listado ($_SERVER['argv'][0]):
#!/usr/bin/php
<?php
echo "\n{$_SERVER['argc']} argumentos recibidos. Los cuales son...\n";
foreach ($_SERVER['argv'] as $k => $v) {
echo "$k : $v \n";
}
?>
Vamos a escribir un nuevo script numero.php para que acepte un argumento: el nombre del archivo a numerar.
#!/usr/bin/php
<?php # numero2.php
/* Esta pagina lee un archivo
* e imprime el numero de lineas junto al contenido.
* Este script puede ser usado con PHP CLI
* Este script espera un argumento (junto al nombre del script)
* El numbre del archivo a numerar.
*/
// Verificamos que el nombre fue asignado:
if ($_SERVER['argc'] == 2){
// Obtenemos el nombre del archivo
$file = $_SERVER['argv'][1];
// Hay que estar seguros que el archivo existe y es un archivo:
if(file_exists($file) && is_file($file)){
// Leemos un archivo:
if($data = file($file)){
// Imprimimos un mensaje dentro:
echo "\n Numerando el archivo llamado '$file' \n ---------------------------\n\n";
// Contador de lineas
$n = 1;
// Imprimimos cada linea:
foreach ($data as $line) {
// Imprimimos el numero y la linea:
echo "$n $line";
// Incrementamos el numero de linea:
$n++;
} // Fin del bucle foreach
echo "\n ---------------------------\n Fin del archivo '$file'.\n";
exit(0);
}else{
echo "El archivo no pudo ser leido.\n";
exit(1);
}
} else {
echo "El archivo no existe \n";
exit(1);
}
} else {
// Imprimimos el uso:
echo "\n Uso: numero2.php <archivo>\n\n";
exit(1);
}
?>
1.- Comenzamos agregando la linea shebang y nuestra etiqueta de apertura php:
#!/usr/bin/php
<?php
2.- Verificamos que el archivo fue provisto: if ($_SERVER['argc'] == 2){
3.- Estamos seguros de que el archivo existe:
$file = $_SERVER['argv'][1];
if(file_exists($file) && is_file($file)){
El array argv le pusimos 1 por que en 0 esta el nombre del script que estamos ejecutando actualmente y como segundo argumento nuestro argumento que nos interesa.
4.- Leemos el archivo y lo imprimimos:
if($data = file($file)){
// Imprimimos un mensaje dentro:
echo "\n Numerando el archivo llamado '$file' \n ---------------------------\n\n";
// Contador de lineas
$n = 1;
// Imprimimos cada linea:
foreach ($data as $line) {
// Imprimimos el numero y la linea:
echo "$n $line";
// Incrementamos el numero de linea:
$n++;
} // Fin del bucle foreach
echo "\n ---------------------------\n Fin del archivo '$file'.\n";
5.- Devuelve 0 para indicar la correcta ejecucion del script:
exit(0);
Tipicamente 0 representa que se ejecuto sin problemas y un numero distinto significa algun tipo de error. La funcion exit() termina con la ejecucion del script.
6.- Completamos el condicional del paso 4:
}else{
echo "El archivo no pudo ser leido.\n";
exit(1);
}
7.- Completamos el condicional del paso 3:
} else {
echo "El archivo no existe \n";
exit(1);
}
8.- Completamos el condicional del paso 2 y completamos el script:
} else {
// Imprimimos el uso:
echo "\n Uso: numero2.php <archivo>\n\n";
exit(1);
}
Para ejecutarlo solo usamos:
php numero2.php <rutaarchivo>
Creacion de una interfaz
El uso de PHP en linea de comandos, se abre todo un nuevo mundo que en la web no tiene: la interfaz de usuario. Claro que la presentacion de una pagina web es algo diferente se utiliza HTML, pero en linea de comandos no es asi, para comenzar la mayoria de la mayoria de los scripts en lineas de comandos indican como se utilizara, si esta se utiliza incorrectamente. Escriba php -varmit y vera lo que quiero decir. El script numero2.php hace esto pero solo poco, los scripts normalmente hacen mas, como mostrar una opcion para ofrecer ayuda, por ejemplo: con el comando -h o --help.
Por ultimo, las aplicaciones de linea de comandos a menudo arrojan un codigo que indica si la operacion se realizo con exito. El numero 0 es devuelto para indicar que no hubo ningun problema, y algunos numeros distintos a cero devuelven distintas cosas. En numero2.php se devuelve 1 para indicar que hay un error.
Una alternativa para el uso de argumentos de linea de comandos es solicitar la entrada del usuario (si bien se pueden utilizar ambas tecnicas en combinacion). De esta manera puede crear una aplicacion interactiva, donde se pide al usuario informacion y hace algo con lo que se ingresa.
Tomandos entradas
Por extraño que pueda parecer, teniendo una entrada (input) en la aplicacion de la linea de comandos es exactamente igual que la lectura de datos desde un archivo. Pero en este caso, en lugar de utilizar un manejador de archivo (un puntero a un archivo abierto) vamos a usar una constante especial STDIN. Esto significa entrada estandar (standard input) lo que seria el teclado por defecto. Una forma facil de leer la entrada estandar seria utilizar la funcion fgets():
echo "Dime algo ";
$input = fgets(STDIN);
Todo lo escrito alli por el usuario se asigna a $input. Para ser mas precisos con la entrada, me gusta utilizar la funcion fscanf(). Como printf() y sprintf(). Esta funcion toma el formato de parametros para manejar tipos especificos de datos. Mediante el uso de esta funcion, en lugar de uno mas generico, nos aseguramos de una validacion basica de los datos leidos. En el siguiente ejemplo, fscanf() se utiliza para crear una aplicacion que convierte temperaturas entre grados Fahrenheit y Celsius (y al reves).
#!/usr/bin/php
<?php # temperatura.php
/* Esta pagina convierte la temperatura entre
* Fahrenheit y Celsius.
* Este script es para utilizarlo en PHP CLI.
* Este script requiere la entrada (input) de un usuario.
*/
// Entrada del usuario:
echo "\nIntroduzca la temperatura e indique si es Fahrenheit o Celsius [##.# C/F]: ";
// Leemos en una entrada condicional:
if(fscanf(STDIN, '%f %s', $temp_i, $which_i) == 2){
// Asumimos una salida invalida:
$which_o = FALSE;
// Creamos la conversion basado en $wich_i:
switch (trim($which_i)) {
// Celsius, convierte a Fahrenheit;
case 'C':
case 'c':
$temp_o = ($temp_i * (9.0/5.0)) + 32;
$which_o = 'F';
$which_i = 'C';
break;
// Fahrenheit, convierte a Celsius:
case 'F':
case 'f':
$temp_o = ($temp_i - 32) * (5.0/9.0);
$which_o = 'C';
$which_i = 'F';
break;
} // Fin del SWITCH.
// Imprimimos los resultados:
if($which_o){
printf("%0.1f %s es %0.1f %s.\n", $temp_i, $which_i, $temp_o, $which_o);
}else{
echo "Tu fallaste en poner C o F para indicar el tipo de temperatura.\n";
}
}else{ // No puso nada en la entrada
echo "Tu fallastes en usar la sintaxis correcta.\n";
} // Fin del IF principal.
?>
1.- Comenzamos nuestro script temperatura.php:
#!/usr/bin/php
<?php # temperatura.php
2.- Preguntamos al usuario en que quiere convertir la temperatura:
echo "\nIntroduzca la temperatura e indique si es Fahrenheit o Celsius [##.# C/F]: ";
3.- Leemos un numero con punto y una cadena:
if(fscanf(STDIN, '%f %s', $temp_i, $which_i) == 2){
fscanf() intentara leer en, de la entrada estandar, un numero con punto y una cadena. Estos deben coincidir con la temperatura (por ejemplo, 72.3) y el indicador como el tipo de temperatura (C o F). No hay formato 'caracter' en fscanf(), por lo que con %s son para las cadenas. Si puede leer los tipos de datos en ese orden, que van a ser asignados a las variables. La ultima parte de la funcion fscanf() devolvera el numero de valores que asigna a las variables. Asi que si se lee en dos valores, asignado en $temp_i y $which_i, el condicional sabe que los datos adecuados fueron introducidos.
4.- Establecemos una variable en FALSE.
$which_o = FALSE;
Esta variable almacenara las conversiones de la temperatura (la salida).
5.- Realizamos la conversion apropiada:
switch (trim($which_i)) {
// Celsius, convierte a Fahrenheit;
case 'C':
case 'c':
$temp_o = ($temp_i * (9.0/5.0)) + 32;
$which_o = 'F';
$which_i = 'C';
break;
// Fahrenheit, convierte a Celsius:
case 'F':
case 'f':
$temp_o = ($temp_i - 32) * (5.0/9.0);
$which_o = 'C';
$which_i = 'F';
break;
} // Fin del SWITCH.
Si el segundo valor no es un F, C o f, c la conversion no es impresa.
6.- Imprimimos los resultados:
if($which_o){
printf("%0.1f %s es %0.1f %s.\n", $temp_i, $which_i, $temp_o, $which_o);
}else{
echo "Tu fallaste en poner C o F para indicar el tipo de temperatura.\n";
}
Usamos printf() para manejar el formato del texto.
7.- Completamos el condicional del paso 3 y el script.
}else{ // No puso nada en la entrada
echo "Tu fallastes en usar la sintaxis correcta.\n";
} // Fin del IF principal.
?>
Nota: Cualquier funcion de archivo de PHP puede ser usada en STDIN. Esto significa que, por ejemplo, usted podria utilizar fgetc() para recuperar un solo caracter o fgetcsv() para recuperar y analizar una linea entera.
Incorporarlo al servidor
Una adicion en la linea de comandos de PHP 5.4 es un servidor web incorporado. Al usarlo, usted puede probar sus scripts PHP en el navegador web sin necesidad de instalar o ejecutar una aplicacion de servidor web como apache. Para ser absolutamente claro, esto no es un servidor web de produccion, pero puede utilizarse para probar scripts PHP rapidamente.
Para utilizar el servidor web incorporado:
1.- Ponga el siguiente comando para saber si tiene disponible la opcion de servidor web:
php -h
La bandera -h nos lleva a la documentacion de ayuda. Si la documentacion incluye la -S (debe ser mayuscula) y la opcion -t, entonces el servidor incorporado esta disponible.
2.- Navegue hasta el directorio que contiene el script PHP que le gustaria probar:
cd /directorio/a/script
Por defecto, el servidor web usara el directorio en el que el servidor comenzo como el directorio raiz, por lo que usted debe navegar hasta alli primero.
3.- Comenzamos el servidor:
php -S 127.0.0.1:8000
Para iniciar el servidor web utilice la opcion -S, seguido por el nombre de host y el puerto a usar. En su propio ordenador localhost es un nombre de host logico y comun. Para el puerto recomendaria, 8000 o 8080, que son alternativas comunes al puerto por defecto de apache 80. Utilizando uno de estos puertos evita posibles conflictos si ya tiene otro servidor web corriendo. Tambien puede utilizar una direccion IP si lo prefieres:
php -S 127.0.0.1:8000
4.- Cargamos http://127.0.0.1:8000/elnombredetuscript.php en tu navegador web. Como se carga la pagina en el navegador web debes utilizar la linea de comandos CLI, te daras cuenta que la ventana de consola o terminal refleja las solicitudes.
5.- Pulsa ctrl+C en la consola o terminal para detener el servidor web.
Hasta aqui termina este minitutorial espero que les sirva de ayuda, Saludos!
Mostrando entradas con la etiqueta consola. Mostrar todas las entradas
Mostrando entradas con la etiqueta consola. Mostrar todas las entradas
miércoles, 11 de febrero de 2015
lunes, 22 de abril de 2013
[JavaScript] Detectando Errores
Bueno anteriormente publique una entrada la cual era un juego de piedra, papel o tijera... en la cual probabamos el codigo javascript en la consola de firebug, aunque puede ser de utilidad para comprobar errores tambien en este caso explicaremos dos de mis favoritas :P
Empezaremos con algo que viene ya en W3schools y nos guiaremos de ella :D
Try...Throw...Catch
Estos son la utilizacion de try (intentar ejecutar codigo)... throw (lanzar mensaje personalizado)... catch (atrapar errores)....
Bueno siempre que programas un script en javascript pueden suceder errores, y con try,throw y catch podemos saber por que suceden tales errores....
Bueno aunque no es necesario usar throw muchas veces puede resultar util para personalizar nuestro mensaje de error, por lo cual veremos un ejemplo de try...catch y uno de try...throw...catch
Ejemplo de try...catch:
http://pastebin.com/GASKznc1
Lo que hace esto es intentar ejecutar el codigo que se encuentra entre try { code} pero si el codigo es erroneo se pasa a catch el cual lanza un mensaje de alerta con el error, en este caso e que es el parametro de catch, nos ayuda para que se muestre el mensaje que recogio e.message
Empezaremos con algo que viene ya en W3schools y nos guiaremos de ella :D
Try...Throw...Catch
Estos son la utilizacion de try (intentar ejecutar codigo)... throw (lanzar mensaje personalizado)... catch (atrapar errores)....
Bueno siempre que programas un script en javascript pueden suceder errores, y con try,throw y catch podemos saber por que suceden tales errores....
Bueno aunque no es necesario usar throw muchas veces puede resultar util para personalizar nuestro mensaje de error, por lo cual veremos un ejemplo de try...catch y uno de try...throw...catch
Ejemplo de try...catch:
http://pastebin.com/GASKznc1
Lo que hace esto es intentar ejecutar el codigo que se encuentra entre try { code} pero si el codigo es erroneo se pasa a catch el cual lanza un mensaje de alerta con el error, en este caso e que es el parametro de catch, nos ayuda para que se muestre el mensaje que recogio e.message
Imagen de ejemplo
Como puedes ver nos lanza el mensaje de error en este caso nos dice que adddlert no esta definida y como es claro esa funcion no existe :P
Ahora podriamos personalizar ese mensaje de adddlert pero mejor veremos otro ejemplo, estos dos ejemplos que les muestro los pueden ver en w3schools, les deje el enlace arriba :P
Ejemplo try...throw...catch:
En este ejemplo lo que hacemos es darle un rango de valores al input... entre 5 y 10 si es menor lo mostramos si es mayor tambien si esta vacio tambien si es una letra tambien xDDD :P
Imagen ejemplo 2
Por consola y firebug
En realidad yo trabajo con firefox y no tengo idea si otros navegadores incluyen una consola de este tipo de todas formas creo que muchos deben de tenerlo solo es cuestion de buscarle XDD
En este caso yo utilizo Web Developer Tool y de ahi la saco la consola.... Desde Tools>Error Console....
o Tambien la tachita que muestra te dice el error que puede estar causando...
Y tambien esta firebug que es demasiado bueno para hacer debug jeje
Aqui tenemos el ultimo ejemplo parecido al primero siendo que tenemos el mismo error, pero en este caso no utilizamos try...catch...
Ejemplo 3:
Imagen ejemplo 1
Como puedes ver en la imagen de ejemplo en este caso utilizamos la consola de errores para detectar el error
Imagen ejemplo 2
Y en este otro ejemplo utilizamos firebug para detectar el error...
Espero que estos consejos o tutorial les haya sido de utilidad a mas de uno :P
domingo, 21 de abril de 2013
[Javascript]Juego piedra, papel y tijeras
Bueno he estado practicando un poco he hice esto para poder utilizarlo es necesario tener la consola de Firebug en chrome tambien esta, pegar el codigo y empezar a probarlo, solo es para probar no es nada de un superprograma o version chingona solo para entender y practicar la sentencias if else y un poco las variables....
Les voi a dejar el codigo en pastebin, por que SyntaxHighligther me ha causado muchos problemas XDDD :P
Codigo: http://pastebin.com/YYaWHqPX
sábado, 16 de marzo de 2013
MYSQL MiniTutorial Parte 1
Bueno amigos he estado aprendiendo un poco de mysql, y quisiera compartir los conocimientos aprendidos con toda la gente que visita el BLOG, de esta manera tambien ellos tendran algunos conocimientos; y sere lo mas claro posible para crear unas partes basicas para que todo mundo las comprenda.
Empecemos por definir que es MySQL...
Que es MySQL
MySQL es un sistema de gestion de base de datos como muchos en este caso es software libre por lo que es ampliamente usado, Mysql es de la empresa oracle.
Para mas informacion acerca de mysql Wikipedia :D
Antes que nada les quiero decir que pueden faltar conceptos por lo que son libres de comentar para modificar en lo que me haya equivocado, como les comente soy nuevo en esto y trato de introducirlos por conceptos basicos, por cierto, antes que nada les quiero decir que no les mostrare aqui como montar un servidor casero o algo por el estilo para ello hay muchos tutoriales en google y si se quieren adentrar mas en esto de mysql tienen referencia oficial que es: https://dev.mysql.com/
Bueno quiero comentarles que trabajaremos por consola para que sea mas comodo aprender la estructura del lenguaje....
Como conectar a MySQL
hay varias maneras de conectar por Mysql en consola....
1.-manera remota (por si usan un servidor remoto para hacer las pruebas como por ejemplo 000webhost):
mysql -h host -u user -p pass
2.-modo local (desde tu pc no es necesario que indiques el host)
mysql -u user -p pass
Nota:
puedes especificar mas cosas como son -P (--port) para especificar el puerto con el que trabajaras con mysql o tambien --protocol para especificar el protocolo con el que trabajaras :P
Como puedes ver en la pantalla en este caso me conecte de manera local desde mi pc aunque no es necesario que indicara el host pero para que vean como se usa :P
Tambien se puede observar que arroja unos comandos que podemos usar como son:
help o \h - para que nos muestre la ayuda
\c - para cancelar una declaracion (cuando este mal escrita u otra cosa)
Hay unas que no muestra ahi pero son interesantes como son:
quit - para cerrar la consola de mysql
prompt - para cambiar el prompt (el prompt en este ejemplo es mysql>) si lo queremos cambiar por ejemplo a arthusu> seria de esta manera prompt arthusu> el prompt nos indica que podemos ejecutar declaraciones :P
Eso seria de los que me parecieron importantes aunque pueden ver de todas maneras con \h los demas comandos o la ayuda :P :D
Obtener informacion acerca de la version que estamos utilizando
Una de las cosas importantes al trabajar con mysql es saber la version que estamos utilizando, aunque podemos hacerlo con un select (todavia no lo he explicado) veremos tres maneras faciles :P
1.- Mysql -V indica la version
2.- Cuando abres una coneccion te muestra la version
3.- select version() - selecciona la version de mysql
Ahora veamoslo en un ejemplo para comprenderlo
Nota importante:
Siguiendo con el minitutorial quiero decirles que yo no les mostraré de la manera en que lo hacen los Videotutoriales o Tutoriales de paginas oficiales sino de manera que vayamos practicando de la misma manera que aprendemos, es decir, creemos base de datos, las mostremos, creemos tablas, las mostremos, insertemos datos, los seleccionemos, etc etc...
Creando una base de datos, mostrando base de datos, usando base de datos
Para crear una base de datos utilizamos la sintaxis:
CREATE DATABASE nombre_de_la_base_de_datos
antes que nada quiero decirles que en este caso mysql no es case sensitive (es decir no diferencia de minusculas o mayusculas) por lo que podemos usar create database name_db
CrEaTe DaTaBaSe name_db
CREATE DATABASE name_db
y funcionan de la misma manera....
Pero al seleccionar la base de datos o tablas o columnas si es case sensitive la verdad no se por que hicieron esto pero asi son las cosas XD :P :D
Creemos nuestra base de datos de ejemplo para nuestras practicas :D
Create Database Mis_Practicas;
por cierto siempre tenemos que cerrar nuestra declaracion (;) al terminarla de esta manera mysql sabe cuando terminamos una declaracion, sino mostraria -> que significa que sigue esperando mas declaraciones o que la termines o canceles con ; o \c (cancelas la declaracion lo comentamos arriba)
Como ves nos dice que se ha completado la declaracion correctamente....
Mostremos las bases de datos que tenemos en nuestro gestor de bases de datos Mysql :D
Show Databases;
Con esto mostramos todas las bases de datos entre ellas nos mostraria la que acabamos de crear :D
Seleccionar la base de datos que utilizaremos :D
Para seleccionar nuestra base de datos utilizamos Use DB;
Use DB;
donde DB como es el nombre de la base de datos y como indicamos anteriormente en este caso si es Case sensitive....
En este caso en la primera declaracion me equivoque a proposito para mostrar que no es lo mismo mis_practicas que Mis_Practicas, es decir, tienen que escribirlo tal y como esta, asi son mayormente las cosas en unix :P :D
Como ya estamos usando una base de datos podemos mostrar la base de datos que estamos utilizando actualmente usando
Select database();
Que es lo mismo que decir seleccioname la base de datos con la que actualmente estoy trabajando.
Creando tablas, describiendo y mostrando tablas
Tenemos seleccionada nuestra base de datos, ahora crearemos una tabla llamada personas se que hay muchos ejemplos de esto, si la he sacado de w3schools :D xD esto para hacerselos mas facil de comprender :D
La sintaxis para crear una tabla es de la siguiente manera:
Create Table nombre_de_la_tabla (Columna1 tipo_datos,Columna2 tipo_datos, Columna3 tipo_datos, etc)
Con etc me refiero que puedes agregar cuantas columnas quieras....
Y con tipo de datos el tipo de datos que usaras para ello veremos una breve descripcion de algunos tipos de datos :D
Datos de tipo texto
char(tamaño) - puede contener 255 caracteres. Puede contener letras, numeros y caracteres especiales. Un ejemplo practico seria: select cast(12345 as char(20)) as texto; la funcion cast() o convert() solo puede contener datos como son:
binary,char,date,datetime,decimal,signed(integer),time,unsigned(integer), aunque esto se salio un poco de la explicacion pero si la quieren usar para que sepan si no les llega a funcionar :P.....
varchar(tamaño) - puede contener 255 caracteres. Puede contener letras, numeros y caracteres especiales. Si tu pones mas de 255 caracteres en tamaño entonces automaticamente se convierte en tipo TEXT.
tinytext - puede contener una cadena de 255.
text - puede contener una cadena de 65,535 caracteres.
mediumtext - puede contener una cadena de 16,777,215 caracteres
longtext - puede contener una cadena de 4,294,967,295 caracteres
hay mas datos de tipo texto pero puse los mas basicos y ademas son los que mas se usan :P
Datos de tipo numero
int(tamaño) - puede contener numeros desde -2147483648 hasta 2147483647.
double(tamaño,digitos) - puede contener numeros decimales, en el parametro tamaño puedes indicar el tamaño de digitos que contendra a la izquierda y en digitos puedes especificar el numero de digitos a la derecha.
hay mas datos de tipo numero pero puse los mas basicos y ademas los que mas se usan :P
Datos de tipo fecha
date() - el formato que contiene es YYYY-MM-DD donde y es año m es mes y d es dia, entonces podria ser un ejemplo 2013-03-15. Soporta desde 1000-01-01 hasta 9999-12-31. Puedes usar select current_date; para que te muestre la fecha actual con el formato anterior.
datetime() - el formato que contiene es YYYY-MM-DD HH:MM:SS donde y es año m es mes d es el dia h es la hora m es minutos y s son los segundos.... un ejemplo seria: 2013-03-15 22:56:19. Puedes usar select now(); para que te muestre la fecha y hora actual con el formato anterior.
timestamp() - el formato que contiene es YYYY-MM-DD HH:MM:SS el mismo que el anterior, este tipo de dato tiene almacenado desde que unix salio, soporta un rango 1970-01-01 00:00:01 UTC hasta 2038-01-09 03:14:07 UTC. Un ejemplo practico podria ser select timestamp(now());
aunque timestamp no solo acepta el formato de arriba pero era un buen ejemplo puede aceptar otros formatos como son: YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, o YYMMDD.
time() - el formato que contiene es HH:MM:SS (hora:minuto:segundo), soporta un rando desde -838:59:59 hasta 838:59:59. Un ejemplo practico seria: select time(now()) as hora; donde as seria una alias es decir en ves de llamarse....
time(now()) se llamara hora, muchas veces nos facilita el trabajo para no hacer consultas tan largas pero bueno me sali del tema de nuevo, pero es bueno para que supieran que significa :P
year() - soporta dos formatos de 2 digitos o 4. El de 4 digitos soporta desde 1901 hasta 2155, y el de 2 digitos desde 70 hasta 69 (representan 1970 hasta 2069). Un ejemplo seria: select year(now());
Si quieres una referencia mas completa puedes visitar:
http://www.w3schools.com/sql/sql_datatypes.asp
o
http://dev.mysql.com/doc/refman/5.5/en/data-types.html
Bueno como ahora ya sabemos algunos tipos de datos entonces creemos nuestra tabla Personas para practicar :D
create table personas(p_id int not null auto_increment primary key,apellido varchar(50) not null,nombre varchar(50) not null,direccion varchar(50) not null,ciudad varchar(50) not null);
con esto creamos una tabla personas con las columnas p_id,apellido,nombre,direccion y ciudad cada uno con su tipo de datos..... agregamos unas cosas que no vimos como son not null para que el valor no sea nulo, es decir, no este vacio... auto_increment que es para que se autoincremente automaticamente segun vayamos agregando mas registros, primary key es para que tenga un id unico y que no se repitan cada ves que incrementemos :D
ahora vamos a ver la descripcion de la tabla podemos usar describe o desc que es su sinonimo....
desc nombre_de_la_tabla;
describe nombre_de_la_tabla;
y con esto veremos como esta formada, aca les dejo una imagen de ejemplo de la creacion de la tabla y la descripcion de como esta compuesta, donde se muestra el tipo de datos,si es null,la key que es este caso es primary la primera columna p_id, default que son los valores por defecto en este caso no agregamos ninguno y extra que son valores extras como auto_increment....
Ahora ya estamos usando la base de datos tenemos nuestra tabla Personas que tiene las columnas que indica el campo field en la descripcion.
Veamos como mostramos las tablas....
Show Tables;
Con esto mostramos todas las tablas que se encuentren en la base de datos que estamos utilizando (en este caso solo hay una tabla que es la que acabamos de crear).
Como puedes ver tambien nos muestra la base de datos Tables_in_Mis_Practicas y nos muestra la tabla personas :D
Insertar datos y mostrarlos
Esta es una de las partes mas interesantes por que cuando insertar los datos ya puedes empezar a manejarlos, aunque en esta parte solo veremos como insertarlos de dos maneras y como mostrarlos y daremos una conclusion de todo lo visto que puede ser implementado en php de manera facil :D
Insertar los datos de manera local
bueno podemos insertar los datos de manera local utilizando, la siguiente sintaxis:
load data local infile 'ruta/archivo.txt' into table nombre_tabla;
donde ruta/archivo.txt es la ruta donde se encuentra el archivo que contiene los datos a insertar....
nombre_tabla es la tabla a la cual insertaremos esos datos....
Por ejemplo:
Ahi esta el archivo en el cual indicamos los datos de cada columna... es decir,
p_id en el primer registro es 1
apellido en el primer registro es Hansen
nombre en el primer registro es Ola
direccion en el primer registro es Timoteivn 10
ciudad en el primer registro es Sandnes
y asi sucesivamente el segundo registro es el de la segunda linea, el tercer registro el de la tercera linea, por cierto deben tabular cada columna sino no funcionara el archivo :P
entonces ya tenemos nuestro archivo lo nombre personas.txt
vamos a cargarlo para insertar los registros...
antes que nada localizamos nuestra ruta del archivo:
ahora lo cargamos.... e insertamos en nuestra tabla...
como puedes ver se insertaron 3 nuevas filas que son los datos que agregamos...
Para seleccionar los datos utilizamos:
Select * from personas;
que significaria Seleccionar todos los datos desde personas....
Select - Selecciona datos
* - significa todos
from - desde
personas - es la tabla
Como puedes ver se muestran todos los registros, ahora que tenemos todo definamos ¿Que es una base de datos, que es una tabla, que es una columna, que es una fila, que es un registro? Ya despues de todo esto no creo que sea tan dificil para ustedes definirlo si es que siguieron las practicas :D XD
Que es una base de datos
Es una parte donde se almacenan todas las tablas/registros de nuestra aplicacion web.
Que es una tabla
Es una parte donde se almacenan todas las columnas/registros de nuestra aplicacion web.
Que es una fila
La fila es toda una parte de un registro, por ejemplo la primera fila seria:
1 Hansen Ola Timoteivn 10 Sandnes
la segunda:
2 Svendson tove Borgvn 23 Sandnes
y asi sucesivamente...
Que son los registros
Los registros son cada dato o celda(por ejemplo Hansen), es por eso que muchas veces como esta conformada una base de datos puedes ser vista como en excel tiene sus partes...
La otra forma de insertar datos/registros, puede ser con la siguiente sintaxis:
Insert Into nombre_de_la_tabla (columna1,columna2,culumna3,etc) values (registro1,registro2,registro3,etc);
o tambien:
insert into nombre_de_la_tabla (columna1) values (registro1),(registro2),(registro3),(etc);
o tambien:
insert into nombre_de_la_tabla values (registro1,registro2,etc);
1.-en el primer caso es mas facil se insertan los registros seleccionados en las columnas seleccionadas...
2.-en el segundo caso se insertan los registros en diferentes filas en la columna seleccionada...
3.-en el tercero se insertan los registros en todas las columnas para esto debe coincidir con el numero de columnas....
Ahora vamos a eliminar las filas o registros para asi poder insertar de nuevo los mismos registros pero de forma diferente....
delete from nombre_de_la_tabla;
en este caso eliminamos todas las filas/registros desde la tabla personas, para poder insertar de otra manera, esta opcion la mostrare mas completo en otra parte de estos minitutos :P
entonces eliminamos todos los registros:
delete from personas;
Como puedes observar eliminamos las filas, y cuando queremos seleccionar las filas/registros ya no hay por que lo hemos eliminados pero la tabla sigue en su forma original :D
asi que insertemos nuestros registros de nuevo con la sintaxis: insert into de arriba :D
insert into personas (p_id,apellido,nombre,direccion,ciudad) values (1,'Hansen','Ola','Timoteivn 10','Sandnes');
con esto insertariamos en la tabla personas en las columnas p_id,apellido,nombre,direccion,ciudad los registros 1,Hansen,Ola,Timoteivn 10,Sandnes siguiendo el orden de las columnas se insertan los registros :D respetando el tipo de datos :P
Como puedes observar solo tenemos un registro esta bien ahora puedo mostrar la otra manera :D
insert into personas values (2,'Svendson','tove','Borgvn 23','Sandnes');
la manera que no les mostre pueden hacerla facilmente con los ejemplos anteriores no creo que haiga dificultades :P ahi tienen la sintaxis :D
Al igual que insertar la ultima fila :D...
Seleccionemos los datos de nuevo :D
Puedes seguir la sintaxis que deje arriba Select * From nombre_de_la_tabla;
Creando una aplicacion basica con PHP y MYSQL
Para terminar esta parte Crearemos una aplicacion web con php y mysql basica que lo que hara sera insertar los datos de un nuevo registro... aunque no se insertaran de manera segura pero todo el fin es para ver lo aprendido :D, por cierto lo de php no lo explicare a fondo por lo que puede visitar: http://www.php.net/
Bueno ahi esta el codigo basicamente lo que hace es insertar los datos, si no estan vacios y si el email es correcto, y las contraseñas iguales entonces inserta los registros quitandoles cualquier XSS o SQLI aunque ya hay formas de Bypassear la funcion mysql_real_scape_string entonces por eso no es tan seguro :P pero bueno me sali del tema xD, si los datos no son correctos envia un mensaje de error y los datos no insertan, las contraseñas son insertadas en md5, bueno todo esto se ve en este minitutoriales por eso que puse esta miniaplicacion, les dejo de tarea estudiarsela (pueden tomar como referencia este minitutorial :D ), si quieren probarla pueden hacerlo en localhost :D....
Este es el final de la primera parte, los espero en la segunda :D
Empecemos por definir que es MySQL...
Que es MySQL
MySQL es un sistema de gestion de base de datos como muchos en este caso es software libre por lo que es ampliamente usado, Mysql es de la empresa oracle.
Para mas informacion acerca de mysql Wikipedia :D
Antes que nada les quiero decir que pueden faltar conceptos por lo que son libres de comentar para modificar en lo que me haya equivocado, como les comente soy nuevo en esto y trato de introducirlos por conceptos basicos, por cierto, antes que nada les quiero decir que no les mostrare aqui como montar un servidor casero o algo por el estilo para ello hay muchos tutoriales en google y si se quieren adentrar mas en esto de mysql tienen referencia oficial que es: https://dev.mysql.com/
Bueno quiero comentarles que trabajaremos por consola para que sea mas comodo aprender la estructura del lenguaje....
Como conectar a MySQL
hay varias maneras de conectar por Mysql en consola....
1.-manera remota (por si usan un servidor remoto para hacer las pruebas como por ejemplo 000webhost):
mysql -h host -u user -p pass
2.-modo local (desde tu pc no es necesario que indiques el host)
mysql -u user -p pass
Nota:
puedes especificar mas cosas como son -P (--port) para especificar el puerto con el que trabajaras con mysql o tambien --protocol para especificar el protocolo con el que trabajaras :P
Como puedes ver en la pantalla en este caso me conecte de manera local desde mi pc aunque no es necesario que indicara el host pero para que vean como se usa :P
Tambien se puede observar que arroja unos comandos que podemos usar como son:
help o \h - para que nos muestre la ayuda
\c - para cancelar una declaracion (cuando este mal escrita u otra cosa)
Hay unas que no muestra ahi pero son interesantes como son:
quit - para cerrar la consola de mysql
prompt - para cambiar el prompt (el prompt en este ejemplo es mysql>) si lo queremos cambiar por ejemplo a arthusu> seria de esta manera prompt arthusu> el prompt nos indica que podemos ejecutar declaraciones :P
Eso seria de los que me parecieron importantes aunque pueden ver de todas maneras con \h los demas comandos o la ayuda :P :D
Obtener informacion acerca de la version que estamos utilizando
Una de las cosas importantes al trabajar con mysql es saber la version que estamos utilizando, aunque podemos hacerlo con un select (todavia no lo he explicado) veremos tres maneras faciles :P
1.- Mysql -V indica la version
2.- Cuando abres una coneccion te muestra la version
3.- select version() - selecciona la version de mysql
Ahora veamoslo en un ejemplo para comprenderlo
Nota importante:
Siguiendo con el minitutorial quiero decirles que yo no les mostraré de la manera en que lo hacen los Videotutoriales o Tutoriales de paginas oficiales sino de manera que vayamos practicando de la misma manera que aprendemos, es decir, creemos base de datos, las mostremos, creemos tablas, las mostremos, insertemos datos, los seleccionemos, etc etc...
Creando una base de datos, mostrando base de datos, usando base de datos
Para crear una base de datos utilizamos la sintaxis:
CREATE DATABASE nombre_de_la_base_de_datos
antes que nada quiero decirles que en este caso mysql no es case sensitive (es decir no diferencia de minusculas o mayusculas) por lo que podemos usar create database name_db
CrEaTe DaTaBaSe name_db
CREATE DATABASE name_db
y funcionan de la misma manera....
Pero al seleccionar la base de datos o tablas o columnas si es case sensitive la verdad no se por que hicieron esto pero asi son las cosas XD :P :D
Creemos nuestra base de datos de ejemplo para nuestras practicas :D
Create Database Mis_Practicas;
por cierto siempre tenemos que cerrar nuestra declaracion (;) al terminarla de esta manera mysql sabe cuando terminamos una declaracion, sino mostraria -> que significa que sigue esperando mas declaraciones o que la termines o canceles con ; o \c (cancelas la declaracion lo comentamos arriba)
Como ves nos dice que se ha completado la declaracion correctamente....
Mostremos las bases de datos que tenemos en nuestro gestor de bases de datos Mysql :D
Show Databases;
Con esto mostramos todas las bases de datos entre ellas nos mostraria la que acabamos de crear :D
Seleccionar la base de datos que utilizaremos :D
Para seleccionar nuestra base de datos utilizamos Use DB;
Use DB;
donde DB como es el nombre de la base de datos y como indicamos anteriormente en este caso si es Case sensitive....
En este caso en la primera declaracion me equivoque a proposito para mostrar que no es lo mismo mis_practicas que Mis_Practicas, es decir, tienen que escribirlo tal y como esta, asi son mayormente las cosas en unix :P :D
Como ya estamos usando una base de datos podemos mostrar la base de datos que estamos utilizando actualmente usando
Select database();
Que es lo mismo que decir seleccioname la base de datos con la que actualmente estoy trabajando.
Creando tablas, describiendo y mostrando tablas
Tenemos seleccionada nuestra base de datos, ahora crearemos una tabla llamada personas se que hay muchos ejemplos de esto, si la he sacado de w3schools :D xD esto para hacerselos mas facil de comprender :D
La sintaxis para crear una tabla es de la siguiente manera:
Create Table nombre_de_la_tabla (Columna1 tipo_datos,Columna2 tipo_datos, Columna3 tipo_datos, etc)
Con etc me refiero que puedes agregar cuantas columnas quieras....
Y con tipo de datos el tipo de datos que usaras para ello veremos una breve descripcion de algunos tipos de datos :D
Datos de tipo texto
char(tamaño) - puede contener 255 caracteres. Puede contener letras, numeros y caracteres especiales. Un ejemplo practico seria: select cast(12345 as char(20)) as texto; la funcion cast() o convert() solo puede contener datos como son:
binary,char,date,datetime,decimal,signed(integer),time,unsigned(integer), aunque esto se salio un poco de la explicacion pero si la quieren usar para que sepan si no les llega a funcionar :P.....
varchar(tamaño) - puede contener 255 caracteres. Puede contener letras, numeros y caracteres especiales. Si tu pones mas de 255 caracteres en tamaño entonces automaticamente se convierte en tipo TEXT.
tinytext - puede contener una cadena de 255.
text - puede contener una cadena de 65,535 caracteres.
mediumtext - puede contener una cadena de 16,777,215 caracteres
longtext - puede contener una cadena de 4,294,967,295 caracteres
hay mas datos de tipo texto pero puse los mas basicos y ademas son los que mas se usan :P
Datos de tipo numero
int(tamaño) - puede contener numeros desde -2147483648 hasta 2147483647.
double(tamaño,digitos) - puede contener numeros decimales, en el parametro tamaño puedes indicar el tamaño de digitos que contendra a la izquierda y en digitos puedes especificar el numero de digitos a la derecha.
hay mas datos de tipo numero pero puse los mas basicos y ademas los que mas se usan :P
Datos de tipo fecha
date() - el formato que contiene es YYYY-MM-DD donde y es año m es mes y d es dia, entonces podria ser un ejemplo 2013-03-15. Soporta desde 1000-01-01 hasta 9999-12-31. Puedes usar select current_date; para que te muestre la fecha actual con el formato anterior.
datetime() - el formato que contiene es YYYY-MM-DD HH:MM:SS donde y es año m es mes d es el dia h es la hora m es minutos y s son los segundos.... un ejemplo seria: 2013-03-15 22:56:19. Puedes usar select now(); para que te muestre la fecha y hora actual con el formato anterior.
timestamp() - el formato que contiene es YYYY-MM-DD HH:MM:SS el mismo que el anterior, este tipo de dato tiene almacenado desde que unix salio, soporta un rango 1970-01-01 00:00:01 UTC hasta 2038-01-09 03:14:07 UTC. Un ejemplo practico podria ser select timestamp(now());
aunque timestamp no solo acepta el formato de arriba pero era un buen ejemplo puede aceptar otros formatos como son: YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, o YYMMDD.
time() - el formato que contiene es HH:MM:SS (hora:minuto:segundo), soporta un rando desde -838:59:59 hasta 838:59:59. Un ejemplo practico seria: select time(now()) as hora; donde as seria una alias es decir en ves de llamarse....
time(now()) se llamara hora, muchas veces nos facilita el trabajo para no hacer consultas tan largas pero bueno me sali del tema de nuevo, pero es bueno para que supieran que significa :P
year() - soporta dos formatos de 2 digitos o 4. El de 4 digitos soporta desde 1901 hasta 2155, y el de 2 digitos desde 70 hasta 69 (representan 1970 hasta 2069). Un ejemplo seria: select year(now());
Si quieres una referencia mas completa puedes visitar:
http://www.w3schools.com/sql/sql_datatypes.asp
o
http://dev.mysql.com/doc/refman/5.5/en/data-types.html
Bueno como ahora ya sabemos algunos tipos de datos entonces creemos nuestra tabla Personas para practicar :D
create table personas(p_id int not null auto_increment primary key,apellido varchar(50) not null,nombre varchar(50) not null,direccion varchar(50) not null,ciudad varchar(50) not null);
con esto creamos una tabla personas con las columnas p_id,apellido,nombre,direccion y ciudad cada uno con su tipo de datos..... agregamos unas cosas que no vimos como son not null para que el valor no sea nulo, es decir, no este vacio... auto_increment que es para que se autoincremente automaticamente segun vayamos agregando mas registros, primary key es para que tenga un id unico y que no se repitan cada ves que incrementemos :D
ahora vamos a ver la descripcion de la tabla podemos usar describe o desc que es su sinonimo....
desc nombre_de_la_tabla;
describe nombre_de_la_tabla;
y con esto veremos como esta formada, aca les dejo una imagen de ejemplo de la creacion de la tabla y la descripcion de como esta compuesta, donde se muestra el tipo de datos,si es null,la key que es este caso es primary la primera columna p_id, default que son los valores por defecto en este caso no agregamos ninguno y extra que son valores extras como auto_increment....
Ahora ya estamos usando la base de datos tenemos nuestra tabla Personas que tiene las columnas que indica el campo field en la descripcion.
Veamos como mostramos las tablas....
Show Tables;
Con esto mostramos todas las tablas que se encuentren en la base de datos que estamos utilizando (en este caso solo hay una tabla que es la que acabamos de crear).
Como puedes ver tambien nos muestra la base de datos Tables_in_Mis_Practicas y nos muestra la tabla personas :D
Insertar datos y mostrarlos
Esta es una de las partes mas interesantes por que cuando insertar los datos ya puedes empezar a manejarlos, aunque en esta parte solo veremos como insertarlos de dos maneras y como mostrarlos y daremos una conclusion de todo lo visto que puede ser implementado en php de manera facil :D
Insertar los datos de manera local
bueno podemos insertar los datos de manera local utilizando, la siguiente sintaxis:
load data local infile 'ruta/archivo.txt' into table nombre_tabla;
donde ruta/archivo.txt es la ruta donde se encuentra el archivo que contiene los datos a insertar....
nombre_tabla es la tabla a la cual insertaremos esos datos....
bueno creemos un archivo entonces llamado Personas en el cual insertaremos unos datos estos datos para que funcionen bien deben ser separados por la tecla de tabulacion (tab, es una tecla con flechas cruzadas
)Por ejemplo:
Ahi esta el archivo en el cual indicamos los datos de cada columna... es decir,
p_id en el primer registro es 1
apellido en el primer registro es Hansen
nombre en el primer registro es Ola
direccion en el primer registro es Timoteivn 10
ciudad en el primer registro es Sandnes
y asi sucesivamente el segundo registro es el de la segunda linea, el tercer registro el de la tercera linea, por cierto deben tabular cada columna sino no funcionara el archivo :P
entonces ya tenemos nuestro archivo lo nombre personas.txt
vamos a cargarlo para insertar los registros...
antes que nada localizamos nuestra ruta del archivo:
ahora lo cargamos.... e insertamos en nuestra tabla...
como puedes ver se insertaron 3 nuevas filas que son los datos que agregamos...
Para seleccionar los datos utilizamos:
Select * from personas;
que significaria Seleccionar todos los datos desde personas....
Select - Selecciona datos
* - significa todos
from - desde
personas - es la tabla
Como puedes ver se muestran todos los registros, ahora que tenemos todo definamos ¿Que es una base de datos, que es una tabla, que es una columna, que es una fila, que es un registro? Ya despues de todo esto no creo que sea tan dificil para ustedes definirlo si es que siguieron las practicas :D XD
Que es una base de datos
Es una parte donde se almacenan todas las tablas/registros de nuestra aplicacion web.
Que es una tabla
Es una parte donde se almacenan todas las columnas/registros de nuestra aplicacion web.
Que es una fila
La fila es toda una parte de un registro, por ejemplo la primera fila seria:
1 Hansen Ola Timoteivn 10 Sandnes
la segunda:
2 Svendson tove Borgvn 23 Sandnes
y asi sucesivamente...
Que son los registros
Los registros son cada dato o celda(por ejemplo Hansen), es por eso que muchas veces como esta conformada una base de datos puedes ser vista como en excel tiene sus partes...
La otra forma de insertar datos/registros, puede ser con la siguiente sintaxis:
Insert Into nombre_de_la_tabla (columna1,columna2,culumna3,etc) values (registro1,registro2,registro3,etc);
o tambien:
insert into nombre_de_la_tabla (columna1) values (registro1),(registro2),(registro3),(etc);
o tambien:
insert into nombre_de_la_tabla values (registro1,registro2,etc);
1.-en el primer caso es mas facil se insertan los registros seleccionados en las columnas seleccionadas...
2.-en el segundo caso se insertan los registros en diferentes filas en la columna seleccionada...
3.-en el tercero se insertan los registros en todas las columnas para esto debe coincidir con el numero de columnas....
Ahora vamos a eliminar las filas o registros para asi poder insertar de nuevo los mismos registros pero de forma diferente....
delete from nombre_de_la_tabla;
en este caso eliminamos todas las filas/registros desde la tabla personas, para poder insertar de otra manera, esta opcion la mostrare mas completo en otra parte de estos minitutos :P
entonces eliminamos todos los registros:
delete from personas;
Como puedes observar eliminamos las filas, y cuando queremos seleccionar las filas/registros ya no hay por que lo hemos eliminados pero la tabla sigue en su forma original :D
asi que insertemos nuestros registros de nuevo con la sintaxis: insert into de arriba :D
insert into personas (p_id,apellido,nombre,direccion,ciudad) values (1,'Hansen','Ola','Timoteivn 10','Sandnes');
con esto insertariamos en la tabla personas en las columnas p_id,apellido,nombre,direccion,ciudad los registros 1,Hansen,Ola,Timoteivn 10,Sandnes siguiendo el orden de las columnas se insertan los registros :D respetando el tipo de datos :P
Como puedes observar solo tenemos un registro esta bien ahora puedo mostrar la otra manera :D
insert into personas values (2,'Svendson','tove','Borgvn 23','Sandnes');
la manera que no les mostre pueden hacerla facilmente con los ejemplos anteriores no creo que haiga dificultades :P ahi tienen la sintaxis :D
Al igual que insertar la ultima fila :D...
Seleccionemos los datos de nuevo :D
Puedes seguir la sintaxis que deje arriba Select * From nombre_de_la_tabla;
Creando una aplicacion basica con PHP y MYSQL
Para terminar esta parte Crearemos una aplicacion web con php y mysql basica que lo que hara sera insertar los datos de un nuevo registro... aunque no se insertaran de manera segura pero todo el fin es para ver lo aprendido :D, por cierto lo de php no lo explicare a fondo por lo que puede visitar: http://www.php.net/
";
}
$database="CREATE DATABASE IF NOT EXISTS Registros";
if(mysqli_query($con,$database)){
echo "Base de datos creada correctamente
";
}else{
echo "Error al crear la base de datos
";
}
$table="CREATE TABLE IF NOT EXISTS `Registros`.`Registros`(`id` int not null auto_increment primary key,`usuario` varchar(20) not null,`email` varchar(50) not null,`password` varchar(50) not null,`r_password` varchar(50) not null)";
if(mysqli_query($con,$table)){
echo "Tabla creada correctamente
";
}else{
echo "Error al crear tabla: ".mysqli_error($con)."
";
}
$usuario=mysql_real_escape_string($usuario);
$email=mysql_real_escape_string($email);
$pass=mysql_real_escape_string($pass);
$r_pass=mysql_real_escape_string($r_pass);
mysqli_select_db($con,'Registros');
$insert="INSERT INTO Registros (usuario,email,password,r_password) VALUES ('$usuario','$email',md5('$pass'),md5('$r_pass'))";
if(!mysqli_query($con,$insert)){
echo "Ocurrio un error al ingresar los datos: ". mysqli_error($con);
}else{
echo "Datos ingresados correctamente
";
}
mysqli_close($con);
}else{
echo "Debes llenar los datos correctamente";
}
}
?>
Formulario de registro
Bueno ahi esta el codigo basicamente lo que hace es insertar los datos, si no estan vacios y si el email es correcto, y las contraseñas iguales entonces inserta los registros quitandoles cualquier XSS o SQLI aunque ya hay formas de Bypassear la funcion mysql_real_scape_string entonces por eso no es tan seguro :P pero bueno me sali del tema xD, si los datos no son correctos envia un mensaje de error y los datos no insertan, las contraseñas son insertadas en md5, bueno todo esto se ve en este minitutoriales por eso que puse esta miniaplicacion, les dejo de tarea estudiarsela (pueden tomar como referencia este minitutorial :D ), si quieren probarla pueden hacerlo en localhost :D....
Este es el final de la primera parte, los espero en la segunda :D
Suscribirse a:
Entradas (Atom)











