Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/01/2004, 08:29
sebtev
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 20 años, 10 meses
Puntos: 2
RE: Almacenar imágenes en MYSQL

Para subir una imágen y almacenarla en MYSQL, lo mejor que puedes hacer es un formulario:

<form enctype="multipart/form-data" action="guardar.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
TITULO: <input type="text" name="nov_titulo">
CONTENIDO: <input type="text" name="nov_texto">
SUBIR ESTA IMAGEN: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>

Presta atención a "enctype=...", esto te permite enviar archivos mediante el method, en este caso POST, el action es guardar.php, en este script pondremos lo sig:

<?
require "config-inc.php";
//nombre de usuario de la base de datos, password, etc.
?>
<?php
$dbconexion = mysql_connect($dbconfig["localhost"],$dbconfig["user"],$dbconfig["password"]) or die("no se puede establecer una conexión con la Base de Datos, por favor vuelva a intentarlo dentro de algunos minutos. <a href=\"JavaScript:history.go(-1);\" class=\"navegador\">volver</a>") or die(mysql_error());
mysql_select_db($dbconfig[db]) or die(mysql_error());
?>
//conexión con la BD (Base de Datos) y selección de la misma (mysql_select_db)
<?
if (isset($_POST['nov_titulo'])){$nov_titulo = $_POST['nov_titulo'];}
if (isset($_POST['nov_texto'])){$nov_texto = $_POST['nov_texto'];}
?>
//chequeo del POST (formulario)
<?php
$unique = time();
$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/patch/carpeta/uploads/'.$unique;
$uploadfile = $uploaddir . $_FILES['userfile']['name'];
$uploadcheck = $uploadfile;

//la variable unique es la hora actual en formato unix, esto solamente lo uso para evitar que dos imágenes tengan el mismo nombre, uploadfile toma en SERVER[DOCUMENT_ROOT] el patch del servidor (en windows por ej. c:\apache\www), con el punto (.) la agregamos el patch donde queremos que nos guarde las imágenes y le agregamos la fecha. En uploadfile le agregamos el nombre de la imágen. Uploadcheck es para chequear lo siguiente:

if(empty($_FILES['userfile']['name'])){
$uploadfile = "";}

//con esto evitamos que en la base de datos nos guarde, en caso de que no se halla subido una imagen en el formulario, el patch solo, por ej. (c:\apache\www\patch\carpeta\uploads\$unique).

$update = mysql_db_query("$dbconfig[db]","INSERT INTO $dbtable[novedades] (nov_img, nov_titulo, nov_texto, nov_fecha) VALUES ('$uploadfile', '$nov_titulo', '$nov_texto', CURRENT_DATE)") or die(mysql_error());

//aquí insertamos en la DB los datos, nada raro, solo el CURRENT_DATE que utilizamos para ingresar la fecha actual en el campo nov_fecha de la DB, no tiene nada que ver con tu pregunta, pero ya que yo la utilizo, la deje por si alguna vez te sirve.

$borrarID = mysql_db_query("$dbconfig[db]","ALTER TABLE $dbtable[novedades] DROP id") or die(mysql_error());
$alterar= mysql_db_query("$dbconfig[db]","ALTER TABLE $dbtable[novedades] ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (id)") or die(mysql_error());

print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
print "El archivo fue subido con éxito";
print "Información del archivo:";
print_r($_FILES);
} else {
print "El archivo no se pudo subir, información:\n";
print_r($_FILES);
}
print "</pre>";
?>
__________________
Dios dira que esto no es justo, pero lo sera...