Foros del Web » Programando para Internet » PHP »

Y cuando no sube la foto?

Estas en el tema de Y cuando no sube la foto? en el foro de PHP en Foros del Web. En una web hay un apartado para subir unos datos y cuatro fotos, todo me funciona perfectamente, el problema es que no es obligatorio subir ...
  #1 (permalink)  
Antiguo 10/01/2005, 07:43
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 14 años, 10 meses
Puntos: 0
Y cuando no sube la foto?

En una web hay un apartado para subir unos datos y cuatro fotos, todo me funciona perfectamente, el problema es que no es obligatorio subir todas las fotos o ninguna o alguna, osea lo mismo se pueden subir las 4 que una, dos etc. entonces quisiera saber como puedo hacer para que en caso de que no me suban la foto de manera automática se asigne una que tenga por defecto y rellene ese hueco en la bd y despues al mostrar los resultados no me salga el cuadro con el aspa roja diciendo que no hay imagen sinó que salga la imagen que yo tenga para ese caso. el código que uso para subir las fotos junto con otros datos es
Código PHP:
<? 
//$n2=$HTTP_POST_FILES['userfile']['name'];
$nombre_archivo $_FILES['userfile']['name']; //nombre original del archivo
$nombre_archivo2 $_FILES['userfile2']['name']; 
$nombre_archivo3 $_FILES['userfile3']['name'];
$nombre_archivo4 $_FILES['userfile4']['name'];
$tipo_archivo $_FILES['userfile']['type']; 
$tamano_archivo $_FILES['userfile']['size']; 
$tipo_archivo2 $_FILES['userfile2']['type']; 
$tamano_archivo2 $_FILES['userfile2']['size']; 
$tipo_archivo3 $_FILES['userfile3']['type']; 
$tamano_archivo3 $_FILES['userfile3']['size']; 
$tipo_archivo4 $_FILES['userfile4']['type']; 
$tamano_archivo4 $_FILES['userfile4']['size']; 

//echo "nombre_archivo: $nombre_archivo,$tipo_archivo,$tamano_archivo <BR>";
//echo "nombre_archivo: $nombre_archivo2,$tipo_archivo2 ,$tamano_archivo2 <BR>";
//echo "nombre_archivo: $nombre_archivo3<BR>";
//echo "nombre_archivo: $nombre_archivo4<BR>";

$nombre=$_POST["nombre"];
$tpiso=$_POST["tpiso"];
$descripcion=$_POST["descripcion"];
$fecha=$_POST["fecha"];






