Foros del Web » Programando para Internet » PHP »

[AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

Estas en el tema de [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL en el foro de PHP en Foros del Web. Hola a todos! Estoy con un problema con una aplicacion que estoy haciendo y espero alguien pueda darme una mano. El tema es el siguiente, ...
  #1 (permalink)  
Antiguo 17/03/2008, 11:40
 
Fecha de Ingreso: marzo-2008
Mensajes: 171
Antigüedad: 16 años, 1 mes
Puntos: 0
[AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

Hola a todos! Estoy con un problema con una aplicacion que estoy haciendo y espero alguien pueda darme una mano.

El tema es el siguiente, tengo un formulario para agregar nuevas personas a una base de datos, que cuenta de 4 areas de texto, para ingresar: nombre, apellido, edad y categoria, hasta ahi todo bien, puedo agregarlo todo perfecto.
Ahora, tambien quiero agregar para cada persona, 4 fotos de esa persona y no se bien como puedo hacerlo.

Tengo un formulario para subir imagenes a una determinada carpeta, pero no se como relacionar cada foto que subo con la ID correspondiente del usuario y ademas no puedo usar el mismo formulario para enviar los datos y las imagenes.

Si alguien puede darme una mano estare muy agradecido, ya que debo terminarlo para los proximos dias.

Desde ya muchas gracias!

p.d: probe con el tutorial para subir imagenes del tipo blob, pero no me las muestra y decidi q es mejor que queden almacenadas en una carpeta y no en la base de datos.
  #2 (permalink)  
Antiguo 17/03/2008, 11:59
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

Ok, bueno, en primer lugar te diré que si se puede subir con el mismo formulario las fotos, yo he hecho casi lo mismo que tú has hecho y si se puede, solo hace falta poner esto en el form: enctype=”multipart/form-data". Bueno, en cuanto a tu pregunta de como relacionar cada foto con la ID correspondiente, pues elemental amigo, me extraña que hagas esa pregunta, solo crea cuatro campos: foto1, foto2, foto3 y foto4 y en cada foto guardas la ruta de la imagen. Nada mas.
  #3 (permalink)  
Antiguo 17/03/2008, 12:23
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

Cita:
Iniciado por ElJavista Ver Mensaje
Ok, bueno, en primer lugar te diré que si se puede subir con el mismo formulario las fotos, yo he hecho casi lo mismo que tú has hecho y si se puede, solo hace falta poner esto en el form: enctype=”multipart/form-data". Bueno, en cuanto a tu pregunta de como relacionar cada foto con la ID correspondiente, pues elemental amigo, me extraña que hagas esa pregunta, solo crea cuatro campos: foto1, foto2, foto3 y foto4 y en cada foto guardas la ruta de la imagen. Nada mas.

hola,

y si dejara vacio los campos del form foto2, foto3 y foto4 ??

se insertaria la ruta de foto1 y los demas campos de la BD se quedarian vacios, o daria error po haber campos del form vacios?
  #4 (permalink)  
Antiguo 17/03/2008, 12:28
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

El Javista, lo que para ti es elemental, pueda que para otros no (es solo una apreciación).

MadKat, cuando desde un mismo formulario tu haces el envío de las fotos y los datos del usuario, estas automáticamente quedan con la misma Id del usuario.

Ej:

Tu Tabla de la Base de Datos

Id - Nombre - Apellido - Edad - Categoria - Img1 - Img2 - Img3 - Img4

y el form lo haces con 4 campos de texto y cuatro campos de tipo archivo.

Cada campo de tipo archivo tiene su respectivo botón de "examinar".

Luego, solo haces un botón de tipo "submit" y ese se encarga de enviar tu formulario con todos los datos, incluidas las fotos, y todo queda registrado con el Id del usuario.

Un dato extra, el campo Id debería ser un autonumérico (auto increment) para que a cada usuario se le asigne un Id único y automático.

No se si fui claro, me avisas como te fué.

Saludos.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #5 (permalink)  
Antiguo 17/03/2008, 12:51
 
Fecha de Ingreso: marzo-2008
Mensajes: 171
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

Muchas gracias desde ya por las respuestas.

Lucasan, gracias y te cuento aca como voy:

Yo hice un formulario con los siguientes campos:

Nombre
Apellido
Edad
Categoria
Imagen1
Imagen2
Imagen3
Imagen4

Los campos de imagen son con el respectivo boton de examinar, el problema es que cuando envio el formulario, en la base de datos, en cada campo de imagen, me aparece por ejemplo:

Si selecciono la foto desde examinar: "C:\fotos\angel.jpg" , el nombre que almaceno en la BD es solo "angel.jpg" y ademas, la foto no se sube a ninguna carpeta.

No se si me explico, quisiera saber como hacer "todo a la vez" es decir, que suba la imagen a un directorio en el servidor y ademas quede en el campo de la base de datos, la ruta de la imagen.

Por un lado, tengo este codigo para subir las imagenes a un determinado directorio:

Código:
<?php
if(isset($_POST['postback'])){
    $dirname = '/home/(directorio donde se guardaran las fotos)/';
    if(!empty($_FILES['foto']['name'])){
        if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
            move_uploaded_file($_FILES['foto']['tmp_name'],$dirname.$_FILES['foto']['name']);
            echo 'La imagen fue correctamente cargada!';
        } else {
            echo 'No se pudo cargar la imagen!';
        }
    } else {
        echo 'Debe especificar la ruta de la imagen';
    }
}
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
    <label>
        <input name="foto" type="file" id="foto" />
    </label>
    <label>
        <input type="submit" name="postback" value="Enviar" />
    </label>
</form>
Este codigo funciona bien, pero no se como hacer para "integrar" todo, ya que el codigo anterior no lo estoy usando en el envio del formulario, solo puse los campos con boton examinar, no se si se entiende.

Muchas gracias nuevamente!
  #6 (permalink)  
Antiguo 17/03/2008, 12:59
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

Cita:
Iniciado por jaronu Ver Mensaje
hola,

y si dejara vacio los campos del form foto2, foto3 y foto4 ??

se insertaria la ruta de foto1 y los demas campos de la BD se quedarian vacios, o daria error po haber campos del form vacios?
Ok, mira, si está vacía algun campo entonces simplemente no imprimes la foto. Disiernes si está vacío o no, de este modo:

Digamos que el contenido del campo foto1 es asignado a la variable $fot1 entonces haces un if

if ($fot1) echo "<img src=\"$foto1\" />";

Con eso evitarías el error si el campo está vacío.
  #7 (permalink)  
Antiguo 17/03/2008, 13:00
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

Madkat Mirate este link espero que te sirva


Un saludo

y Eljavista, yo me referia no al momento de mostrar la imagen si no el momento de insertar en la BD la ruta de foto1 si y las de foto2, 3,4 y 5 no. para el que quisiera subir una foto solo.

se quedan vacios simplemente los campos de la BD vacios sin mas?
  #8 (permalink)  
Antiguo 17/03/2008, 13:06
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

Algo muy útil y simple, usa una clase para hacer el upload

http://www.forosdelweb.com/f18/aport...2/#post2298904

en este tema puse una clase (el link, ya que la clase no la hice yo), esta clase se encarga de hacer todo, o casi todo:

* Te verifica el peso de la imagen (puedes restringirlo como tu quieras)
* El tipo de imagen
* y muchas cosas mas como transformar la imagen con GD, añadirle color, reflejos, etc.

Es muy facil de usar, y el ejemplo con que viene es muy explicito.

Si te parece bien descárgala, trabájala y nos cuentas.

Yo soy muy novato en PHP y me fue muy útil y simple de usar.

Saludos.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #9 (permalink)  
Antiguo 17/03/2008, 14:27
 
Fecha de Ingreso: marzo-2008
Mensajes: 171
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

lucasan, muchas gracias de nuevo, estuve viendo como adaptar la clase, pero sinceramente no entiendo como hacer.

Puedo agregar las fotos bien, pero no se como hacer para grabar los paths de las imagenes en mis variables de la base de datos.

Vos hiciste algo asi para tu uso personal? te molestaria mostrarmelo para entenderlo?

Muchas gracias de nuevo! te mando mis saludos!
  #10 (permalink)  
Antiguo 17/03/2008, 15:28
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 16 años, 10 meses
Puntos: 59
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

Debe haber una forma profesional de hacerlo, pero como soy novato me las arreglé así:

cuando insertas los datos a la base de datos cada campo tiene su variable y la pones en la consulta a la base de datos, lo que yo hice fue anteponer la ruta que elegí para guardar las fotos a la variable:
Ej:

Código PHP:
mysql_query("insert into producto (foto) values ('products/description/$foto')",$link); 
Como dije, debe haber una forma mejor de hacerlo, pero fue la solción que encontré mas rápido.

Aunque la clase tiene una función para obtener la ruta, pero no se como usarla.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #11 (permalink)  
Antiguo 17/03/2008, 15:41
 
Fecha de Ingreso: marzo-2008
Mensajes: 171
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

A ver, dejo aca la forma en que estoy haciendo el formulario:

Esta es la pagina que estoy usando para enviar los datos y subir la imagen al directorio que quiero, por ahora todo funciona bien, lo unico que me falta es poder guardar en el campo "imagen" de mi tabla el valor de la ruta donde esta la imagen, ademas me gustaria saber si puedo hacer que verifique que no exista una foto con el mismo nombre y ademas si puedo ponele al nombre de la foto el prefijo del nombre ingresado en el campo "nombre".

Muchas gracias nuevamente, estoy muy agradecido por las respuestas de todos.

Código PHP:
<?php require_once('../Connections/tinymodels.php'); ?>
<?php
function GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO modelos (nombre, edad, categoria) VALUES (%s, %s, %s)",
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['edad'], "int"),
                       
GetSQLValueString($_POST['categoria'], "text"));

  
mysql_select_db($database_tinymodels$tinymodels);
  
