miércoles, 23 de noviembre de 2011

Los diferentes lenguajes de programación para la web

Actualmente existen diferentes lenguajes de programación para desarrollar en la web, estos han ido surgiendo debido a las tendencias y necesidades de las plataformas. En el presente artículo pretende mostrar las ventajas y desventajas de los lenguajes más conocidos.
Desde los inicios de Internet, fueron surgiendo diferentes demandas por los usuarios y se dieron soluciones mediante lenguajes estáticos. A medida que paso el tiempo, las tecnologías fueron desarrollándose y surgieron nuevos problemas a dar solución. Esto dio lugar a desarrollar lenguajes de programación para la web dinámicos, que permitieran interactuar con los usuarios y utilizaran sistemas de Bases de Datos. A continuación daremos una introducción a los diferentes lenguajes de programación para la web.


Lenguaje HTML

Desde el surgimiento de internet se han publicado sitios web gracias al lenguaje HTML. Es un lenguaje estático para el desarrollo de sitios web (acrónimo en inglés de HyperText Markup Language, en español Lenguaje de Marcas Hipertextuales). Desarrollado por el World Wide Web Consortium (W3C). Los archivos pueden tener las extensiones (htm, html).

Sintaxis:

<html> (Inicio del documento HTML)
<head>
( Cabecera )
</head>
<body>
( Cuerpo )
</body>
</html>
<b> </b> Negrita
<p> </p> Definir parrafo
<etiqueta> Apertura de la etiqueta
</etiqueta> Cierre de la etiqueta



Ventajas:


  • Sencillo que permite describir hipertexto.
  • Texto presentado de forma estructurada y agradable.
  • No necesita de grandes conocimientos cuando se cuenta con un editor de páginas web o WYSIWYG.
  • Archivos pequeños.
  • Despliegue rápido.
  • Lenguaje de fácil aprendizaje.
  • Lo admiten todos los exploradores.
Desventajas:


  • Lenguaje estático.
  • La interpretación de cada navegador puede ser diferente.
  • Guarda muchas etiquetas que pueden convertirse en “basura” y dificultan la corrección.
  • El diseño es más lento.
  • Las etiquetas son muy limitadas.
Lenguaje Javascript

Este es un lenguaje interpretado, no requiere compilación. Fue creado por Brendan Eich en la empresa Netscape Communications. Utilizado principalmente en páginas web. Es similar a Java, aunque no es un lenguaje orientado a objetos, el mismo no dispone de herencias. La mayoría de los navegadores en sus últimas versiones interpretan código Javascript.

El código Javascript puede ser integrado dentro de nuestras páginas web. Para evitar incompatibilidades el World Wide Web Consortium (W3C) diseño un estándar denominadoDOM (en inglés Document Object Model, en su traducción al español Modelo de Objetos del Documento).

Sintaxis:

<script type="text/javascript"> ... </script>


Ventajas:

  • Lenguaje de scripting seguro y fiable.
  • Los script tienen capacidades limitadas, por razones de seguridad.
  • El código Javascript se ejecuta en el cliente.
Desventajas:

  • Código visible por cualquier usuario.
  • El código debe descargarse completamente.
  • Puede poner en riesgo la seguridad del sitio, con el actual problema llamado XSS (significa en inglés Cross Site Scripting renombrado a XSS por su similitud con las hojas de estilo CSS).
Lenguaje PHP

Es un lenguaje de programación utilizado para la creación de sitio web. PHP es un acrónimo recursivo que significa “PHP Hypertext Pre-processor”, (inicialmente se llamó Personal Home Page). Surgió en 1995, desarrollado por PHP Group.

PHP es un lenguaje de script interpretado en el lado del servidor utilizado para la generación de páginas web dinámicas, embebidas en páginas HTML y ejecutadas en el servidor. PHP no necesita ser compilado para ejecutarse. Para su funcionamiento necesita tener instalado Apache o IIS con las librerías de PHP. La mayor parte de su sintaxis ha sido tomada de C, Java y Perl con algunas características específicas. Los archivos cuentan con la extensión(php).

Sintaxis:


La sintaxis utilizada para incorporar código PHP es la siguiente:
<?
$mensaje = “Hola”;
echo $mensaje;
?>


También puede usarse:
<?php
$mensaje = “Hola”;
echo $mensaje;
?>


