Foros del Web » Programando para Internet » PHP »

necesito SOS, para subir imagen y registro

Estas en el tema de necesito SOS, para subir imagen y registro en el foro de PHP en Foros del Web. Hola chicos, estoy perdida realmente. hice una aplicación con la ayuda del foro, para inmobiliarias, que va bastante bien. Subo 6 imagenes por propiedad y ...
  #1 (permalink)  
Antiguo 15/06/2009, 14:29
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
necesito SOS, para subir imagen y registro

Hola chicos, estoy perdida realmente. hice una aplicación con la ayuda del foro, para inmobiliarias, que va bastante bien.
Subo 6 imagenes por propiedad y los datos como id, titulo, teléfono, decripción etc.
Todo bien, pero el upload es bastante rústico, por que si hay 6 iágenes todo bien, inserta el registro, sube la imagen a un tamaño a la carpeta images y despues muestro el registo
Código:
<a href="images/<?php echo $registro['imagen']; ?>" target="_blank" border="0" ><img src="images/<?php echo $registro['imagen']; ?>" width="197" height="148" border="0" /></a>
hata ahi todo bien.
Pero quiero que si no hay imágen muestre una por defecto ya guardada en la carpeta imagesd , pero no funciona correctamente, como puedo simplificarlo?

Código PHP:
<a href="images/<?php echo $registro['imagen3']; ?>" target="_blank" border="0" ><?php
if (file_exists(@$_REQUEST['check_file'])) {  

echo 
'<a href="images/' $registro['imagen3'] . '" target="_blank" border="0" ><img src="images/' $registro['imagen3'] . '"  width="197" height="148" border="0" /></a>';  

} else {  

echo 
'<img src="imagesd/ni.jpg" width="197" height="148" border="0"/>';  


?></a>
  #2 (permalink)  
Antiguo 15/06/2009, 14:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: necesito SOS, para subir imagen y registro

En el $_REQUEST['check_file'] podrias escribir un ejemplo? Tambien corregi ya que tenias un error en el codigo verifica si esto te funciona

Código PHP:
<?php
if (file_exists($registro['imagen3'])) {   
echo 
'<a href="images/' $registro['imagen3'] . '" target="_blank" border="0" ><img src="images/' $registro['imagen3'] . '"  width="197" height="148" border="0" /></a>';   
} else {   
echo 
'<img src="imagesd/ni.jpg" width="197" height="148" border="0"/>';   
}  
?>
Cambie el request por registro
  #3 (permalink)  
Antiguo 15/06/2009, 16:03
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Respuesta: necesito SOS, para subir imagen y registro

Hola gracias por tu respuesta, el problema creo que lo tengo en el insertar los registros, porque si sube el campo sin imagen, el registro se carga igual con un nombre aleatorio en la bd sin la extensión


Código PHP:
<?php 
function genera_random($longitud){   
    
$exp_reg="[^A-Z0-9]";   
    return 
substr(eregi_replace($exp_reg""md5(rand())) .   
       
eregi_replace($exp_reg""md5(rand())) .   
       
eregi_replace($exp_reg""md5(rand())),   
       
0$longitud);   
}      

$imagen$_POST['imagen']; 
$imagen1$_POST['imagen1']; 
$imagen2$_POST['imagen2']; 
$imagen3$_POST['imagen3']; 
$imagen4$_POST['imagen4']; 
$imagen5$_POST['imagen5']; 
$referencia$_POST['referencia']; 
$fechaingreso date("Y-m-d"); 
$aleatorio genera_random(20);//cadena de 20 caracteres 
$aleatorio1 genera_random(18);//cadena de 18 caracteres 
$aleatorio2 genera_random(19);//cadena de 19 caracteres 
$aleatorio3 genera_random(21);//cadena de 18 caracteres 
$aleatorio4 genera_random(22);//cadena de 19 caracteres   
$aleatorio5 genera_random(23);//cadena de 19 caracteres 
$ruta="./images/";//ruta carpeta donde queremos copiar las im&aacute;genes 
$uploadfile_temporal=$_FILES['imagen']['tmp_name']; 
$uploadfile_nombre=$ruta.$aleatorio.$_FILES['imagen']['name']; 

if (
is_uploaded_file($uploadfile_temporal)) 
{       if(
is_uploaded_file($_FILES['imagen']['tmp_name'])) { 
    
    
   
//empieza la redimension, tomamos la imagen temporal subida 
   
$info getimagesize($_FILES['imagen']['tmp_name']);  
   
//segun el caso sera jpg, gif, png 
   
switch ($info[2]) { 
  case 
1
    
$imagen imagecreatefromgif($_FILES['imagen'] ['tmp_name']); break; 
  case 
2
    
$imagen imagecreatefromjpeg($_FILES['imagen'] ['tmp_name']); break; 
  case 
3
    
$imagen imagecreatefromwbmp($_FILES['imagen'] ['tmp_name']); break; 
  
// etc&eacute;tera //  
  


$original $imagen
$original_w imagesx($original); 
$original_h imagesy($original); 

$max 578;  //AQUI PONES EL TAMA&Ntilde;O DE LA IMAGEN A LO QUE QUIERAS 

if($original_w>$original_h) { 
    
$muestra_w $max
    
$muestra_h intval(($original_h/$original_w)*$max); 
    } else { 
    
$muestra_w intval(($original_w/$original_h)*$max); 
    
$muestra_h $max
    } 

$muestra imagecreatetruecolor($muestra_w,$muestra_h);  

imagecopyresampled($muestra,$original,0,0,0,0$muestra_w,$muestra_h,$original_w,$original_h);  
imagedestroy($original); // aqui destruyo el original, pues no hace falta ya    
//move_uploaded_file($muestra,$uploadfile_nombre); 
imagejpeg($muestra,$uploadfile_nombre); //puse esta linea por la de arriba
   
    
echo "el archivo 1 subio correctamente";   

...
}
}
$uploadfile_nombre=$aleatorio.$_FILES['imagen']['name']; 
    
$uploadfile_nombre1=$aleatorio1.$_FILES['imagen1']['name']; 
    
$uploadfile_nombre2=$aleatorio2.$_FILES['imagen2']['name']; 
    
$uploadfile_nombre3=$aleatorio3.$_FILES['imagen3']['name'];
    
$uploadfile_nombre4=$aleatorio4.$_FILES['imagen4']['name'];
    
$uploadfile_nombre5=$aleatorio5.$_FILES['imagen5']['name'];
include (
'cone.php'); 
//Ejecucion de la sentencia SQL 

mysql_query("insert into propiedades (titulo,telefono,operacion,banos,habitaciones,ciudad,provincia,mtscuadrados,precioventa,preciopesos,preciorenta,tipoinmueble,descripcion,direccion,fechaingreso,imagen,imagen1,imagen2,imagen3,imagen4,imagen5,referencia) values ('$titulo','$telefono','$operacion','$banos','$habitaciones','$ciudad','$provincia','$mtscuadrados','$precioventa','$preciopesos','$preciorenta','$tipoinmueble','$descripcion','$direccion','$fechaingreso','$uploadfile_nombre','$uploadfile_nombre1','$uploadfile_nombre2','$uploadfile_nombre3','$uploadfile_nombre4','$uploadfile_nombre5','$referencia')",$enlace);
  #4 (permalink)  
Antiguo 15/06/2009, 16:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: necesito SOS, para subir imagen y registro

Podrias escribir ejemplos de como aparece registrada en la base de datos?
  #5 (permalink)  
Antiguo 15/06/2009, 16:52
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Respuesta: necesito SOS, para subir imagen y registro

si,

la nombra asía a la imagen: d2570aa609ad65be8abola-de-papel.jpg

y si el campo del formu queda vacío inserta esto: d2570aa609ad65be8a
  #6 (permalink)  
Antiguo 15/06/2009, 16:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: necesito SOS, para subir imagen y registro

hay una imagen con ese nombre de d2570aa609ad65be8a?
  #7 (permalink)  
Antiguo 15/06/2009, 17:01
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Respuesta: necesito SOS, para subir imagen y registro

no, a eso me refiero, este es el formu , si yo no le cargo un archivo examinando desde la pc lo mismo se inserta un registro con un valo aleatorio y no sube imagen a la carpeta.
entonces cuando hago el if y else lo mismo toma al registro como existente.
El formulario no debería enviar un valorr si no subo imagen.

Código:
<th width="338" scope="col"><div align="left">
            <p>
              <input name="imagen"  type="file" id="imagen">
  Imagen 1</p>
            <p>
              <input name="imagen1"  type="file" id="imagen1">
  Imagen 2  </p>
            <p>
              <input name="imagen2" type="file" id="imagen2">
  Imagen 3</p>
          </div></th>
          <th width="340" scope="col"><p>
            <input name="imagen3"  type="file" id="imagen3">
  Imagen 4 </p>
            <p>
              <input name="imagen4"  type="file" id="imagen4">
  Imagen 5 </p>
            <p>
              <input name="imagen5" type="file" id="imagen5">
  Imagen 6 </p>
            </th>
  #8 (permalink)  
Antiguo 15/06/2009, 17:09
 
Fecha de Ingreso: abril-2003
Mensajes: 1.129
Antigüedad: 21 años
Puntos: 34
Respuesta: necesito SOS, para subir imagen y registro

Bueno, pero modifica el codigo para que si no existen imagenes 2, 3, 4, 5 o 6, no suba nada y deje el campo vacio...

Y luego si verificas si

if ( $registro['imagen3']=="") {

que si imagen3 es igual a nada, es decir está vacia, muestra la que vos queres, y sino en el else que se muestre y listo...
__________________
elGastronomo
  #9 (permalink)  
Antiguo 15/06/2009, 17:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: necesito SOS, para subir imagen y registro

Pero eso es lo que no entiendo, como va a ser que te funcione el if si no encuentra un archivo llamado con ese nombre y más todavia cuando no tiene extension. haz una prueba aparte del archivo que tienes. Haz otro archivo conectandote a la base de datos haciendo el query y luego llamando solamente el campo de donde se almacena el nombre de la foto luego haces un
Código PHP:
if(file_exists("images/".$registro['imagen3'])){
  echo 
$registro["imagen3"];
}else{
  echo 
"no hay registro";

me dejas saber

Última edición por abimaelrc; 15/06/2009 a las 17:18
  #10 (permalink)  
Antiguo 15/06/2009, 17:12
 
Fecha de Ingreso: abril-2003
Mensajes: 1.129
Antigüedad: 21 años
Puntos: 34
Respuesta: necesito SOS, para subir imagen y registro

Creo que sería así...

Código PHP:
if ($imagen1<>"") {    $uploadfile_nombre1=$aleatorio1.$_FILES['imagen1']['name'] };
 
if (
$imagen2<>"") {     $uploadfile_nombre2=$aleatorio2.$_FILES['imagen2']['name'] }; 
Etc, etc
__________________
elGastronomo
  #11 (permalink)  
Antiguo 15/06/2009, 17:16
 
Fecha de Ingreso: abril-2003
Mensajes: 1.129
Antigüedad: 21 años
Puntos: 34
Respuesta: necesito SOS, para subir imagen y registro

El file_exists no creo, al menos como lo están declarando ahí, no creo que funcione, porque no se le está informando de en que carpeta debería verificar si existe el archivo...
__________________
elGastronomo
  #12 (permalink)  
Antiguo 15/06/2009, 17:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Respuesta: necesito SOS, para subir imagen y registro

Cita:
Iniciado por American2010 Ver Mensaje
Bueno, pero modifica el codigo para que si no existen imagenes 2, 3, 4, 5 o 6, no suba nada y deje el campo vacio...

Y luego si verificas si

if ( $registro['imagen3']=="") {

que si imagen3 es igual a nada, es decir está vacia, muestra la que vos queres, y sino en el else que se muestre y listo...
gracias chicos, esto es lo que no logro hacer.
  #13 (permalink)  
Antiguo 15/06/2009, 17:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: necesito SOS, para subir imagen y registro

Trata esto

Código PHP:
<?php  
function genera_random($longitud){    
    
$exp_reg="[^A-Z0-9]";    
    return 
substr(eregi_replace($exp_reg""md5(rand())) .    
       
eregi_replace($exp_reg""md5(rand())) .    
       
eregi_replace($exp_reg""md5(rand())),    
       
0$longitud);    
}       

$imagen$_POST['imagen'];  
$imagen1$_POST['imagen1'];  
$imagen2$_POST['imagen2'];  
$imagen3$_POST['imagen3'];  
$imagen4$_POST['imagen4'];  
$imagen5$_POST['imagen5'];  
$referencia$_POST['referencia'];  
$setImage false;
$fechaingreso date("Y-m-d");  
$aleatorio genera_random(20);//cadena de 20 caracteres  
$aleatorio1 genera_random(18);//cadena de 18 caracteres  
$aleatorio2 genera_random(19);//cadena de 19 caracteres  
$aleatorio3 genera_random(21);//cadena de 18 caracteres  
$aleatorio4 genera_random(22);//cadena de 19 caracteres    
$aleatorio5 genera_random(23);//cadena de 19 caracteres  
$ruta="./images/";//ruta carpeta donde queremos copiar las im&aacute;genes  
$uploadfile_temporal=$_FILES['imagen']['tmp_name'];  
$uploadfile_nombre=$ruta.$aleatorio.$_FILES['imagen']['name'];  

if (
is_uploaded_file($uploadfile_temporal))  
{       if(
is_uploaded_file($_FILES['imagen']['tmp_name'])) {  
     
     
   
//empieza la redimension, tomamos la imagen temporal subida  
   
$info getimagesize($_FILES['imagen']['tmp_name']);   
   
//segun el caso sera jpg, gif, png  
   
switch ($info[2]) {  
  case 
1:  
    
$imagen imagecreatefromgif($_FILES['imagen'] ['tmp_name']); break;  
  case 
2:  
    
$imagen imagecreatefromjpeg($_FILES['imagen'] ['tmp_name']); break;  
  case 
3:  
    
$imagen imagecreatefromwbmp($_FILES['imagen'] ['tmp_name']); break;  
  
// etc&eacute;tera //   
  
$setImage true;
  }

$original $imagen;  
$original_w imagesx($original);  
$original_h imagesy($original);  

$max 578;  //AQUI PONES EL TAMA&Ntilde;O DE LA IMAGEN A LO QUE QUIERAS  

if($original_w>$original_h) {  
    
$muestra_w $max;  
    
$muestra_h intval(($original_h/$original_w)*$max);  
    } else {  
    
$muestra_w intval(($original_w/$original_h)*$max);  
    
$muestra_h $max;  
    }  

$muestra imagecreatetruecolor($muestra_w,$muestra_h);   

imagecopyresampled($muestra,$original,0,0,0,0$muestra_w,$muestra_h,$original_w,$original_h);   
imagedestroy($original); // aqui destruyo el original, pues no hace falta ya     
//move_uploaded_file($muestra,$uploadfile_nombre);  
imagejpeg($muestra,$uploadfile_nombre); //puse esta linea por la de arriba 
    
    
echo "el archivo 1 subio correctamente";    
}  
... 


if(
$setImage){
$uploadfile_nombre=$aleatorio.$_FILES['imagen']['name'];  
    
$uploadfile_nombre1=$aleatorio1.$_FILES['imagen1']['name'];  
    
$uploadfile_nombre2=$aleatorio2.$_FILES['imagen2']['name'];  
    
$uploadfile_nombre3=$aleatorio3.$_FILES['imagen3']['name']; 
    
$uploadfile_nombre4=$aleatorio4.$_FILES['imagen4']['name']; 
    
$uploadfile_nombre5=$aleatorio5.$_FILES['imagen5']['name']; 
}else{
$uploadfile_nombre="";
    
$uploadfile_nombre1=""
    
$uploadfile_nombre2=""
    
$uploadfile_nombre3="";
    
$uploadfile_nombre4="";
    
$uploadfile_nombre5="";
}
include (
'cone.php');  
//Ejecucion de la sentencia SQL  

mysql_query("insert into propiedades (titulo,telefono,operacion,banos,habitaciones,ciudad,provincia,mtscuadrados,precioventa,preciopesos,preciorenta,tipoinmueble,descripcion,direccion,fechaingreso,imagen,imagen1,imagen2,imagen3,imagen4,imagen5,referencia) values ('$titulo','$telefono','$operacion','$banos','$habitaciones','$ciudad','$provincia','$mtscuadrados','$precioventa','$preciopesos','$preciorenta','$tipoinmueble','$descripcion','$direccion','$fechaingreso','$uploadfile_nombre','$uploadfile_nombre1','$uploadfile_nombre2','$uploadfile_nombre3','$uploadfile_nombre4','$uploadfile_nombre5','$referencia')",$enlace);
  #14 (permalink)  
Antiguo 15/06/2009, 17:34
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: necesito SOS, para subir imagen y registro

mmm ya que el nombre de las imagenes las guardas en un registro de BD.... porque no pones ese campo como NULL?

Ya pues cuando recoges tu imagen por POST:

$temp_imagen = $_FILES["img1"]["tmp_name"];

preguntas:

Código PHP:
if($temp_imagen==""){
    
$imagen "";
    
$img_procesada true;
}
else{
   
//subo la imagen
}
//despues ....
if($img1_procesada){
  
//luego guardas en el registero de la BD


Con esto... en caso no subas una imagen el campo de la BD queda vacio... en consecuencia, al momento de mostrar tus registros por ejemplo con un while, preguntas

Código PHP:
if($row['imagen_producto']==""){echo '<img src="default.jpg">';}else{echo $row['imagen_producto'];} 
es algo sencillo de comprender... eso si, por logica al registrar la imagen , no sera obligatorio subir la imagen, por eso puede ser NULL
__________________
Quitenme la vida pero no la bebida.
  #15 (permalink)  
Antiguo 15/06/2009, 17:57
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Respuesta: necesito SOS, para subir imagen y registro

gracias chicos, mañana lo voy a probar como dice cesar a ver si puedo adaptarlo al script y que funcione correctamente.
son unos genios por la onda
  #16 (permalink)  
Antiguo 15/06/2009, 19:38
 
Fecha de Ingreso: diciembre-2008
Mensajes: 268
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: necesito SOS, para subir imagen y registro

estimada....

yo tenía el mismo problema ante otra programación con php y mysql (creando pdf's con FPDF)... y es que requería de una imágen "por defecto" .... asi, al no haber ingresado una.... no hubiese problema..

lo que hice para solucionarlo, fue lo siguiente, y es que en vez de "INSERTAR" el valor por php..... simplemente modifique la estructura de mi BD, dejando como valor "predeterminado", la ruta de la imágen.. de esta forma, si se ingrese 1 o 100, no importa, pues TODAS se llamaran por defecto como la imágen que quiero sea la predeterminada... por ejemplo, en mi tabla, dejé como valor predeterminado para los campos IMAGEN1 e IMAGEN2, el valor http://localhost/imagenes/noimage.jpg .....
de esta forma... despues, al querer llamar las imágenes asociadas a mi registro, y no se hubiesen ingreado todas, entregará como resultado, a los campos "vacios", la ruta http://localhost/imagenes/noimage.jpg ...

y con eso me evite todo el otro problema y extender codigo php...

espero me haya explicado y apunte a lo que necesitas
EXITO !

Última edición por icarocu; 15/06/2009 a las 19:44
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 21:23.