Foros del Web » Programando para Internet » PHP »

Upload imagenes (Sin usar campos BLOB)

Estas en el tema de Upload imagenes (Sin usar campos BLOB) en el foro de PHP en Foros del Web. Hola a todos. Necesitaría saber como puedo hacer un sistema de upload de imagenes, pero del siguiente modo. Necesito que en la base de datos ...
  #1 (permalink)  
Antiguo 11/09/2007, 16:11
 
Fecha de Ingreso: enero-2007
Mensajes: 158
Antigüedad: 17 años, 2 meses
Puntos: 2
Upload imagenes (Sin usar campos BLOB)

Hola a todos.

Necesitaría saber como puedo hacer un sistema de upload de imagenes, pero del siguiente modo.

Necesito que en la base de datos se almacene el nombre de la imagen, y esta imagen sea movida a una carpeta de mi host (Nada de blob)

A ver si alguien me puede hechar una mano, aunque sea diciendome donde puedo encontrar algun ejemplo.

Gracias de antemano
  #2 (permalink)  
Antiguo 11/09/2007, 16:17
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Upload imagenes (Sin usar campos BLOB)

pues aqui mismo en el foro ya se ha tratado muchas muchas veces una ayudita

http://php.novacreations.net/viewtopic.php?t=109
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 11/09/2007, 16:31
 
Fecha de Ingreso: enero-2007
Mensajes: 158
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Upload imagenes (Sin usar campos BLOB)

La cosa sería que guardase el nombre de la imagen en un campo de labase de datos... Eso es lo que no se hacer, pero gracias de todos modos
  #4 (permalink)  
Antiguo 11/09/2007, 16:34
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Upload imagenes (Sin usar campos BLOB)

pos con eso ya lo tienes facil sabiendo subir y teniendo el nombre solo queda ingresarlo con un simple INSERT into table ;)

aparte en el ejemplo que te di si hay una insert a base de datos debes mirar bien ;)
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #5 (permalink)  
Antiguo 12/09/2007, 06:02
 
Fecha de Ingreso: enero-2007
Mensajes: 158
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Upload imagenes (Sin usar campos BLOB)

Hola de nuevo. He encontrado el ejemplo perfecto que necesito... pero ahora quisiera pedir otra vez vuestra ayuda.

Tengo dos archivos, uno es el "formulario.htm", donde coloco el titulo para la imagen, la imagen, etc... y otro archivo llamado "creanoticia.php" donde almacena los datos en la base de datos.

Se puede hacer que en lugar de tener dos archivos tenga uno solo? es decir, juntar un archivo con otro y que ademas funcione correctamente.

Gracias de antemano.

Un saludo

formulario.htm
Código HTML:
<html>
<head>
	<title>Fotos</title>
</head>

<body>
<form name="form1" action="creanoticia.php" method="post"enctype="multipart/form-data">
	<table border="1" cellpadding="0" cellspacing="0" width="500">
		<tr>
			<td>Titulo de Noticia</td>
			<td><input type="text" name="titulo" size="17"></td>
		</tr>
		<tr>
			<td>Mensaje</td>
			<td><textarea name="mensaje" cols="25" rows="7"></textarea></td>
		</tr>
		<tr>
			<td>
				<input name="userfile" type="file" class="cajatexto1" onChange="muestra();" size="16" style="float: left">
				<input type="hidden" name="MAX_FILE_SIZE" value="100000">
			</td>
			<td>
				<img src="escudo.jpg" name="imagen" width="130" height="150" class="cajatexto1">
			</td>
		</tr>
		<tr>
			<td colspan="2">
				<input name="grabar" type="submit" class="cajatexto1" value="Enviar Datos" style="font-weight: bold">&nbsp;
				<input type="reset" value="Cancelar" style="font-weight: bold">
			</td>
		</tr>
	</table>
</form>

</body>
</html>
<script language="javascript">
function muestra()
{
document.form1.imagen.src=document.form1.userfile. value;
}
</script> 
creanoticia.php
Código PHP:
<?  
$servidor
="localhost";  
$basedatos="noticias";
$dbpass="";  
$dbusuario="root"

//datos del arhivo  
$nombre_archivo $HTTP_POST_FILES["userfile"]["name"];  
$tipo_archivo $HTTP_POST_FILES["userfile"]["type"];  
$tamano_archivo $HTTP_POST_FILES["userfile"]["size"];  

//compruebo si las características del archivo son las que deseo  
if (!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && (    $tamano_archivo 100000))) 
{  
    echo 
"La extensión o el tamaño de los archivos no es correcta. (Solo .gif o .jpg - Max. 100 Kb)"
?> 
    <script language="javascript"> 
        setTimeout("url()",3000); 
        function url() 
        { 
        window.history.back(); 
        } 
    </script>            
<?     

else 
{  
    
$nom_img$nombre_archivo
     
    
$directorio 'fotos/';  //Directorio

    
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],$directorio "/" $nom_img)) 
    {  
        
$diaactualdate("d");  
        
$mesactualdate("m");  
        
$anoactualdate("Y"); 
        
$fecha$diaactual "/" $mesactual "/" $anoactual
         
        
//Conexión con la base de datos 
        
$link=mysql_connect($servidor,$dbusuario,$dbpass); 
        
$query="INSERT INTO noticias (titulo,mensaje,foto,fecha) VALUES ('$titulo','$mensaje','$nom_img','$fecha')";  
        
$result=mysql_db_query($basedatos,$query,$link); 
         
        if(
mysql_affected_rows($link)) 
        {  
            echo 
"Envio correcto";  
             
        } else  
        {  
            echo 
"Envio erroneo";  
        }

    } 
    else 
    { 
        echo 
"error al subir la foto"
    } 


