Hola,
Yo (con ayuda de cluster) he creado un sistema que sube fotos y guarda datos en mysql, lo que guarda no es la ruta de la foto, sino el nombre compelto (foto.jpg) y luego llamas a esa foto con el valo que guarda el nombre
ruta/a/foto/$nombre
bueno el script es este:
Código PHP:
<?php
// $userfile is where file went on webserver
$userfile=$_FILES['userfile']['tmp_name'];
// $userfile_name Es el nombre original del archivo
$userfile_name=$_FILES['userfile']['name'];
// $userfile_size Tamaño de en bytes
$userfile_size=$_FILES['userfile']['size'];
// $userfile_type controla el tipo mime ej: image/gif
$userfile_type=$_FILES['userfile']['type'];
// $userfile_error is any error encountered
$userfile_error=$_FILES['userfile']['error'];
// datos correspondientes a datos de texto para almacenar en mysql
$fotonombre=$_POST['fotonombre'];
$comentarios=$_POST['comentarios'];
$otrodato=$_POST['otrodato'];
if (!$fotonombre || !$comentarios || !$otrodato)
{
echo 'No has introducido todos los datos requeridos.<br />'
.'Por favor vuelve atras y rellena todas las casillas.';
exit;
}
if ($userfile_error > 0)
{
echo 'Problema: ';
switch ($userfile_error)
{
case 1: echo 'El archivo excede el: upload_max_filesize'; break;
case 2: echo 'El archivo excede el: max_file_size'; break;
case 3: echo 'El arcivo no se ha subido al completo'; break;
case 4: echo 'No file uploaded'; break;
}
exit;
}
// otro checkeo más: tiene el archivo el tipo MIME correcto?
$userfile_type_aceptados=array('image/jpeg','image/jpg','image/gif','image/png');
if (!in_array($userfile_type,$userfile_type_aceptados))
{
echo 'Problema: El archivo no tiene el formato adecuado (jpeg, jpg, gif o png)';
exit;
}
// pon el archivo donde quieras
$upfile = '/ruta/a/path/absoluto/fotos/'.$userfile_name;
// is_uploaded_file y move_uploaded_file añadido para la version 4.0.3 de php
if (is_uploaded_file($userfile))
{
if (!move_uploaded_file($userfile, $upfile))
{
echo 'Problema: No se ha podido mover el archivo a el directorio de destino';
exit;
}
}
else
{
echo 'Problema: Posible ataque en el upload. Archivo: '.$userfile_name;
exit;
}
$fotonombre = mysql_real_escape_string($fotonombre);
$comentarios = mysql_real_escape_string($comentarios);
$otrodato = mysql_real_escape_string($otrodato);
$userfile_name = mysql_real_escape_string($userfile_name);
//conectamos a la base de datos
@ $db = mysql_connect("localhost","base_de_datos","contraseña");
//comprobamos conexion a la base de datos.
if (!$db)
{
unlink($upfile);
echo 'Error: No se pudo conectar con la base de datos. Por favor intentelo mas tarde.';
exit;
}
if (!@mysql_select_db('base_de_datos'))
{
unlink($upfile);
echo 'Error: No se pudo seleccionar la base de datos. Por favor intentelo mas tarde.';
exit;
}
//Comprobamos si los datos ya existen.
$sql="SELECT COUNT(*) FROM tabla WHERE artnombre='".$_POST['artnombre']."'";
$resultado=mysql_query($sql) or die (mysql_error());
$total=mysql_result($resultado,0);
if ($total > 0)
{
unlink($upfile);
die ("Ese artista ya existe, no se permite duplicar datos!!");
}
$query = "insert into tabla values
('', '".$fotonombre."', '".$comentarios."', '".$userfile_name."', NOW(),'".$otrodato."')";
$result = mysql_query($query);
if (!$result)
{
unlink($upfile);
echo 'Error: El query ha fallado. Por favor intentelo mas tarde.';
exit;
}
echo mysql_affected_rows().' Datos subidos con exito a la base de datos.';
?>
La he intentado amoldar a tu gusto... quedaran cosaas por retocar.
mmmm la tabla seria asi:
id
nombre
comentarios
$userfile_name (el nombre del archivo foto.jpg)
fecha
otrodato
Saludos