Ventajas:
  • Muy fácil de aprender.
  • Se caracteriza por ser un lenguaje muy rápido.
  • Soporta en cierta medida la orientación a objeto. Clases y herencia.
  • Es un lenguaje multiplataforma: Linux, Windows, entre otros.
  • Capacidad de conexión con la mayoría de los manejadores de base de datos: MysSQL, PostgreSQL, Oracle, MS SQL Server, entre otras.
  • Capacidad de expandir su potencial utilizando módulos.
  • Posee documentación en su página oficial la cual incluye descripción y ejemplos de cada una de sus funciones.
  • Es libre, por lo que se presenta como una alternativa de fácil acceso para todos.
  • Incluye gran cantidad de funciones.
  • No requiere definición de tipos de variables ni manejo detallado del bajo nivel.
Desventajas:

  • Se necesita instalar un servidor web.
  • Todo el trabajo lo realiza el servidor y no delega al cliente. Por tanto puede ser más ineficiente a medida que las solicitudes aumenten de número.
  • La legibilidad del código puede verse afectada al mezclar sentencias HTML y PHP.
  • La programación orientada a objetos es aún muy deficiente para aplicaciones grandes.
  • Dificulta la modularización.
  • Dificulta la organización por capas de la aplicación.
Seguridad:

PHP es un poderoso lenguaje e intérprete, ya sea incluido como parte de un servidor web en forma de módulo o ejecutado como un binario CGI separado, es capaz de acceder a archivos, ejecutar comandos y abrir conexiones de red en el servidor. Estas propiedades hacen que cualquier cosa que sea ejecutada en un servidor web sea insegura por naturaleza.
PHP está diseñado específicamente para ser un lenguaje más seguro para escribir programas CGI que Perl o C, y con la selección correcta de opciones de configuración en tiempos de compilación y ejecución, y siguiendo algunas prácticas correctas de programación.

Lenguaje ASP

Es una tecnología del lado de servidor desarrollada por Microsoft para el desarrollo de sitio web dinámicos. ASP significa en inglés (Active Server Pages), fue liberado por Microsoft en 1996. Las páginas web desarrolladas bajo este lenguaje es necesario tener instalado Internet Information Server (IIS).

ASP no necesita ser compilado para ejecutarse. Existen varios lenguajes que se pueden utilizar para crear páginas ASP. El más utilizado es VBScript, nativo de Microsoft. ASP se puede hacer también en Perl and Jscript (no JavaScript). El código ASP puede ser insertado junto con el código HTML. Los archivos cuentan con la extensión (asp).

Sintaxis:

<% %>

Ventajas:

  • Usa Visual Basic Script, siendo fácil para los usuarios.
  • Comunicación óptima con SQL Server.
  • Soporta el lenguaje JScript (Javascript de Microsoft).
Desventajas:
  • Código desorganizado.
  • Se necesita escribir mucho código para realizar funciones sencillas.
  • Tecnología propietaria.
  • Hospedaje de sitios web costosos.
Lenguaje ASP.NET

Este es un lenguaje comercializado por Microsoft, y usado por programadores para desarrollar entre otras funciones, sitios web. ASP.NET es el sucesor de la tecnología ASP, fue lanzada al mercado mediante una estrategia de mercado denominada .NET.

El ASP.NET fue desarrollado para resolver las limitantes que brindaba tu antecesor ASP. Creado para desarrollar web sencillas o grandes aplicaciones. Para el desarrollo de ASP.NET se puede utilizar C#, VB.NET o J#. Los archivos cuentan con la extensión (aspx). Para su funcionamiento de las páginas se necesita tener instalado IIS con el Framework .Net. Microsft Windows 2003 incluye este framework, solo se necesitará instalarlo en versiones anteriores.

Sintaxis:
Ventajas:


  • Completamente orientado a objetos.
  • Controles de usuario y personalizados.
  • División entre la capa de aplicación o diseño y el código.
  • Facilita el mantenimiento de grandes aplicaciones.
  • Incremento de velocidad de respuesta del servidor.
  • Mayor velocidad.
  • Mayor seguridad.
Desventajas:

  • Mayor consumo de recursos.

Lenguaje JSP


Es un lenguaje para la creación de sitios web dinámicos, acrónimo de Java Server Pages. Está orientado a desarrollar páginas web en Java. JSP es un lenguaje multiplataforma. Creado para ejecutarse del lado del servidor.

JSP fue desarrollado por Sun Microsystems. Comparte ventajas similares a las de ASP.NET, desarrollado para la creación de aplicaciones web potentes. Posee un motor de páginas basado en los servlets de Java. Para su funcionamiento se necesita tener instalado un servidor Tomcat.

Sintaxis:

