Foros del Web » Programando para Internet » PHP »

ayuda con este codigo...

Estas en el tema de ayuda con este codigo... en el foro de PHP en Foros del Web. hola...he estado provando un codigo para guardar imagenes en una base de datos y hasta el momento me resulta una de las cosas q vi... ...
  #1 (permalink)  
Antiguo 09/02/2011, 13:38
 
Fecha de Ingreso: enero-2011
Mensajes: 57
Antigüedad: 13 años, 2 meses
Puntos: 3
ayuda con este codigo...

hola...he estado provando un codigo para guardar imagenes en una base de datos y hasta el momento me resulta una de las cosas q vi... pero despues me lanza un error y he revisado y no se q pueda hacer ya q aun no entiendo muy bien lo del php.. el error esta en la linea 6 del archivo guardar.php segun lo q me dice la pagina... gracias de antemano por su ayuda.
este es el codigo de la base de datos y los archivos php:

base de datos:

CREATE TABLE `imagenes` (
`nombre` VARCHAR(100) ,
`imagen` LONGBLOB NOT NULL
);


subir.php

<form method="post" action="guardar.php" enctype="multipart/form-data">
Nombre: <input type="text" name="nombre" maxlength="100"><br>
Imagen: <input type="file" name="imagen" size="40"><br>
<p><input type="submit" name="submit" value="Subir">
</form>


guardar.php

<?
// Configurar las dos lineas siguientes
mysql_connect("servidor","usuario","contraseña");
mysql_select_db("base_de_datos");
$imagen = addslashes(fread(fopen($imagen, "r"), filesize($imagen)));
$nombre = $_POST["nombre"];
mysql_query("INSERT INTO imagenes (nombre,imagen) VALUES ('$nombre','$imagen')");
?>Se ha subido la imagen a la base de datos, puedes verla pulsando <a href="ver.php?nombre=<? echo $nombre ?>">aquí</a>


ver.php

<?
$nombre = $_GET['nombre'];
// Configurar las dos lineas siguientes
@mysql_connect("servidor","usuario","contraseña");
@mysql_select_db("base_de_datos");
$query = "SELECT imagen FROM imagenes WHERE nombre = '$nombre'";
$result = @mysql_query($query);
$imagen = @mysql_result($result,0);
Header( "Content-type: image/jpeg");
echo $imagen;
?>
  #2 (permalink)  
Antiguo 09/02/2011, 14:03
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: ayuda con este codigo...

el archivo tienes que rescartarlo con $_FILE['imagen']

http://php.net/manual/es/reserved.variables.files.php

http://blog.unijimpe.net/upload-de-archivos-con-php/
  #3 (permalink)  
Antiguo 09/02/2011, 14:13
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: ayuda con este codigo...

1º pone el error, ya que no solo te dice la linea si no tambien te dice la funcion.
2º :
mysql_query("INSERT INTO imagenes (nombre,imagen) VALUES ('$nombre','$imagen')");
mysql_query("INSERT imagenes (nombre,imagen) VALUES ('$nombre','$imagen')");
__________________
Mono programando!
twitter.com/eguimariano
  #4 (permalink)  
Antiguo 09/02/2011, 14:30
 
Fecha de Ingreso: enero-2011
Mensajes: 57
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: ayuda con este codigo...

bueno lo q me aparece en la ventana de error es esto:

Warning: fopen() [function.fopen]: Filename cannot be empty in /home/vol12/zobyhost.com/zoby_6507323/htdocs/guardar.php on line 6

Warning: fread(): supplied argument is not a valid stream resource in /home/vol12/zobyhost.com/zoby_6507323/htdocs/guardar.php on line 6
  #5 (permalink)  
Antiguo 09/02/2011, 14:36
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: ayuda con este codigo...

el form que sube la imagen y guradar.php estan en el mismo directorio?
si es haci, me parece que te falta el permiso de ejecutar.
__________________
Mono programando!
twitter.com/eguimariano
  #6 (permalink)  
Antiguo 09/02/2011, 14:39
 
Fecha de Ingreso: enero-2011
Mensajes: 57
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: ayuda con este codigo...

umm... estan las 3 en la misma carpeta por asi decirlo... deberian estar en carpetas aparte?

bueno ademas para hacerme entender creo q tendre q explicar lo q deseo hacer...

es q quiero guardar una imagen en un campo de una tabla para asosiar esa imagen a cierta informacion.
Titulo
imagen Descripcion

y como comencé con esto de php hace poco crei q seria mejor aprender a guardar una imagen dentro de una base de datos a traves de php y por eso hice este tema... solo q el codigo no me ha resultado...

mis disculpas si no me hice entender bien... pero a eso es lo que deseo llegar...

Última edición por kmlo; 09/02/2011 a las 15:04
  #7 (permalink)  