//echo "<br>referencia: $nombre, tipo: $tpiso ";
//echo "<br> descripcion: $descripcion";
//echo "<br> fecha:$fecha <br>";
if ($nombre_archivo==""
$foto="";
else
$foto='temporal/thumbs/'.'tn_'.$nombre_archivo;
if (
$nombre_archivo2==""
$foto2="";
else
$foto2='temporal/thumbs/'.'tn_'.$nombre_archivo2;
if (
$nombre_archivo3==""
$foto3="";
else
$foto3='temporal/thumbs/'.'tn_'.$nombre_archivo3;
if (
$nombre_archivo4==""
$foto4="";
else
$foto4='temporal/thumbs/'.'tn_'.$nombre_archivo4;

//echo"<br> foto:$foto,$foto2,$foto3,$foto4 <br>";
$link=mysql_connect("localhost","root","") ;
mysql_select_db("inmobiliaria");
if (
$tpiso!='blanco'){

 
$valores=$_POST["operacion"]; $b=0;
  foreach (
$valores as $value)
      {
      if(
$value=='blanco')
      
$b=1;
      
//echo "operacion:$value <br>";
      
}
  if(
$b==0){
     
$insertar="INSERT INTO pisos_venta(referencia,id_tipo_inmueble,Id_tipoperacion,fecha,imagen1,imagen2,imagen3,imagen4,descripcion) VALUES (\"$nombre\",\"$tpiso\",\"$value\",\"$fecha\",\"$foto\",\"$foto2\",\"$foto3\",\"$foto4\",\"$descripcion\")";
     echo 
mysql_error();

      if (!
mysql_query($insertar)){
       echo 
"Error al registrar los datos <br>";
      }
      else{
        
// echo "<table><td align=center> <strong> DATOS RECOGIDOS CON EXITO </strong><br><br></td>";
         
$sql="SELECT * FROM pisos_venta WHERE referencia='$nombre'";
         
$result=mysql_query($sql);
         
$f=mysql_fetch_object($result);
              
$i=$f->id;
             
//echo "id piso= $i <br>";
             
$valores=$_POST["operacion"];
             
//$co=count($valores); cuenta elemntos del array
             //echo "long= $co<br>" ;
                   
foreach ($valores as $value){
                 
$insertar="INSERT INTO ptoperacion(id,Id_tipoperacion) VALUES (\"$i\",\"$value\")";
                 if (!
mysql_query($insertar)){
                  echo 
"Error al registrar el tipo de operación <br>";
                  } 
                   
//else  echo " <br>valor: $value"; si quiero mostrar elemento del array

                
}
           }
}

}
else {
?>
<script language="javascript">
alert("Campos vacíos, RECUERDE LOS CAMPOS OBLIGATORIOS");
location.href="javascript:window.history.back()";
</script>
     
<?
}

if(
$b==1){
?>
<script language="javascript">
alert("Campos vacíos, RECUERDE LOS CAMPOS OBLIGATORIOS");
location.href="javascript:window.history.back()";
</script>
     
<?
}



//vbles booleanas para comprobar si hay foto correcta, en este caso se le aplica más abajo la función thumbail
$carga1=$carga2=$carga3=$carga4=0;
//echo "carga$carga1 $carga2 $carga3 $carga4 <br>";
if (!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 1000000))) 
    echo 
"La extensión o el tamaño del archivo con foto1 no es correcta ó no se ha subido. <br><br><table><tr><td><li></td></tr></table>"
else{ 
    if (
move_uploaded_file($_FILES['userfile']['tmp_name'], "temporal/".$nombre_archivo)){
   
//echo "<br>El archivo CON LA FOTO1 ha sido cargado correctamente en "."temporal/".$nombre_archivo;
    
$carga1=1;}
   
   echo 
"<br>";
   }  
if (!((
strpos($tipo_archivo2"gif") || strpos($tipo_archivo2"jpeg")) && ($tamano_archivo2 1000000))) 
     echo 
"La extensión o el tamaño del archivo con foto2 no es correcta ó no se ha subido. <br><br><table><tr><td><li></td></tr></table>"
else{
    if (
move_uploaded_file($_FILES['userfile2']['tmp_name'], "temporal/".$nombre_archivo2)){
    
//echo "El archivo CON LA FOTO2 ha sido cargado correctamente en "."temporal/".$nombre_archivo2;
      
$carga2=1;}
    echo 
"<br>";
}
if (!((
strpos($tipo_archivo3"gif") || strpos($tipo_archivo3"jpeg")) && ($tamano_archivo3 1000000)))  
 echo 
"La extensión o el tamaño del archivo con foto3 no es correcta ó no se ha subido. <br><br><table><tr><td><li></td></tr></table>"
else{
if (
move_uploaded_file($_FILES['userfile3']['tmp_name'], "temporal/".$nombre_archivo3)){
//echo "El archivo CON LA FOTO3 ha sido cargado correctamente en "."temporal/".$nombre_archivo3;
 
$carga3=1;}
echo 
"<br>";
}
if (!((
strpos($tipo_archivo4"gif") || strpos($tipo_archivo4"jpeg")) && ($tamano_archivo41000000))) 
 echo 
"La extensión o el tamaño del archivo con foto4 no es correcta ó no se ha subido. <br><br><table><tr><td><li></td></tr></table>"
else{
    if (
move_uploaded_file($_FILES['userfile4']['tmp_name'], "temporal/".$nombre_archivo4)) {
// echo "El archivo CON LA FOTO4 ha sido cargado correctamente en "."temporal/".$nombre_archivo4; 
   
$carga4=1;}  
 echo 
"<br>";
 } 

?>

<script language="javascript">
alert("SUS DATOS HAN SIDO ACTUALIZADOS CORRECTAMENTE");
location.href="javascript:window.history.back()";
</script>
     

<?
function thumbjpeg($imagen,$altura) { 
     
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande". 
     
$dir_thumb "thumbs/"
     
// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg", 
     // el thumbnail se llamaría "tn_imagen1.jpg" 
     
$prefijo_thumb "tn_"

     
// Aquí tendremos el nombre de la imagen. 
     
$nombre=basename($imagen); 
     
// Aquí la ruta especificada para buscar la imagen. 
     
$camino=dirname($imagen)."/temporal/"

     
// Intentamos crear el directorio de thumbnails, si no existiera previamente. 
     
if (!file_exists($camino.$dir_thumb)) 
          @
mkdir ($camino.$dir_thumb0777) or die("No se ha podido crear el directorio ".$camino.$dir_thumb); 

     
// Aquí comprovamos que la imagen que queremos crear no exista previamente 
     
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) { 
          echo 
$camino.$dir_thumb.$prefijo_thumb.$nombre." NO existía<br>\n"
          
$img = @imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>\n"); 

          
// miramos el tamaño de la imagen original... 
          
$datos getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>\n"); 

          
// intentamos escalar la imagen original a la medida que nos interesa 
          
$ratio = ($datos[1] / $altura); 
          
$anchura round($datos[0] / $ratio); 

          
// esta será la nueva imagen reescalada 
          
$thumb imagecreatetruecolor($anchura,$altura); 

          
// con esta función la reescalamos 
          
imagecopyresampled ($thumb$img0000$anchura$altura$datos[0], $datos[1]); 

          
// voilà la salvamos con el nombre y en el lugar que nos interesa. 
          
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre); 
     } 
}



  if (
$carga1==1)
   