<%= new java.util.Date() %>

Características:

  • Código separado de la lógica del programa.
  • Las páginas son compiladas en la primera petición.
  • Permite separar la parte dinámica de la estática en las páginas web.
  • Los archivos se encuentran con la extensión (jsp).
  • El código JSP puede ser incrustado en código HTML.
Elementos de JSP

Los elementos que pueden ser insertados en las páginas JSP son los siguientes:

  • Código: se puede incrustar código “Java”.
  • Directivas: permite controlar parámetros del servlet.
  • Acciones: permite alterar el flujo normal de ejecución de una página.
Ventajas:
  • Ejecución rápida del servlets.
  • Crear páginas del lado del servidor.
  • Multiplataforma.
  • Código bien estructurado.
  • Integridad con los módulos de Java.
  • La parte dinámica está escrita en Java.
  • Permite la utilización se servlets.
Desventajas:
  • Complejidad de aprendizaje.

Lenguaje Python

Es un lenguaje de programación creado en el año 1990 por Guido van Rossum, es el sucesor del lenguaje de programación ABC. Python es comparado habitualmente con Perl. Los usuarios lo consideran como un lenguaje más limpio para programar. Permite la creación de todo tipo de programas incluyendo los sitios web.

Su código no necesita ser compilado, por lo que se llama que el código es interpretado. Es un lenguaje de programación multiparadigma, lo cual fuerza a que los programadores adopten por un estilo de programación particular:
  • Programación orientada a objetos.
  • Programación estructurada.
  • Programación funcional.
  • Programación orientada a aspectos.
Sintaxis:

Ejemplo de una clase en Phyton:

def dibujar_muneco(opcion):
if opcion == 1:
C.create_line(580, 150, 580, 320, width=4, fill="blue")
C.create_oval(510, 150, 560, 200, width=2, fill='PeachPuff')


Ventajas:

  • Libre y fuente abierta.
  • Lenguaje de propósito general.
  • Gran cantidad de funciones y librerías.
  • Sencillo y rápido de programar.
  • Multiplataforma.
  • Licencia de código abierto (Opensource).
  • Orientado a Objetos.
  • Portable.
Desventajas:

  • Lentitud por ser un lenguaje interpretado.

Lenguaje Ruby

Es un lenguaje interpretado de muy alto nivel y orientado a objetos. Desarrollado en el 1993 por el programador japonés Yukihiro “Matz” Matsumoto. Su sintaxis está inspirada en Phyton, Perl. Es distribuido bajo licencia de software libre (Opensource).

Ruby es un lenguaje dinámico para una programación orientada a objetos rápida y sencilla. Para los que deseen iniciarse en este lenguaje pueden encontrar un tutorial interactivo de ruby. Se encuentra también a disposición de estos usuarios un sitio con informaciones y cursos en español.

Sintaxis:


puts "hola"

Características:

  • Existe diferencia entre mayúsculas y minúsculas.
  • Múltiples expresiones por líneas, separadas por punto y coma “;”.
  • Dispone de manejo de excepciones.
  • Ruby puede cargar librerías de extensiones dinámicamente si el (Sistema Operativo) lo permite.
  • Portátil.
Ventajas:

  • Permite desarrollar soluciones a bajo Costo.
  • Software libre.
  • Multiplataforma.

Enlace: http://www.maestrosdelweb.com/principiantes/los-diferentes-lenguajes-de-programacion-para-la-web/

martes, 22 de noviembre de 2011

Instalación de Python

Para comenzar debemos seleccionar el paquete de instalación adecuado a nuestro sistema operativo desde la siguiente url: http://www.python.org/download/, esta disponible para linux, windows, mac, etc.

  • Descargamos el archivo python-2.7.2.msi, lo ejecutamos

  • seleccionamos la carpeta de instalación, en windows, por defecto c:\python27\


  • luego indicamos los componentes a instalar, en mi caso selecciono todos, ya que es pequeño y voy a estudiarlo a fondo, como ustedes, no ?


  • Y con eso finalizamos la instalación.



  • Listo !!.
Python es un lenguaje interpretado, no debemos compilar ni nada, por tanto será fácil probar si todo esta ok, vamos a iniciar la linea de comandos de Windows, con:
  • Inicio, Ejecutar, CMD, y aceptar
En la linea de comando, indicamos la ruta de instalación de python y lo ejecutamos, luego probamos imprimir lo siguiente:
  • print “La suma de 2 + 2 es: “, 2 + 2
  • Si todo esta ok, veremos el resultado, la próxima vemos algo mas profundo.