Antiguo 09/02/2011, 15:14
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: ayuda con este codigo...

Tal vez mi pregunta sea tonta (seguro que si). Pero, ¿estas intentando guarda la imagen en LA base de datos? o ¿esta intentando registrar la imagen?

Por que una cosa es una cosa, y otra cosa es otra cosa.

Si es lo segundo, tendrías que codificar la imagen en base64_encode()
http://php.net/manual/en/function.base64-encode.php

No se que propósito tengas con la imagen, pero si esta algo bizarro.
  #8 (permalink)  
Antiguo 09/02/2011, 15:27
 
Fecha de Ingreso: enero-2011
Mensajes: 57
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: ayuda con este codigo...

si intento guardar la imagen en una base de datos a través de php >.< creo q no me explique bien.... o mas bien tengo la idea pero no lo se hacer...
la idea es guardar una imagen por ejemplo en la tabla probando con campos titulo,imagen, descripción
en titulo obviamente ponerle un titulo, en imagen guardar la imagen y en descripción darle una descripción ... he visto en varios lados q la imagen la pasan a datos binarios o algo asi y según el código q coloque arriba era para eso para guardar una imagen en un campo de una tabla de base de datos....
  #9 (permalink)  
Antiguo 09/02/2011, 20:44
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: ayuda con este codigo...

Me intereso el tema, así que hice un script basándome en el suyo para subir imágenes a la base de datos.

SQL
Código SQL:
Ver original
  1. CREATE TABLE  `base_datos`.`imagenes` (
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  3. `content` LONGBLOB NOT NULL ,
  4. `type` VARCHAR( 10 ) NOT NULL
  5. ) ENGINE = MYISAM ;

cargar.html
Código HTML:
Ver original
  1. <form action="procesar.php" method="post" enctype="multipart/form-data">
  2.     <label>Seleccione la imagen a subir</label>
  3.     <input type="file" name="imagen" />
  4.     <input type="submit" name="cargar" value="Subir"/>
  5. </form>

conexion_db.php
Código PHP:
<?php
/**
 * Genera el enlace a la base de datos
 * para futuras consultas.
 */
if(!isset($conexion)){
    
$conexion FALSE;
}

/**
 * Realizar la conexion a la base de datos
 */
function conexionDB(){
    global 
$conexion;
    
    if( 
$conexion 
        return 
$conexion;
    
    
// Variables a sustituir
    
$servidor 'localhost';
    
$usuario 'root';
    
$clave '';
    
$base_datos 'base_datos'
    
    
$conexion mysql_connect($servidor$usuario$clave) or die("Imposible conectar a MYSQL");
    
mysql_select_db($base_de_datos$conexion);
    
    return 
$conexion;
}

/**
 * Termina la conexion a la base de datos;
 */
function terminarConexionDB(){
        global 
$conexion;
        
        if( 
$conexion != FALSE )        
            
mysql_close($conexion);
            
        
$conexion FALSE;
}
?>
procesa.php
Código PHP:
<?php
include_once ('conexion_db.php');

// Verifica que se ha enviado el formulario
if(!(isset($_POST["cargar"])))
    exit();

$tmpName $_FILES["imagen"]["tmp_name"];
$type $_FILES['imagen']['type'];

// Carga archivo temporal
$fopen fopen($tmpName"r");
$file fread($fopenfilesize($tmpName));
$content addslashes($file);
fclose($fopen);

// Conecta a base de datos
conexionDB();

// Sube imagen a la base de datos
$query mysql_query("INSERT INTO base_datos.imagenes (content, type) VALUES ('$content', '$type')"$conexion);

if(
mysql_errno($conexion)){
    print 
mysql_errno($conexion);
}else{
    print 
'Se ha subido la imagen a la base de datos, puedes verla pulsando <a href="imagen.php?id='.mysql_insert_id().'">aqui</a>';
}

// Cierra base de datos
terminarConexionDB();
?>
imagen.php
Código PHP:
<?php
if(!isset($_GET['id']))
    exit();

include_once (
'conexion_db.php');

$id $_GET['id'];

// Conecta a base de datos
conexionDB();

$query mysql_query("SELECT * FROM base_datos.imagenes WHERE id = $id"$conexion);

// Cierra base de datos
terminarConexionDB();

$row mysql_fetch_object($query);

header('Content-type: $row->type');
print 
$row->content;


?>
Creo que es innecesario decir que es un script bastante básico, falta validar muchas cosas y tratar errores... en fin, espero que le sirva.

Última edición por jonasanx; 09/02/2011 a las 20:57
  #10 (permalink)  
Antiguo 10/02/2011, 00:20
 
Fecha de Ingreso: enero-2011
Mensajes: 57
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: ayuda con este codigo...

:O okis... gracias por ayudarme con muchas dudas ^^

Etiquetas: Ninguno
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 08:34.