thumbjpeg($nombre_archivo260);
  if (
$carga2==1)
   
thumbjpeg($nombre_archivo2260);
  if (
$carga3==1)
   
thumbjpeg($nombre_archivo3260);
  if (
$carga4==1)
   
thumbjpeg($nombre_archivo4260); 
// una vez creados los thumbnails   





 
mysql_close($link);

?>
Como digo todo esto funciona perfectamente pero la cosa es que no sé cómo ni donde tengo que poner los condicionales porque no paran de darme errores, a ver si me podeis hechar una mano, gracias de antemano
  #2 (permalink)  
Antiguo 10/01/2005, 07:51
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 13 años
Puntos: 0
Hola de nevo mon bueno te cuento que como lo tienes esta bien lo unico que debes hacere s lo siguiente:
Código PHP:
if ($nombre_archivo==""
$foto="temporal/thumbs/tn_imagen_por_defecto.jpg"
else 
$foto='temporal/thumbs/'.'tn_'.$nombre_archivo
if (
$nombre_archivo2==""
$foto2="temporal/thumbs/tn_imagen_por_defecto.jpg"
else 
$foto2='temporal/thumbs/'.'tn_'.$nombre_archivo2
if (
$nombre_archivo3==""
$foto3="temporal/thumbs/tn_imagen_por_defecto.jpg"
else 
$foto3='temporal/thumbs/'.'tn_'.$nombre_archivo3
if (
$nombre_archivo4==""
$foto4="temporal/thumbs/tn_imagen_por_defecto.jpg"
else 
$foto4='temporal/thumbs/'.'tn_'.$nombre_archivo4
Suerte y Salu2.

Bye
__________________
Atte. Mohamed :aplauso:
  #3 (permalink)  
Antiguo 10/01/2005, 07:54
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
Según veo... que loo que guardas es la ruta de la imagen.... y creas un if donde dejas vacia la ruta si no hay nombre del archivo...
Cita:
if ($nombre_archivo2=="")
$foto2="";
else
$foto2='temporal/thumbs/'.'tn_'.$nombre_archivo2;
dale valor en vez de dejarla vacia!!!! dale la ruta de tu imagen de default.. por ejemplo:
Código PHP:
$def="/imagenes/default.jpg";

if (
$nombre_archivo2==""
$foto2=$def;
else
$foto2='temporal/thumbs/'.'tn_'.$nombre_archivo2
... perdón, no entiendo por qué el '.' en thumbs/'.'tn_'.$nombre
__________________
٩(͡๏̯͡๏)۶
» 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; 10/01/2005 a las 07:57
  #4 (permalink)  
Antiguo 10/01/2005, 08:20
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 14 años, 10 meses
Puntos: 0
Qué pasa que hay un concurso a ver quién contesta antes? Diossss cada vez sois más rápidos, se me colaba una comilla simple y por eso me daba error, como siempre muchísimas gracias a los dos funciona perfectamente
  #5 (permalink)  
Antiguo 10/01/2005, 10:57
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
hola muy buenas, pues ahora estoy intentando lo mismo que mon, por eso no he abierto ninugun post nuevo...
Pues cuando no seleciona ninguna foto salga una foto por defecto, pero tengo el problema que no me sale con los if,, estoy utilizando el metodo de Cluster para subir imagenes a la base de datos pero el problema, es esè, que si no pongo ninguna foto me da error o me lleva a otra pagina como lo hace Cluster en su Tutorial, pero yo quiero que me salga una foto por defecto,,
mira os pongo el archivo que envia los datos a la base de datos;
enviarbd.php
Código PHP:
<?php
//if (empty($_FILES['Foto1']['name'])){
//header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
//exit;
//} 
include("conexion.inc.php");
// Así llamaremos a la función que tenía los datos para conectarse
$link Conectarse();

//include("./includes/upload.php");
// se recogen los datos del formulario
$Referencia $POST['Referencia'];
$Provincia $_POST['Provincia'];
$Poblacion $_POST['Poblacion'];
$Zona$_POST['Zona'];
$Tipo $_POST['Tipo'];
$Operacion $_POST['Operacion'];
$Precio $_POST['Precio'];
$Habitaciones $_POST['Habitaciones'];
$Banos $_POST['Banos'];
$Aseos $_POST['Aseos'];
$Superficie $_POST['Superficie'];
$Antiguedad $_POST['Antiguedad'];
$Orientacion $_POST['Orientacion'];
$Parcela $_POST['Parcela'];
$Amueblado $_POST['Amueblado'];
$Cocina $_POST['Cocina'];
$Trastero $_POST['Trastero'];
$Terraza $_POST['Terraza'];
$Garaje $_POST['Garaje'];
$Ascensor $_POST['Ascensor'];
$Aire $_POST['Aire'];
$Piscina $_POST['Piscina'];
$Jardines $_POST['Jardines'];
$DescripcionEs $_POST['DescripcionEs'];
$DescripcionEn $_POST['DescripcionEn'];
// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['Foto1']['name'];
$binario_peso=$_FILES['Foto1']['size'];
$binario_tipo=$_FILES['Foto1']['type'];
// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['Foto1']['tmp_name'] ;
if (
$binario_nombre=="")
$Foto1="imagenes/Mariposa.jpg";
else
// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"r"),
filesize($binario_nombre_temporal)));

//include("./includes/tmpimagen.php");

//Insertando en la base de datos
$sql="INSERT INTO formulario(Provincia,Poblacion,Zona,Tipo,Operacion,Precio,Habitaciones,Banos,Aseos,
Superficie,Antiguedad,Orientacion,Parcela,Amueblado,Cocina,Trastero,Terraza,Garaje,Ascensor,
Aire,Piscina,Jardines,DescripcionEs,DescripcionEn,Foto1_binario,Foto1_nombre,Foto1_peso,Foto1_tipo) 
 VALUES ('$Provincia', '$Poblacion','$Zona','$Tipo','$Operacion','$Precio',
'$Habitaciones', '$Banos','$Aseos','$Superficie','$Antiguedad','$Orientacion', '$Parcela','$Amueblado',
'$Cocina','$Trastero','$Terraza', '$Garaje','$Ascensor','$Aire','$Piscina','$Jardines',
'$DescripcionEs','$DescripcionEn','$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')"
;
$result mysql_query($sql) or die (mysql_error()); // Enviamos la sentencia SQL al serv
header("location: index.php");  // si ha ido todo bien
exit;
?>
y siempre intente lo que intente error me da siempre en la misma linea
esta:
Código:
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "r"),
filesize($binario_nombre_temporal)));
haber si me podeis echar un cable
bueno astaluego y saludos
  #6 (permalink)  