domingo, 20 de noviembre de 2011

Problema de Heroku de "Permission Denied(publickey)".

La primera vez que ejecute el "Heroku 'comando va a enviar su clave pública. Sin embargo, si usted tiene múltiples claves públicas y quieres cargar una clave pública determinada

heroku keys:add

Haciendo una creación de Heroku entonces debe subir la clave que ha especificado anteriormente. Sin embargo, incluso después de hacer esto, sigo teniendo un "permiso denegado (publickey) 'error. Después de un poco de búsqueda me encontré con este artículo que explica por qué

Al parecer, la configuración Heroku sólo da por supuesto que va a utilizar un defecto clave pública, por lo que su no predeterminado de clave pública tendrá que ser añadido a su configuración de ssh. Tuve la oportunidad de salir adelante con esto en mi config ssh

Host heroku.com
Hostname heroku.com
Port 22
IdentityFile ~/.ssh/heroku_personal

viernes, 18 de noviembre de 2011

Mostrar imagen de día, tarde o noche con PHP

<?php
 $date = date ("H"); echo "<html><body>"; if ($date < 12) echo "Buenos dias! "."<img src='http://jclurita@www.jrclurita.com/web_movil/img/dia.jpg' title='dia'/>"; else if ($date < 18) echo "Buenas tardes! "."<img src='http://jclurita@www.jrclurita.com/web_movil/img/tarde.jpg' title='tarde'/>"; else echo "Buenas noches! "."<img src='http://jclurita@www.jrclurita.com/web_movil/img/noche.jpg' title='noche'/>"; echo "</body></html>"; 
?>

(--> Si la variable $date es menor que 12hrs, entonces que imprima la imagen de dia)
El resto es similar, sólo que va a cambiar la imagen.
Las imágenes que cambian son:

dia.jpg
tarde.jpg
noche.jpg

Como sabemos, la hora de PHP se basa en la hora de nuestros hosting o servidor. A mí me marca la hora así:

a las 12pm --> imagen de dia(dia.jpg)
a las 6pm --> imagen de tarde(noche.jpg)
a las 12an --> imagen de mañana(mañan.jpg)

martes, 15 de noviembre de 2011

Los desarrolladores de Facebook ahora con un solo clic Heroku hosting


A partir de hoy, Facebook desarrolladores de aplicaciones tienen una nueva forma de alojar sus aplicaciones, gracias a la colaboración de la red social con Heroku , a la vanguardia en servicios de cloud hosting

Antes de , la conferencia de desarrolladores de Facebook, que tiene lugar la próxima semana, Heroku y Facebook han lanzado conjuntamente una plataforma basada en la nube para aplicaciones de Facebook.

La integración permite una sencilla, con un solo clic hosting y despliegue de aplicaciones de Facebook en la plataforma a través de la aplicación Heroku revelador de Facebook.

«Para mí, lo más interesante es que muestra una diferencia fundamental en el modelo de nube plataforma de aplicaciones», dijo el CTO Heroku Adán Wiggins en una entrevista con VentureBeat hoy. «No es sólo una manera más rápida de hacer algo viejo. Es una forma completamente nueva. «

aplicaciones personales, aplicaciones de caja de arena, experimentos o aplicaciones con un número pequeño de usuarios, Heroku alojamiento es gratuito. Como aplicaciones de escala con base de datos más caballos de fuerza y ??el tráfico, los precios seguirán el modelo estándar de Heroku.

Por supuesto, Facebook quiere que sea lo más fácil posible para los desarrolladores crear aplicaciones utilizando la plataforma Facebook. Y Heroku, que fue adquirida el año pasado por Salesforce para una $ 212 millones , siempre está buscando más formas de aumentar su base de usuarios. Para las dos empresas, la asociación es una solución perfecta.

Pero, ¿qué significa la integración para los desarrolladores?

«En general, hemos visto que el desarrollo se ha hecho de manera más ágil», dijo Wiggins. «Hace diez años, que le tomaría un año para escribir una aplicación de software. Ahora, se toma un mes, una semana, un día. Pero el despliegue no ha seguido el mismo ritmo. Es una piedra de tropiezo. Usted necesita comprar un servidor, se configura. Se requiere de capital por adelantado. «

Sin embargo, con los modelos basados ??en la nube para aplicaciones web construir y escalar, Wiggins dijo: «Usted puede tener su idea, sentarse y construir en una tarde, a continuación, haga clic en un botón para salir y correr de una manera que escalas. Es similar a los componentes de código abierto: No es necesario comprar una licencia y hacer un montón de trabajo para poner en marcha «

