Foros del Web » Programando para Internet » PHP »

Dado este código como hago para que ......

Estas en el tema de Dado este código como hago para que ...... en el foro de PHP en Foros del Web. Dado este código: Código PHP: <?  $nombre_archivo  =  $_FILES [ 'userfile' ][ 'name' ];  //nombre original del archivo $nombre_archivo2  =  $_FILES [ 'userfile2' ][ 'name' ];  $nombre_archivo3  =  ...
  #1 (permalink)  
Antiguo 10/12/2004, 09:12
 
Fecha de Ingreso: diciembre-2004
Mensajes: 32
Antigüedad: 19 años, 4 meses
Puntos: 0
Dado este código como hago para que ......

Dado este código:
Código PHP:
<? 
$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']; 
//compruebo si las características del archivo son las que deseo 
if (!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 1000000))) { 
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li></td></tr></table>"
}else{ 
    if (
move_uploaded_file($_FILES['userfile']['tmp_name'], "temporal/".$nombre_archivo))
    if (
move_uploaded_file($_FILES['userfile2']['tmp_name'], "temporal/".$nombre_archivo2))
    if (
move_uploaded_file($_FILES['userfile3']['tmp_name'], "temporal/".$nombre_archivo3))
    if (
move_uploaded_file($_FILES['userfile4']['tmp_name'], "temporal/".$nombre_archivo4)){ 
       echo 
"El archivo ha sido cargado correctamente en"."temporal/".$nombre_archivo
    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); 
     } 
}
   
thumbjpeg($nombre_archivo300);
   
thumbjpeg($nombre_archivo2300);
   
thumbjpeg($nombre_archivo3300);
   
thumbjpeg($nombre_archivo4300); 
// una vez creados los thumbnails   

//conecto con la bd
$conexion mysql_connect("localhost","root","") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("inmobiliaria",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca. 

//insertamos los datos en la BD. 
$consulta_insertar "INSERT INTO pisos_venta (id, referencia,fecha,imagen1,imagen2,imagen3,imagen4,descripcion) VALUES ('', '".$_POST['referencia']."','".$_POST['fecha']."','temporal/thumbs/tn_$nombre_archivo','temporal/thumbs/tn_$nombre_archivo2','temporal/thumbs/tn_$nombre_archivo3','temporal/thumbs/tn_$nombre_archivo4','".$_POST['descripcion']."')"
echo 
$consulta_insertar;
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos."); 
header("location: pisos_alquiler.php?s=1"); // si ha ido todo bien 
exit; 



    }else{ 
       echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse."
    } 

?>
Me subo unos datos y las cuatro imagenes que pongo, el caso es que necesitaría que si por ejemplo solo subo dos imagenes de las cuatro opciones que tengo no me dé error y no sé como hacerlo, en su defecto valdría también que cargase una foto que yo haga por ejemplo de imagen no disponible, pero casi mejor que no dé error si no se suben las cuatro fotos, venga muchas gracias de antemano y salu2
  #2 (permalink)  
Antiguo 10/12/2004, 09:24
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 19 años, 6 meses
Puntos: 0
En el script de subida, es decir el formulario, pon al lado de cada imagen un boton de checked, que luego posteriormente recojes en este script, y asi sabes cuales se tienen que subir y cuales no. Entonces las que no tengas que subir, el campo que insertas en la bbdd de datos, el cual sea el nombre de la foto, asignas una variable con el nombre de la foto por defecto (ej: $foto_default=foto.jpg) y es esa la que insertas en vez de la que recibes.
  #3 (permalink)  
Antiguo 10/12/2004, 13:19
 
Fecha de Ingreso: diciembre-2004
Mensajes: 32
Antigüedad: 19 años, 4 meses
Puntos: 0
Muchísimas gracias por tu ayuda, te refieres a un chekbox?, llevo muy poco tiempo con este lenguaje del PHP y no sé muy bien como usarlo, de todas maneras y espero que no te parezca mal, no me parece una idea muy buena porque de esa forma el cliente tendría que marcar o desmarcar las casillas cada vez que hiciera la operación y eso podría llevar a errores de olvido y problemas para él, me gustaría saber si tienes tú alguna otra alternativa, yo me decantaría mejor por la opción de no subir nada simplemente ahora solo subo dos fotos y nada más, no sé voy a buscar otras alternativas y te repito que te agradezco muchísimo tu ayuda y espero que no te parezca mal pero es que no me convence mucho, muchas gracias Shute
  #4 (permalink)  
Antiguo 10/12/2004, 13:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tendrías que hacer construcciones tipo:

Código PHP:
if (isset($_FILES['userfile']['tmp_name'])){
// si hay algún nombre de archivo que subió .. entonces procedes a "moverlo" a su destino definitivo:
   
if (!move_uploaded_file(....)){
       
// si no se pudo mover el archivo a su destino definitivo .. mandas el error
       
echo "Error al mover archivo";
   }

// y el resto de lógica que tengas que hacer con ese archivo ...


Te vendría muy bien usar un bucle para tus archivos .. para aplicar por igual todo ese código de creación de tus thumbnails y de la creación de esos registros en tus BD.

De hecho .. si quieres seguir usando el mismo código que usas para tus $_FILE[] con nombres distintos para cada archivo .. te vendría bien definir una función para tus thumbnails y la creación del registro en tu BD que puedas llamar fácilmente ..

Un saludo,
  #5 (permalink)  
Antiguo 10/12/2004, 15:19
 
Fecha de Ingreso: diciembre-2004
Mensajes: 32
Antigüedad: 19 años, 4 meses
Puntos: 0
Soy demasiado novato para poder construir una sentencia de ese tipo, es que mira te comento. El usuario debe tener la opción de subir 4 imagenes acompañadas de otros datos con los cuales no tengo problema pero tengo que tener la opción de que si no necesitan subir ninguna o menos de cuatro imagenes pues no me salte ningún error ya que después tengo que hacer una consulta del tipo que me muestre los datos y las fotos si las tiene y si nó tiene fotos no haya problema, pero la consulta debe ser siempre la misma, muestrame los datos y las fotos si las hubiese y eso si que no lo se hacer, hasta ahora consigo subir unas fotos convertidas automáticamente al tamaño que me interese y con cuatro fotos obligatoriamente más los datos los cuales si no se ponen no me dá error. Ahora me estoy peleando con ese tema de sinó sube todas las fotos y de poder volver a crear otro thumbnail de las imagenes del campo imagen1, imagen2, etc..., en fín se que es muy lioso pero si has entendido algo y ves que me puedes ayudar con algo que veas que yo puedo entender te lo agradecería mucho, gracias de nuevo y salu2
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 23:23.