?>
  #6 (permalink)  
Antiguo 12/09/2007, 08:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Upload imagenes (Sin usar campos BLOB)

Si se puede solo es cuestion de que pongas el formulario al final del script PHP y hagas una condicion:
Código PHP:
<?php
if( formulario_enviado ) {
   
// codigo para procesar el formulario
}
?>
<html>
<!-- todo el codigo de tu formulario -->
Saludos.
  #7 (permalink)  
Antiguo 12/09/2007, 08:34
 
Fecha de Ingreso: enero-2007
Mensajes: 158
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Upload imagenes (Sin usar campos BLOB)

He probado tal y como me has dicho y me ha funcionado correctamente.

Gracias una vez más GatorV

Un saludo
  #8 (permalink)  
Antiguo 15/09/2007, 11:31
 
Fecha de Ingreso: enero-2007
Mensajes: 158
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Upload imagenes (Sin usar campos BLOB)

Hola de nuevo. Tengo otra duda relacionada con este post que hice hace unos dias.

Desearía cambiarle el nombre de la imagen cuando la subo al host.

... Las noticias las guardo en categorias, ejemplos: De interés, nacionales, internacionales... y cada una de las noticias que almaceno en la base de datos tiene un "id".

Bien, el nombre de la imagen que subo para cada noticia, me gustaria que cambiase el nombre por la categoria seguido del id, por ejemplo

Cambiar una imagen que se llame "Ayer.gif" por "Internacional_7.gif"

He conseguido que cambie el nombre, y que además, me añada la categoria al nombre, pero no consigo poner el id, ya que el query lo hago más abajo, y no se llamar al id (El código en concreto es el del .PHP de más arriba)

Esto es lo que yo hago:

Código PHP:
if ($tipo_archivo == "image/gif")
{
      
$nom_img $categoria."_".AQUI IRIA EL ID.".gif";
}
else 
{
      
$nom_img $categoria."_".AQUI IRIA EL ID.".jpg";
}
    
$nom_img$nombre_archivo;  
      
    
$directorio 'fotos/';  //Directorio 

    
if (move_uploaded_ .......... 
A ver si alguien me puede hechar una mano porfavor.

Gracias
  #9 (permalink)  
Antiguo 16/09/2007, 15:24
 
Fecha de Ingreso: enero-2007
Mensajes: 158
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Upload imagenes (Sin usar campos BLOB)

UP UP... a ver si alguien me hecha una mano...
  #10 (permalink)  
Antiguo 16/09/2007, 21:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Upload imagenes (Sin usar campos BLOB)

Tendrias que hacer el INSERT en la base de datos, obtener el ID y posteriormente copiar la imagen al servidor e insertar los datos de la imagen haciendo un UPDATE.

Saludos.
  #11 (permalink)  
Antiguo 16/09/2007, 22:23
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Upload imagenes (Sin usar campos BLOB)

La forma de obetener el id después de realizar un insert en la Db, se hace con la función "mysql_insert_id()".

La debes igualar a una variable para que después la puedas utilizar en el nombre de la imagen:

Código PHP:
$idd=mysql_insert_id();
$nom_img $categoria."_".$idd.".jpg"
Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #12 (permalink)  
Antiguo 17/09/2007, 06:52
 
Fecha de Ingreso: enero-2007
Mensajes: 158
Antigüedad: 17 años, 2 meses
Puntos: 2
De acuerdo Re: Upload imagenes (Sin usar campos BLOB)

He probado lo que me decís y no consigo que me funcione, ya que el query lo tengo más abajo... primero muevo el archivo a una carpeta del host y luego le cambio el nombre para mas tarde añadir ese nombre junto a otros datos a la base de datos.

El código que utilizo es este.

A ver si sabeis decirme qué debo hacer para poder mostrar el id de cada imagen que meto, e insertar este id en el nombre de la imagen.

Este es el script:

Código PHP:
        $link=mysql_connect($servidor,$dbusuario,$dbpass); 
        
$query="SELECT * FROM noticias";  
        
$result=mysql_db_query($basedatos,$query,$link);

    if (
$tipo_archivo == "image/gif")
    {
        
$nom_img $categoria."_".AQUI IRIRA EL ID.".gif";  
    }
    else 
    {
        
$nom_img $categoria."_".AQUI IRIRA EL ID.".jpg";  
    }
     
    
$directorio '../img';  //Directorio

    
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],$directorio "/" $nom_img)) 
    {  
        
$diaactualdate("d");  
        
$mesactualdate("m");  
        
$anoactualdate("Y"); 
        
$fecha$diaactual "/" $mesactual "/" $anoactual
         
        
//Conexión con la base de datos 
        
$link=mysql_connect($servidor,$dbusuario,$dbpass); 
        
$query="INSERT INTO noticias (titulo,descripcion,categoria,img,fecha) VALUES ('$titulo','$descripcion','$categoria','$nom_img','$fecha')";  
        
$result=mysql_db_query($basedatos,$query,$link); 
        if(
mysql_affected_rows($link)) 
        {  
            echo 
"Envio correcto"
                         
        } else  
        {  
            echo 
"Envio erroneo";  
        }

    } 
    else 
    { 
        echo 
"error al subir la foto"
    } 
  #13 (permalink)  
Antiguo 17/09/2007, 08:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Upload imagenes (Sin usar campos BLOB)

Como te comento, necesitas hacer esto:
1.- Primero hacer un INSERT en la base de datos con la noticia.
2.- Obtener el ID de la noticia usando mysql_insert_id()
3.- Preparar el nombre de la imagen
4.- Subir la imagen al servidor con su nombre nuevo
5.- Hacer un UPDATE a la base de datos para insertar el nombre de la imagen.

Saludos.
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 19:19.