Antiguo 10/01/2005, 11:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Basate en la existencia o valor de:

$binario_nombre ..

Puedes hacer algo tipo:

if (!empty($binario_nombre)){
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "r"),
filesize($binario_nombre_temporal)));
}

Sobre todo cierra los { y abrelos donde corresponda .. !!! (aunque PHP asuma que si hay sólo una instrucción .. así lo ejecutará . .no confies en eso .. por claridad y para evitar problemas usalos!.

Por lo demás no entiendo para que haces:
$Foto1="imagenes/Mariposa.jpg";

Si no hay foto que se subió .. En tu BD guardas la imagen en binario . .no una ruta de una imagen .. así que el hecho de que si ese campo no tiene dato (tu imagen) al leer ese registro y quieres poner otra imagen en su lugar lo debes controlar en el script que lee tus imagenes no en el que las procesa para almacenarlas en la BD. (no vale la pena que en tu BD guardes el "binario" de esa imagen de sustitución si no hay imagen que suben .. es un aumento de tu BD innecesario .. usa la técnica que te he descrito).

Un saludo,
  #7 (permalink)  
Antiguo 10/01/2005, 11:49
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
hola Cluster, he probado lo que me has dicho, he colacado lo que me has dicho arriba
Código PHP:
if (!empty($binario_nombre)){
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"r"),
filesize($binario_nombre_temporal)));

pero por lo que se ve ha que ser un, si o si en la imagen , vamos que tengo que escojer una por narizes , si no me salta error otra vez en la misma linea que te he dicho antes y error que da es este;
Código:
Warning: fread(): supplied argument is not a valid stream resource in /var/www/enviarabd.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /var/www/enviarabd.php:46) in /var/www/enviarabd.php on line 59
bueno haber que pasa con esa linea, haber si me lo aclaras, o como hago eso
para que no tenga que hacer un si o si de escoger imagen,,
bueno gracias por todo Cluster.
saludos
  #8 (permalink)  
Antiguo 10/01/2005, 15:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mmm... usa:

Código PHP:
if (!empty($_FILES['Foto1']['tmp_name'])){
   
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"r"), 
filesize($binario_nombre_temporal))); 


Y asegurate (haciendo un simple echo ) que valor toma:
$_FILES['Foto1']['tmp_name']

.. también tienes la función is_uploaded_file() ....
http://www.php.net/is_uploaded_file

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 18:59.