.Heroku

es el primero de varios proveedores que ofrecerán servicios en la nube para aplicaciones de Facebook de la aplicación revelador de Facebook. Con Heroku, los desarrolladores pueden empezar a construir una nueva aplicación de Facebook, con código de ejemplo en varios idiomas diferentes. Heroku ha publicado algunas aplicaciones de muestra o de la plantilla en Github PHP , Ruby , Node.js y Python .

Para una guía paso a paso sobre cómo empezar a utilizar su propia aplicación Heroku potencia Facebook, echa un vistazo a Facebooker Gato Lee las instrucciones en desarrollador blog .

Facebook y Heroku desde hacía algún tiempo había una asociación luz que Wiggins dijo que equivalía a «un paquete y alguna documentación, pero no había integración de software.»

Wiggins dijo que hace unos meses, cuando el equipo de desarrolladores de Facebook estaba trabajando en el bloque mencionado despliegue de tropiezo para los desarrolladores de terceros, Heroku inmediatamente vino a la mente, debido a que la asociación anterior.

«Facebook es el número uno mundial de la compañía de Internet», dijo Wiggins. Colaborar con ellos es una alegría lo que pase. «

lunes, 7 de noviembre de 2011

Guardar y Extraer imágenes en MySQL con PHP

En este artículo vamos a tratar lo que es el almacenar imágenes en una Base de Datos, para este artículo vamos a utilizar MySQL.
Introducción
Quien se podría imaginar el guardar imágenes en una Base de Datos?, al principio a mi ni me pasaba por la cabeza, hasta que ya vas conociedo las herramientas y con el tiempo surgen nuevas ideas y fum!! buala!! seurge la inquietud, so podrán guardar imágenes enuna Base de Datos?,la respuesta es si.
Requerimientos
  • PHP >= 3.0.16
  • MySQL
  • Habilitar la extension en PHP sobre GD
Crear Base de datos y Tabla
Vamos a comenzar creando una Base de Datos, en nuestro caso se llama bd_banners y dentro de esta creamos una tabla (en nuestro caso se llama tbl_Banner) con los campos;
  • Id_banner (Llave, autonumérico)
  • Nombre (Texto)
  • Descripcion (Texto)
  • Imagen (Blob)
Conectarnos a la BD
Ahora simplemente nos conectamos a MySQL y seleccioanmso nuestra Base de Datosbd_banners.

$link = mysql_connect('localhost', 'root', 'password');
if (!$link)
die('Error al conectarse con MySQL: ' . mysql_error().' <br>Número del error: '.mysql_errno());
if (! @mysql_select_db("db_AdMX",$link)){
echo "No se pudo conectar correctamente con la Base de datos";
exit();
}
Almacenar imágen en la BD
Antes de almacenar la imágen en la BD, debemos de procesarla para llegar a convertirla en datos binarios.


$image = imagecreatefromgif('imagen.gif');
ob_start();
imagegif($image);
$jpg = ob_get_contents();
ob_end_clean();

imagecreatefromgif: Crear una nueva imagen a partir de un archivo o URL.
ob_start: Inica el almacenamiento en el búfer de salida.
imagegif: Producir la salida de una imagen al navegador o a un archivo.
ob_get_contents: Devolver el contenido del búfer de salida.
ob_end_clean: Limpia el búfer de salida y termina el almacenamiento en el búfer de salida.


NOTA: En este ejemplo se guarda una imágen tipo GIF, por eso se utilizan las funciones; imagecreateformgifimagegif. Si se desea almacenar una imágen tipo JPEG, utilizar las funciones; imagecreatefromjpegimagejpeg. Asi solamente se cambia el tipo de imágen enlas funciones. Para ver los tipos de imágenes que soporta PHP+GD da click aquí.
Ahora si vamos a almacenarla, para esto convertimos la infromación de la imágen en sql-safe y simplemente hacemos un query para guardar.


$jpg = str_replace('##','##',mysql_escape_string($jpg));
$result = mysql_query("INSERT INTO tbl_Banner SET Imagen='$jpg'");

Extraer la imágen de la BD y mostrarla en el navegador
Ahora vamos a extraer la imágen mediante un simple SELECT y la vamos a mostrar en el navegador.

$result = mysql_query("SELECT Imagen FROM tbl_Banner WHERE Id_imagen=11");
$result_array = mysql_fetch_array($result);
header("Content-Type: image/gif");
echo $result_array[0];