$Result1 mysql_query($insertSQL$tinymodels) or die(mysql_error());
}

mysql_select_db($database_tinymodels$tinymodels);
$query_Recordset1 "SELECT * FROM modelos";
$Recordset1 mysql_query($query_Recordset1$tinymodels) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>


<p>
  <?php
if(isset($_POST['postback'])){
    
$dirname 'C:\SERVER\www\tiny\modelos\fotos\foto_';
    
    if(!empty(
$_FILES['foto']['name'])){
        if (
is_uploaded_file($_FILES['foto']['tmp_name'])) {
            
move_uploaded_file($_FILES['foto']['tmp_name'],$dirname.$_FILES['foto']['name']);
            
//echo 'La imagen fue correctamente cargada!';
        
} else {
            echo 
'No se pudo cargar la imagen!';
        }
    } else {
        echo 
'Debe especificar la ruta de la imagen';
    }
}

?>
  
</p>
<form action="<?php echo $editFormAction?>" method="POST" enctype="multipart/form-data" name="form1" id="form1">
  <label>Nombre:
  <input name="nombre" type="text" id="nombre" />
  <br />
  <br />
Edad:
<input name="edad" type="text" id="edad" />
  <br />
  <br />
  Categoria: 
  <select name="categoria" id="categoria">
    <option>Ni&ntilde;os</option>
    <option>Ni&ntilde;as</option>
    <option>Bebes</option>
  </select>
  <br />
  <br />
