Este Howto es acerca de como subir archivos atravez de PHP y guardarlos en MySQL asi como la extracción del archivo de MySQL atravez de PHP.
Requisitos:
Muchas veces necesitamos darle a los usuarios la facilidad de poder “subir” o guardar archivos en una base de datos y n es tan dificil como aparenta asi que comenzemos….
Primeramente necesitamos el diseño de la tabla
y el script para crear la tabla es:
CREATE TABLE tbl_documentos ( id_documento INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, titulo VARCHAR(150) NULL, descripcion MEDIUMTEXT NULL, contenido LONGBLOB NULL, tamanio INTEGER UNSIGNED NULL, tipo VARCHAR(150) NULL, nombre_archivo VARCHAR(255) NULL, tamanio_unidad VARCHAR(150) NULL, PRIMARY KEY(id_documento) );
Explico un poco cada campo para darnos una mayor idea:
Ahora necesitamos un formulario
Aqui esta el codigo del archivo form.html:
<form id="test_upload" name="test_upload" action="upload.php" enctype="multipart/form-data" method="post"> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> Titulo </td> <td> <input type="text" id="titulo" name="titulo"/> </td> </tr> <tr> <td colspan="2"> Descripcion </td> </tr> <tr> <td colspan="2"> <textarea id="descripcion" name="descripcion" cols="50" rows="5"></textarea> </td> </tr> <tr> <td colspan="2"> Archivo <input type="file" id="archivo" name="archivo"/> </td> </tr> <tr> <td colspan="2"> <input type="submit" value="Registrar Documento"/> </td> </tr> </table> </form>
Al formulario debemos como todos debe tener sus atributos
action que indica el archivo que sse encargara de procesar la información que le enviemos
y method que indica si los datos seran enviados por POST o GET para envio de archivos es obligatorio marcarlo como POST
adicinal a estos atributos debemos especificar enctype con el valor multipart/form-data para que se pueda realizar el envio.
Y aqui esta el codigo del archivo upload.php
< ?php
//ESTA FUNCION LA USAREMOS PARA OBTENER EL TAMAÑO DE NUESTRO ARCHIVO
function filesize_format($bytes, $format = '', $force = ''){
$bytes=(float)$bytes;
if ($bytes< 1024){
$numero=number_format($bytes, 0, '.', ',');
return array($numero,"B");
}
if ($bytes< 1048576){
$numero=number_format($bytes/1024, 2, '.', ',');
return array($numero,"KBs");
}
if ($bytes>= 1048576){
$numero=number_format($bytes/1048576, 2, '.', ',');
return array($numero,"MB");
}
}
//VERIFICAMOS QUE SE SELECCIONO ALGUN ARCHIVO
if(sizeof($_FILES)==0){
echo "No se puede subir el archivo";
exit();
}
// EN ESTA VARIABLE ALMACENAMOS EL NOMBRE TEMPORAL QU SE LE ASIGNO ESTE NOMBRE ES GENERADO POR EL SERVIDOR
// ASI QUE SI NUESTRO ARCHIVO SE LLAMA foto.jpg el tmp_name no sera foto.jpg sino un nombre como SI12349712983.tmp por decir un ejemplo
$archivo = $_FILES["archivo"]["tmp_name"];
//Definimos un array para almacenar el tamaño del archivo
$tamanio=array();
//OBTENEMOS EL TAMAÑO DEL ARCHIVO
$tamanio = $_FILES["archivo"]["size"];
//OBTENEMOS EL TIPO MIME DEL ARCHIVO
$tipo = $_FILES["archivo"]["type"];
//OBTENEMOS EL NOMBRE REAL DEL ARCHIVO AQUI SI SERIA foto.jpg
$nombre_archivo = $_FILES["archivo"]["name"];
//PARA HACERNOS LA VIDA MAS FACIL EXTRAEMOS LOS DATOS DEL REQUEST
extract($_REQUEST);
//VERIFICAMOS DE NUEVO QUE SE SELECCIONO ALGUN ARCHIVO
if ( $archivo != "none" ){
//ABRIMOS EL ARCHIVO EN MODO SOLO LECTURA
// VERIFICAMOS EL TAÑANO DEL ARCHIVO
$fp = fopen($archivo, "rb");
//LEEMOS EL CONTENIDO DEL ARCHIVO
$contenido = fread($fp, $tamanio);
//CON LA FUNCION addslashes AGREGAMOS UN \ A CADA COMILLA SIMPLE ' PORQUE DE OTRA MANERA
//NOS MARCARIA ERROR A LA HORA DE REALIZAR EL INSERT EN NUESTRA TABLA
$contenido = addslashes($contenido);
//CERRAMOS EL ARCHIVO
fclose($fp);
// VERIFICAMOS EL TAÑANO DEL ARCHIVO
if ($tamanio <1048576){
//HACEMOS LA CONVERSION PARA PODER GUARDAR SI EL TAMAÑO ESTA EN b ó MB
$tamanio=filesize_format($tamanio);
}
//CREAMOS NUESTRO INSERT
$qry = "INSERT INTO tbl_documentos ( titulo,nombre_archivo, descripcion, contenido, tamanio,tamanio_unidad, tipo ) VALUES
('$titulo','$nombre_archivo', '$descripcion','$contenido','{$tamanio[0]}','{$tamanio[1]}', '$tipo')";
//NOS CONECAMOS A LA BASE DE DATOS
//REMPLAZEN SUS VALOS POR LOS MIOS
mysql_connect("localhost","root","12345") or die("No se pudo conectar a la base de datos");
//SELECCIONAMOS LA BASE DE DATOS CON LA CUAL VAMOS A TRABAJAR CAMBIEN EL VALOR POR LA SUYA
mysql_select_db("test");
//EJECUTAMOS LA CONSULTA
mysql_query($qry) or die("Query: $qry <br />Error: ".mysql_error());
//CERRAMOS LA CONEXION
mysql_close();
//NOTIFICAMOS AL USUARIO QUE EL ARCHVO SE HA ENVIADO O REDIRIGIMOS A OTRO LADO ETC.
echo "Archivo Agregado Correctamente<br />";
echo '<a href="form.html">Subir Otro Archivo</a><br /> ';
}else{
echo "No fue posible subir el archivo";
echo '<a href="form.html">Subir Otro Archivo</a><br /> ';
}
?>
Ahora que ya tenemos nuestro script funcionando y podemos hacer los uploads que queramos vamos
hacer que se puedan explorar y descargar o mostrar en caso de que sea una imagen.
Primero creamos un archivo que nos imprima el contenido del documento y el tipo del mismo para poder renderizarlo
con este archivo que llamaremos getfile.php
< ?php
//NOS CONECAMOS A LA BASE DE DATOS
//REMPLAZEN SUS VALOS POR LOS MIOS
mysql_connect("localhost","root","12345") or die("No se pudo conectar a la base de datos");
//SELECCIONAMOS LA BASE DE DATOS CON LA CUAL VAMOS A TRABAJAR CAMBIEN EL VALOR POR LA SUYA
mysql_select_db("test");
//CONSTRUIMOS LA CONSULTA PARA OBTENER EL DOCUMENTO
$qry="Select * from tbl_documentos where id_documento={$_REQUEST['id_documento']}";
$res=mysql_query($qry) or die(mysql_error()." qry::$qry");
$obj=mysql_fetch_object($res);
//OBTENEMOS EL TIPO MIME DEL ARCHIVO ASI EL NAVEGADOR SABRA DE QUE SE TRATA
header("Content-type: {$obj->tipo}");
//OBTENEMOS EL NOMBRE DEL ARCHIVO POR SI LO QUE SE REQUIERE ES DESCARGARLO
header('Content-Disposition: attachment; filename="'.$obj->nombre_archivo.'"');
//Y PO ULTIMO SIMPLEMENTE IMPRIMIMOS EL CONTENIDO DEL ARCHIVO
print $obj->contenido;
//CERRAMOS LA CONEXION
mysql_close();
?>
Posteriormente crearemos un archivo para que nos liste los documentos registrados y
detecte si es una imagen en este caso imprimiremos un tag img y su src sera nuestro archivo getfile.php
cuando incluimos un archivo con php podemos pasarle parametros cono si se tratara de un query string del browser asi que le pasaremos el id_documento
para que nos muestre el archivo solicitado.
Este es e código de nuestro archivo list.php
< ?php
//NOS CONECAMOS A LA BASE DE DATOS
//REMPLAZEN SUS VALOS POR LOS MIOS
mysql_connect("localhost","root","12345") or die("No se pudo conectar a la base de datos");
//SELECCIONAMOS LA BASE DE DATOS CON LA CUAL VAMOS A TRABAJAR CAMBIEN EL VALOR POR LA SUYA
mysql_select_db("test");
//CONSTRUIMOS EL QUERY PARA OBTENER LOS ARCHIVOS
$qry="select
docs.*,
CASE docs.tipo
WHEN 'image/png' then
'image'
WHEN 'image/jpg' then
'image'
WHEN 'image/gif' then
'image'
WHEN 'image/jpeg' then
'image'
ELSE
'file'
END as display
from tbl_documentos AS docs";
//EJECUTAMOS LA CONSULTA
$res=mysql_query($qry) or die("Query: $qry ".mysql_error());
//RECORREMOS LA CONSULTA
//*********NOTA DONDE DICE alt='$obj-/>titulo' QUITA LA BARRA PARA QUE QUEDE ASI:
// alt='$obj->titulo'
// EL WORDPRESS ME ESTA REMPLAZANDO EL CODIGO
while ($obj=mysql_fetch_object($res)) {
//SI EL TIPO DE DOCUMENTO ES UMAGEN LA MOSTRAMOS SI NO SOLO HACEMOS EL LINK
switch ($obj->display){
case "image":
echo "<div>
<a href='getfile.php?id_documento={$obj->id_documento}'>
<img alt='$obj-/>titulo' src='getfile.php?id_documento={$obj->id_documento}'/>
</a>
</div><hr />";
break;
case "file":
echo "<div>
<a href='getfile.php?id_documento={$obj->id_documento}'>$obj->titulo</a>
</div><hr />";
break;
}
}
//CERRAMOS LA CONEXION
mysql_close();
?>
Ahora solo abrimos nuestro explorador con loas sigueintes direcciones:
Descargar los archivos del howto de este
Y con esto terminamos este pequeño howto de como manejar archivos con php y MySQL
espero les sirva y cualquier comentario queja o sugerencia porfavor haganla saber asi como alguna duda que tengan y se pueda convertir en un howto
sera tomada en cuenta.
Cudense …
Hola.
Seguimos con los howtos este how to tambien es corto simplemente hace lo que se necesita
ENVIAR CORREOS CON PHP
Requerimientos:
Primero que nada necesitamos un formulario con digamos 2 campos que son:
Aqui esta el codigo para el archivo form_mail.html
[code language=’html’]
Envio de correos
…
Bueno creo que ya estubo bien de tantos articulos sobre psp y otras cosas y es tiempo de volver a lo mio, los tutoriales con mas codigo que palabras, aunque de repente pondre uno que ptro post de posicionamiento :P,
Requisitos:
1.- Analicemos el problema tomando como base el articulo Manejo de archivos con PHP y MySQL en el cual explico como guardar archivos en MySQL, asi que tomaremos la tabla de ese ejemplo.
Bueno ya fue mucha platica mejor vemos el codigo por partes, al final lo pondre todo junto:
$id_doc=$_REQUEST['id']; $qry="Select * from tbl_documentos where id_documento=$id "; $res=mysql_query($qry) or die(mysql_error()." qry::$qry");
Este Howto es acerca de como subir archivos atravez de PHP y guardarlos en MySQL asi como la extracción del archivo de MySQL atravez de PHP.
Requisitos:
Muchas veces necesitamos darle a los usuarios la facilidad de poder “subir” o guardar archivos en una base de datos y n es tan dificil como aparenta asi que comenzemos….
Primeramente necesitamos el diseño de la tabla
y el script para crear la tabla es:
[code language=’sql’]
CREATE TABLE tbl_documentos (
id_documento INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
titulo VARCHAR(150) NULL,
descripcion MEDIUMTEXT …

Este es un breve howto de como instalar ndiswrapper en Fedora 9
Requerimientos:
1.-Abrir una consola y logearse como root
su - "telclear el password"
2.- Tecleear lo siguiente para que se instale el repositorio de livna
rpm -ivh http://rpm.livna.org/livna-release-9.rpm
3.- Tecleear lo siguiente para instalar ndiswrapper y su modulo correspondiente
yum install ndiswrapper kernel-module-ndiswrapper-$(uname -r)
4.- Tecleear lo siguiente remplazando lo que se encuentra entre comillas para instalar el driver
ndiswrapper -i "ruta_al_archivo_inf_del_driver".inf
5.- Verificamos que se instalo correctamente conel siguiente comando:
ndiswrapper -l deberiamos obtener algo similar a esto: Installed ndis drivers: bcmwl5 driver present, hardware present
6. Agregar a …
Bueno primero vamos a definir CTR:
Click Through Rate (CTR) – Tasa de clicks: corresponde al número de veces que un enlace es seguido por los navegantes, dividido por el número de veces que dicho enlace es mostrado (llamado a su vez impresión).
Ejemplo:
Si un anuncio se muestra 10 veces y es visitado 6 veces: 6 / 10= 0.6%.
Segun tengo entendido entre mas alto sea el CTR masvalor tendra el vinculo mostrado.
Yo he implementado un pequeño pero util procedimiento en mi Template de Wordpress el cual consiste en mostrar anuncion en random, lo cual tambien me permite mostrar anuncios de diferentes proveedores.El proceso es el siguiente:
REQUISITOS:
I.- Comencemos registrado los anuncios en el Adsense-Deluxe
El término CDATA se usa con texto que no debe ser parseado por el XML parser.
Debido a que los caracteres como “<” y “&” son caracteres illegales en elementos XML.
En ocaciones, tendremos texto, ya sea que contenga HTML o JavaScript, el cual puede contener varios caracteres “<” o “&” lo cual nos generaria alguno de los errores que menciono. Para evitar que esto suceda el texto debe ir dentro de una seccion CDATA.
Todo el texto que se encuentre dentro de esta sección es ignorada por el parser …
Hoy me tope con un pequeño problemita, buen la cosa esta asi:
Tengo un autocomplete que obtiene los datos de una consulta via ASP, porfavor no pregunten porque con asp, este ASP me GENERA un Archivo XML haciendo una consulta a la Base de Datos, pero a la hora de imprimir los datos algunos traen caracteres especiales tales como el ampersand,ñ, etc. y me generaba el error XML Parsing Error: not well-formed debido a estos caracteres.
Ahora para solucionarlo hay de 2 sopas
Sopa #1.- Escribir un complejo replace para cambiar estos caracteres.
Sopa #2.-Dependiendo del Lenguaje utilizamos alguna de las Funciones Encode de las que dispongamos en este caso con ASP es: Server.HTMLEncode(), para solucionar el problema.
Aqui dejo el codigo ya …
En uno de mis recientes desarrollos http://www.youthcalabaza.com (Pagina de tatuajes en Monterrey) incorpore un blog y me tope cn un pequeño detallito al momento de guardar la fecha y hora toma como fecha y hora la qu tenga el servidor configurado :P asi que googleando un rato encontre la solución.
El codigo es el siguiente espero a alguien mas le sirva:
//Mi zona horaria el GMT -6
$clientGMT=intval( -6 );
$serverGMT=intval( date('Z') );
$fecha_gmt=date('Y-m-d H:i:s',time()+$clientGMT-$serverGMT);
Ultimos comentarios