Foros del Web » Programando para Internet » PHP »

Como subir una imagen al servidor y recoger la ruta en la base de datos

Estas en el tema de Como subir una imagen al servidor y recoger la ruta en la base de datos en el foro de PHP en Foros del Web. Hola, hace poquito tiempo que estoy programando en php y me he quedado encallado con el siguiente problema. El tema es que estoy practicando con ...
  #1 (permalink)  
Antiguo 07/09/2006, 08:51
 
Fecha de Ingreso: junio-2005
Mensajes: 12
Antigüedad: 18 años, 10 meses
Puntos: 0
Como subir una imagen al servidor y recoger la ruta en la base de datos

Hola, hace poquito tiempo que estoy programando en php y me he quedado encallado con el siguiente problema. El tema es que estoy practicando con una base de datos de noticias. He creado un formulario desde el cual insertar las noticias facilmente. Cada noticia tiene su id, fecha, titulo, seccion, texto, etc... y su imagen correspondiente. Bueno realmente lo que quiero guardar en el campo imagen es la ruta de esta en el servidor por lo que necesito primeramente subir la imagen a la carpeta preparada para ello en el servidor. Aqui es donde tengo el problema:

1. He instalado el Apache, PHPMyAdmin y MySql con el paquete WAMP y no se si en local existe la famosa carpeta temporal del servidor donde se guardan los archivos que se pasan desde el campo del formulario "input=file". He leido que no todos los servidores poseen esa carpeta de manera funcional y me gustaria saber si en local esta disponible. Si no lo estuviera, que parámetro de configuración debo tocar para cambiarlo??

2. En el caso de que si exista necesito copiar la imagen a la ruta que yo quiero dentro del servidor y asi usarla despues.

3. Una vez que la he copiado necesito guardar la ruta de la imagen en servidor al campo preparado dentro de la base de datos de tal manera que pueda despues cargar una noticia y que obtener su imagen gracias a la ruta que posee en la base de datos.

El campo del formulario es:
<input type="submit" name="enviar" value="Enviar Noticia" />

La consulta es un poco larga pero en definitiva es por lo que he estado viendo en el foro un tema muy sencillo, lo que pasa es que soy un poco cazurrín :)

Un saludo y gracias por adelantado
  #2 (permalink)  
Antiguo 07/09/2006, 08:59
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
checa en este Post creo que es lo que necesitas.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 07/09/2006, 09:29
 
Fecha de Ingreso: junio-2005
Mensajes: 12
Antigüedad: 18 años, 10 meses
Puntos: 0
Ya lo he conseguido despues de mucho rato comiendome la cabeza. Os pongo el código para quien le pueda hacer falta y para que me corrijan si esta algo mal hecho o se pudiera hacer mejor:

1.El formulario es el siguiente:

Código:
<form name="nueva_noticia" action="funciones.php" method="post" enctype="multipart/form-data">

Fecha<br />
Mes
<select name="mes">
<option value="Enero">Enero</option>
<option value="Febrero">Febrero</option>
<option value="Marzo">Marzo</option>
<option value="Abril">Abril</option>
<option value="Mayo">Mayo</option>
<option value="Junio">Junio</option>
<option value="Julio">Julio</option>
<option value="Agosto">Agosto</option>
<option value="Septiembre">Septiembre</option>
<option value="Octubre">Octubre</option>
<option value="Noviembre">Noviembre</option>
<option value="Diciembre">Diciembre</option>
</select>
Día
<select name="dia">
<?php
$i=1;
	while ($i<32){
		echo ('<option value="'.$i.'">'.$i.'</option>');
		$i= $i+1;
	}
?>
</select>
Año
<select name="ano">
<?php
$i=1900;
	while ($i<2006){
		echo ('<option value="'.$i.'">'.$i.'</option>');
		$i= $i+1;
	}
?>
</select><br /><br />
Título<br />
<input type="text" name="titulo" /><br /><br />
Seccion<br />
<input type="text" name="seccion" /><br /><br />
Texto<br />
<textarea name="texto" style="height:300px; width:500px"></textarea><br /><br />
Imagen<br />
<input type="file" name="imagen" /><br /><br />

<input type="submit" name="enviar" value="Enviar Noticia" />

<input type="button" onclick="alert(imagen_new.value)" />
</form>
2.Y ahora el codigo empleado en funciones.php que recibe del formulario:
Código:
<?php
$mes = $_POST["mes"];
$dia = $_POST["dia"];
$ano = $_POST["ano"];
$titulo = $_POST["titulo"];
$seccion = $_POST["seccion"];
$texto = $_POST["texto"];
$destino = 'img' ; 
//echo ($_FILES ['imagen']['tmp_name'].'<br>');
//echo ($destino.'/'.$_FILES ['imagen']['tmp_name'].'<br>');
move_uploaded_file ( $_FILES ['imagen']['tmp_name'], $destino.'/'.$_FILES['imagen']['name']); 



//Transformación de la fecha
switch ($mes){
	case "Enero": 
		$mes_no=1;
		break;
	case "Febrero": 
		$mes_no=2;
		break;
	case "Marzo": 
		$mes_no=3;
		break;
	case "Abril": 
		$mes_no=4;
		break;
	case "Mayo": 
		$mes_no=5;
		break;
	case "Junio": 
		$mes_no=6;
		break;
	case "Julio": 
		$mes_no=7;
		break;
	case "Agosto": 
		$mes_no=8;
		break;
	case "Septiembre": 
		$mes_no=9;
		break;
	case "Octubre": 
		$mes_no=10;
		break;
	case "Noviembre": 
		$mes_no=11;
		break;
	case "Diciembre": 
		$mes_no=12;
		break;
	default:
		$mes_no=1;
		break;
}

$fecha_formateada = $ano."/".$mes_no."/".$dia;

//echo ($fecha_formateada.'<br>');

//Guardo la ruta de la imagen para la base de datos
$ruta_img = $destino.'/'.$_FILES['imagen']['name'];

//Conexión con la base de datos
mysql_connect("localhost","alvaro","alvaroprudencio");

//Selección de la base de datos
mysql_select_db("cobena");


//Ejecución de la sentencia SQL
mysql_query("INSERT INTO noticias ( id_new, fecha , titulo , id_seccion , texto , imagen ) VALUES (NULL , '$fecha_formateada', '$titulo', '$seccion', '$texto', '$ruta_img')");

?>
Espero que les sirva de ayuda!!! y gracias opr la contestación :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:39.