Simplemente con esto guardamos la imágen en una variable y antes de mostrarla le decimos al navegador que el contenido a mostrar es de imágen/gif. Se se va a mostrar imágenes JPEG cambiar image/gif por image/jpeg y asi para los diferentes formatos.


EJEMPLO:


//Crear BD

CREATE TABLE upload (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    type VARCHAR(30) NOT NULL,
    size INT NOT NULL,
    content MEDIUMBLOB NOT NULL,
    PRIMARY KEY(id)
    );

//Creamos subir.php

<html>
<head>
<title>Upload File To MySQL Database</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.box {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    border: 1px solid #000000;
}
-->
</style>
</head>


<body>
<?
if(isset($_POST['upload']))
{
        $fileName = $_FILES['userfile']['name'];
        $tmpName  = $_FILES['userfile']['tmp_name'];
        $fileSize = $_FILES['userfile']['size'];
        $fileType = $_FILES['userfile']['type'];
        $fp = fopen($tmpName, 'r');
        $content = fread($fp, $fileSize);
        $content = addslashes($content);
        fclose($fp);
        if(!get_magic_quotes_gpc())
        {
            $fileName = addslashes($fileName);
        }
        include 'config.php';   $connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");        
        $query = "INSERT INTO upload (name, size, type, content ) ".
                 "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
        mysql_query($query) or die('Error, query failed');                 
                
       echo "<br>File $fileName uploaded<br>";
}        
?>
<form action="" method="post" enctype="multipart/form-data" name="uploadform">
  <table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
    <tr> 
      <td width="246"><input type="hidden"
name="MAX_FILE_SIZE" value="2000000"><input name="userfile"
type="file" class="box" id="userfile">
         </td>
      <td width="80"><input name="upload" type="submit" class="box" id="upload" value="  Upload  "></td>
    </tr>
  </table>
</form>
</body>
</html>

//Creamos bajar.php

<?
if(isset($_GET['id']))
{
    include 'config.php';
    $connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");


    $id      = $_GET['id'];
    $query   = "SELECT name, type, size, content FROM upload WHERE id = '$id'";
    $result  = mysql_query($query) or die('Error, query failed');
    list($name, $type, $size, $content) = mysql_fetch_array($result);


    header("Content-Disposition: attachment; filename=$name");
    header("Content-length: $size");
    header("Content-type: $type");
    echo $content;


    exit;
}


?>
<html>
<head>
<title>Download File From MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>


<body>
<?
include 'config.php';
$connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");
$query  = "SELECT id, name FROM upload";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
    echo "Database is empty <br>";

else
{
    while(list($id, $name) = mysql_fetch_array($result))
    {
?>
    <a href="download.php?id=<?=$id;?>"><?=$name;?></a> <br>
<?        
    }
}
?>
</body>
</html>

//download.php

<?
if(isset($_GET['id']))
{
    include 'config.php';
$connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");
    $id      = $_GET['id'];
    $query   = "SELECT name, type, size, content FROM upload WHERE id = '$id'";
    $result  = mysql_query($query) or die('Error, query failed');
    list($name, $type, $size, $content) = mysql_fetch_array($result);
    header("Content-Disposition: attachment; filename=$name");
    header("Content-length: $size");
    header("Content-type: $type");
    echo $content;
    exit;
}


?>
<html>
<head>
<title>Download File From MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>


<body>
<?
include 'config.php';
$connection=mysql_connect("$bdservidor","$bdunombre","$bdpass")
or die("Error conectando a la base de datos");
$db=mysql_select_db("$bdnombre",$connection)
or die ("Error seleccionando la base de datos");
$query  = "SELECT id, name FROM upload";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
    echo "Database is empty <br>";

else
{
    while(list($id, $name) = mysql_fetch_array($result))
    {
?>
    <a href="download.php?id=<?=$id;?>"><?=$name;?></a> <br>
<?        
    }
}
?>
</body>
</html>

//config.php

<?php
$bdservidor = "localhost";
$bdunombre = "root";
$bdpass = "0336";
$bdnombre = "test";
?>




Habilitar GD en Xampp

Para habilitar GD en Xampp (GD es la librería de tratamiento de imágenes en PHP), lo que tenemos que hacer es modificar el archivo php.ini y localizar la línea que habilita la carga de la librería dll.

Usualmente la encontramos en /xampp/apache/bin/php.ini pero podría estar utilizando otro archivo php.ini de acuerdo a tu instalación.
Para habilitar la librería GD, asegurate que la siguiente línea esté descomentada:

