Foros del Web » Programando para Internet » PHP »

Duda al subir foto

Estas en el tema de Duda al subir foto en el foro de PHP en Foros del Web. Buenas, quiero hacer lo siguiente. tengo un panel de control para dar de alta pisos. quiero que se puedan insertar dos fotos. tengo dos campos ...
  #1 (permalink)  
Antiguo 12/02/2005, 11:22
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Duda al subir foto

Buenas, quiero hacer lo siguiente. tengo un panel de control para dar de alta pisos. quiero que se puedan insertar dos fotos. tengo dos campos de imagen, llamados imagen y imagen2.

me gustaria hacer lo siguiente, que al guardar la foto me la guardara con algun tipo de referencia para yo poder identificarla rapidamente, tanto la carpeta en la que se guarde como el nombre de la foto. tengo el siguiente codigo de subida:

if(isset($_POST['submit'])){
$error = false;
// si hay imagen.
if (is_uploaded_file($_FILES['imagen']['tmp_name'])) {
//revisamos que sea jpg
if ($_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg"){
//nombre de la imagen
$foto = time().".jpg";
//movemos la imagen.
move_uploaded_file($_FILES['imagen']['tmp_name'], "../fotografias/".$foto);
}else{
$error = true;
$errormsg = "Formato no válido para archivo de imagen";
}
} else {
//imagen no se pudo subir o no seleccionaron.
$error=true;
$errormsg = "Error al cargar imagen: " . $_FILES['imagen']['name'];
}//fin file upload.

//continuamos con el insert.
//si hay error no hay imagen.
if($error){
$foto = "N/A";
}

1º- como puedo identificarla? ahora pongo la hora pero es un jaleo
$foto = time().".jpg";

2º- como puedo crear yo mismo la carpeta, en vez de tener q ponerle un nombre?

3º- puedo limitar la subida del tamaño de la foto de alguna manera?

salu2
  #2 (permalink)  
Antiguo 12/02/2005, 11:47
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 14 años, 9 meses
Puntos: 1
Hola ferran, nos volvemos a encontrar, jajaja

Bueno te cuento que hice algo parecido hace algun tiempo y lo que hice fue darle a la imagen el mismo nombre que el id del registro con lo cual no tendria dificultades a la hora de las llamadas, con respecto a la limitacion de tamaño utilice esto que ademas te limita el tipo de archivo

if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 15000))) {

obvio que deves cambiar a tu gusto las preferncias de tamaño y extenciones.

Bueno esepro que te sirva

Suerte
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #3 (permalink)  
Antiguo 12/02/2005, 12:51
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias cmc... jajajajaa
una cosa,no entiendo tu codigo. que hace la funcion strpos? las funciones tipo_archivo y $tamano_archivo son ya predefinidas? he puesto eso y no me inserta la foto.

una cosa, como quedaria el codigo para guardar con id? si inserto 2 fotos dentro del mismo id, que es el caso, como puedo diferenciarlas?

salu2
  #4 (permalink)  
Antiguo 13/02/2005, 05:04
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
nadie me puede ayudar??

salu2
  #5 (permalink)  
Antiguo 13/02/2005, 14:48
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Trataré de ayudarte:
- Cuando tengas dudas de alguna función puedes consultarla en php.net (parte superior derecha).
- $tipo_archivo y $tamano_archivo ni siquiera son funciones... son variables a las que tú debes de asignarle su valor.

Ahora...

... en principio no entiendo muy bien tu pregunta original ... eso de asignarle "un tipo de preferencia"... pero podrías trabajar con nombres más... "intuitivos", no sé! algo tipo:
imagen$id-A.jpg e imagen$id-B.jpg
dónde '$id' será el id del usuario ó a lo que lo quieras asociar (algo como sugirió cmc) y el 'A' y 'B' será quien los diferiencíe (¿esta bien escrito ?) y así podrás darle preferencia a los que terminen con 'A' ... ó cualquier formato parecido (imagenA-$id, $id-A, prefA-$id.... ).

Con respecto a la creación de carpetas busca la función mkdir().

Y de la limitación del tamaño de archivo... pués ahí está lo de cmc.. a $tamano_archivo le asigna el peso del archivo y crea una condicional
if($tamano_archivo < peso_específico) { continua... } else{ el archivo exede el tamaño permitido }

.... creo para saber el peso del archivo se hace con $_FILES['archivo']['size'].

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 13/02/2005 a las 14:50
  #6 (permalink)  
Antiguo 15/02/2005, 04:48
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
hola jam1138, perdona la tardanza pero no habia entrado.

la pregunta es por referencia, no preferencia!! mi intecion es asignar a la foto1 y a la referencia +1 por ejemplo. asi las tendre diferenciadas. o en su detrimento, crear una carpeta con el nombre de la referencia de la foto.

entiendes?

salu2
  #7 (permalink)  
Antiguo 15/02/2005, 05:00
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... necesito lentes .
... y nop.. ok!, quieres referenciarlas.. pero a qué?.. ya viste la función que mencioné para la creación de carpetas??
... ... tardaré así.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 15/02/2005, 05:24
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
buenas, no se q hago mal. tengo algo asi y no me funciona. me da como correcto, pero no me inserta nada.

if(isset($_POST['submit'])){
$error = false;
// si hay imagen.
if (is_uploaded_file($_FILES['imagen']['tmp_name'])) {
//revisamos que sea jpg
$tamanio_imagen= $_FILES['imagen']['size'];
if (($_FILES['imagen']['type'] == "image/jpeg") && (tamanio_imagen1 < 100)){
//nombre de la imagen
$foto1 = time().".jpg";
//movemos la imagen.
move_uploaded_file($_FILES['imagen']['tmp_name'], "../fotografias/".$foto1);
}else{
$error = true;
$errormsg = "Formato no válido para archivo de imagen";
}
} else {
//imagen no se pudo subir o no seleccionaron.
$error=true;
$errormsg = "Error al cargar imagen: " . $_FILES['imagen']['name'];
}//fin file upload.

y no hay manera, no me inserta nada en la carpeta fotografias

salu2
  #9 (permalink)  
Antiguo 15/02/2005, 05:31
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
pon un if a move_uploaded_file()... trata de imprimir cosas a lo largo de tu script para ver hasta dónde te está corriendo.. y también puedes colocar tu código aquí entre las etiquetas [PHP ] y [/PHP ]
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 15/02/2005, 05:40
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
no entiendo lo que me dices. yo temgo un formulario de entrada de datos, con varios capos. dos de ellos son imagen, imagen2. quiero que suban foto de un tamaño máximo, para no saturar el servidor. tengolo siguiente:

<?


if(isset($_POST['submit'])){
$error = false;
// si hay imagen.
if (is_uploaded_file($_FILES['imagen']['tmp_name']){

//revisamos que sea jpg
If (($_FILES['imagen']['type'] == "image/jpeg") && ($_FILES['imagen']['size'] < 50)){

$foto1 = time().".jpg";
//movemos la imagen.
If move_uploaded_file($_FILES['imagen']['tmp_name'], "../fotografias/".$foto1);
}else{
$error = true;
$errormsg = "Formato no válido para archivo de imagen";
}
} else {
//imagen no se pudo subir o no seleccionaron.
$error=true;
$errormsg = "Error al cargar imagen: " . $_FILES['imagen']['name'];
}//fin file upload.

//continuamos con el insert.
//si hay error no hay imagen.
if($error){
$foto1 = "N/A";
}
} else
//quitamos los enter ya que en flash se ven dobles.
$observaciones = str_replace("\r","",$_POST['observaciones']);
//fecha
$fecha = $_POST['aa'].$_POST['mm'].$_POST['dd'];
$campos = "zona,tipo,planta,hab,precio,m2,observaciones,fech a,foto1,foto2";
$valores = "'$zona','$tipo','$planta','$hab','$precio','$m2', '$observaciones','$fecha','$foto1','$foto2'";
//nos conectamos a la bd.
$cnx = conectar();
$res = mysql_query("INSERT INTO pisos ($campos) VALUES($valores)") or die (mysql_error());
//actualizamos el xml de agenda.
actualizarXmlVivienda();
//cerramos la conexión.
mysql_close($cnx);
//mensaje de exito.
$titulo = "Vivienda insertada";
$mensaje = "La vivienda ha sido insertada correctamente en la base de datos";
$link = "<a href='index.php'>regresar</a>";
include("mensajes.php");
exit;
}
?>

que tengo q modificar para q me suba correctamente la foto? una cosa, como puedo hacer q salga un error antes de insertar en la bd? ahora me insertaba, pero en el campo foto n/a como si no hubiera nada.

salu2
  #11 (permalink)  
Antiguo 15/02/2005, 07:00
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por ferranWEB
If move_uploaded_file($_FILES['imagen']['tmp_name'],
lo hiciste textual... me referia a que la función move_uploaded_file() devuelve un valor dependiendo del resultado (consulta php.net) por lo que puedes meterla dentro de un if... y así puedes continuar con guardar a la BD...

- sugerí pusieras echo"" en partes específicas de tu código para ver por dónde esta el error
If(subió) {echo: "Hasta aquí bien";} ... y lo repito porque dijiste no me entendiste pero no supe a qué ... solo sugiero.

- Otra cosa que también sugerí es que pongas tu código dentro de las etiquetas [PHP ] y [/PHP ]. Estas iluminan tu código haciendo más fácil su lectura y compresión... te quedará algo así:
Código PHP:
<?php
if(pones_etiquetas) {
echo 
"Tu código se colorea";
}
?>
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 17:06.