Imagen:
<input name="foto" type="file" id="foto" />
        <br />
        <br />
  </label>
    <label>
        <input type="submit" name="postback" value="Enviar" />
    </label>
    <input type="hidden" name="MM_insert" value="form1">
</form>


</body>
</html>
<?php
mysql_free_result
($Recordset1);
?>
  #12 (permalink)  
Antiguo 17/03/2008, 16:22
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: [AYUDA] SUBIR, RELACIONAR Y MOSTRAR IMAGEN - PHP & MySQL

aqui es donde tienes la ruta del archivo:


Código PHP:

$dirname
.$_FILES['foto']['name'
guardala en una variable y la almacenas en la BD

Código PHP:
$ruta=$dirname.$_FILES['foto']['name']; 
y aqui es donde has de incluir el campo de la BD donde guardar el archivo

Código PHP:
 modelos (nombreedadcategorianuevo_campo
e inserta su valor como haces con las demas variables, es que no entiendo el query que haces, no lo habia visto asi, pero yo no se mucho de php.


Código PHP:
GetSQLValueString($_POST['ruta'], "text")); 
pero con la nueva variable, espero haberme explicado.

Ah y una cosa, como ya te dije no se mucho, pero creo que deberias primero subir el archivo y despues insertarlo en la BD, en tu codigo creo que esta alreves.
porque hasta que no subas el archivo la variable

Código PHP:
$_FILES['foto']['tmp_name'
no tendra ningun valor.

Un saludo
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 09:54.