extension=php_gd2.dll


Luego, fíjate en el phpinfo() y busca el bloque de información GD, que desplegará una salida como la siguiente:


Crear archivo html de un archivo php

fopen() asocia un recurso nominado, especificado por filename, a un flujo.

------------------------>01

//crea
$control = fopen("$titulo".".html","w+");
if($control == false){
  die("No se ha podido crear el archivo.");
}

----------------------->02


<?php
$fichero_salida="out.html";
$tabla="<table width=200 border=1>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>";
$fp=fopen($fichero_salida,"w+");
fwrite($fp,$tabla);
fclose($fp);
if(!file_exists($fichero_salida)) die("Error en la Generacion del Archivo");
else echo "Archivo " . $fichero_salida . "Generado. <a href=" . $fichero_salida . ">Bajar Click Derecho y Guardar Destino Como...</a>";

domingo, 6 de noviembre de 2011

Tipos de datos en mysql

Al diseñar nuestras tablas tenemos que especificar el tipo de datos y tamaño que podrá almacenar cada campo. Una correcta elección debe procurar que la tabla no se quede corta en su capacidad, que destine un tamaño apropiado a la longitud de los datos, y la máxima velocidad de ejecución
Básicamente mysql admite dos tipos de datos: números y cadenas de carácteres. Junto a estos dos grandes grupos, se admiten otros tipos de datos especiales: formatos de fecha, etc.


Datos numéricos
En este tipo de campos solo pueden almacenarse números, positivos o negativos, enteros o decimales, en notación hexadecimal, cientifica o decimal.
Los tipos numéricos tipo integer admiten los atributos SIGNED y UNSIGNED indicando en el primer caso que pueden tener valor negativo, y solo positivo en el segundo.

Los tipos numéricos pueden además usar el atributo ZEROFILL en cuyo caso los números se completaran hasta la máxima anchura disponible con ceros (column age INT(5) zerofill => valor 23 se almacenará como 00023)

BIT o BOOL

para un número entero que puede ser 0 ó 1

TINYINT 

es un número entero con rango de valores válidos desde -128 a 127. Si se configura como unsigned (sin signo), el rango de valores es de 0 a 255

SMALLINT

para números enteros, con rango desde -32768 a 32767. Si se configura como unsigned, 0 a 65535.

MEDIUMINT para números enteros; el rango de valores va desde -8.388608 a 8388607. Si se configura como unsigned, 0 a 16777215

INT 

para almacenar números enteros, en un rango de -2147463846 a 2147483647. Si configuramos este dato como unsigned, el rango es 0 a 4294967295

BIGINT 

número entero con rango de valores desde -9223372036854775808 a 9223372036854775807. Unsigned, desde 0 a 18446744073709551615.

FLOAT (m,d) 

representa números decimales. Podemos especificar cuantos dígitos (m) pueden utilizarse (término también conocido como ancho de pantalla), y cuantos en la parte decimal (d). Mysql redondeará el decimal para ajustarse a la capacidad.

DOUBLE 

Número de coma flotante de precisión doble. Es un tipo de datos igual al anterior cuya única diferencia es el rango numérico que abarca

DECIMAL 

almacena los números como cadenas.
Caracteres o cadenas

CHAR 

Este tipo se utiliza para almacenar cadenas de longitud fija. Su longitud abarca desde 1 a 255 caracteres.

VARCHAR 

Al igual que el anterior se utiliza para almacenar cadenas, en el mismo rango de 1-255 caracteres, pero en este caso, de longitud variable. Un campo CHAR ocupará siempre el máximo de longitud que le hallamos asignado, aunque el tamaño del dato sea menor (añadiendo espacios adicionales que sean precisos). Mientras que VARCHAR solo almacena la longitud del dato, permitiendo que el tamaño de la base de datos sea menor. Eso si, el acceso a los datos CHAR es mas rápido que VARCHAR.
No pueden alternarse columnas CHAR y VARCHAR en la misma tabla. Mysql cambiará las columnas CHAR a VARCHAR. Tambien cambia automaticamente a CHAR si usamos VARCHAR con valor de 4 o menos.

TINYTEXT, TINYBLOB 

para un máximo de 255 caracteres. La diferencia entre la familia de datatypes text y blob es que la primera es para cadenas de texto plano (sin formato) y case-insensitive (sin distinguir mayusculas o minusculas) mientras que blob se usa para objetos binarios: cualquier tipo de datos o información, desde un archivo de texto con todo su formato (se diferencia en esto de el tipo Text) hasta imágenes, archivos de sonido o video

TEXT y BLOB 

se usa para cadenas con un rango de 255 - 65535 caracteres. La diferencia entre ambos es que TEXT permite comparar dentro de su contenido sin distinguir mayusculas y minusculas, y BLOB si distingue.

MEDIUMTEXT, MEDIUMBLOB 

textos de hasta 16777215 caracteres.

LONGTEXT, LONGBLOB

hasta máximo de 4.294.967.295 caracteres
Varios

DATE 

para almacenar fechas. El formato por defecto es YYYY MM DD desde 0000 00 00 a 9999 12 31.

DATETIME 

Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos

TIMESTAMP 

Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo

TIME 

almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS'

YEAR 

almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.

SET 

un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores.

ENUM 

es igual que SET, pero solo se puede almacenar uno de los valores de la lista

La función fopen (crear archivos)

PHP dispone de una función del sistema llamada fopen para crear archivos.
A esta función se le pueden pasar dos parámetros: el nombre del archivo y el modo de apertura (abrir un archivo existente o crear uno nuevo).


fopen($nombrearchivo,$modo);
$nombrearchivo - es la variable que contiene el nombre del archivo. También se puede pasar la ruta donde está guardado (ya sea en local o en remoto). Por ejemplo: /htdocs/miweb/archivo.txt
$modo - se utiliza para especificar cómo se quiere crear el archivo (Lectura, escritura, etc). En el manual de php hay una tabla completa con todos los tipos de modo que hay.


Crear un archivo
A continuación se muestra un código para crear un archivo nuevo en modo lectura y escritura (w+), lo que significa que crea un archivo y pone el puntero al principio del mismo, de modo que si ya existía lo sobreescribe y sino, intenta crearlo.

$control = fopen("miarchivo.txt","w+");
if($control == false){
die("No se ha podido crear el archivo.");
}

viernes, 4 de noviembre de 2011

Conectar PHP con MySQL

Obtener registros de una base de datos MySQL utilizando PHP es una de las tareas mas comunes que se le presenta a todo desarrollador web, por ello les presentamos un pequeña guía para consultar registros utilizando PHP.

Creando la Base de datos
Obviamente para este ejemplo necesitamos una base de datos que la llamaremos demo, dentro crearemos un tabla llamada empresa la cual tendrá los siguientes campos: idemp, nombre, direccion,telefono, imagen. Para los menos experimentados les dejo el script SQL para crear esta tabla.




Conectando PHP y MySQL
Para obtener los datos desde MySQL necesitamos una conexión (una forma de enlazar o comunicarse), la cual nos permitirá extraer datos de la misma. Para ello PHP tiene una serie de funciones exclusivamente para interactuar con mysql. Entonces para la conexión utilizaremos la funciónmysql_connect y luego mysql_select_db el cual nos permite definir a que base de datos del servidor deseamos conectarnos.

  1. $conexion = mysql_connect("localhost""usuario""clave");
  2. mysql_select_db("demo"$conexion);

Obteniendo registros de la Base de Datos
Una vez que tenemos una conexión lo siguiente es extraer los datos, esto lo hacemos enviando consultas SQL mediante la función mysql_query. También obtenemos el numero total de registros devueltos por nuestra consulta.

  1. $queEmp = "SELECT * FROM empresa ORDER BY nombre ASC";
  2. $resEmp = mysql_query($queEmp$conexion) or die(mysql_error());
  3. $totEmp = mysql_num_rows($resEmp);
Mostrando los resultados.
Finalmente mostramos los resultados obtenidos de nuestra consulta, para ello extraemos cada resultado utilizando la función mysql_fetch_assoc la cual devuelve una matriz asociativa utilizando los nombres de los campos de la tabla.

  1. if ($totEmp0) {
  2.    while ($rowEmp = mysql_fetch_assoc($resEmp)) {
  3.       echo "<strong>".$rowEmp['nombre']."</strong><br>";
  4.       echo "Direccion: ".$rowEmp['direccion']."<br>";
  5.       echo "Telefono: ".$rowEmp['telefono']."<br><br>";
  6.    }
  7. }
Notese que primero hemos verificado si existen resultados y luego verificamos en cada pasada de la sentencia While si existe el siguiente resultado para luego mostrarlo. Asi como hemos consultado registros, podemos insertar, editar y eliminar registros enviando sentencias SQL a la base de datos. Para finalizar les dejo el ejemplo funcionando y también los archivos para descargar.