Foros del Web » Programando para Internet » PHP »

Elegir Carpeta

Estas en el tema de Elegir Carpeta en el foro de PHP en Foros del Web. Hola a todos, tengo una inquietud y es poder elegir a que carpeta del servidor se ira mi imagen que subire, es decir se hace ...
  #1 (permalink)  
Antiguo 17/11/2007, 11:18
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 0
Elegir Carpeta

Hola a todos, tengo una inquietud y es poder elegir a que carpeta del servidor se ira mi imagen que subire, es decir se hace lo de siempre, examinar... selecciono la imagen y por medio de un list/le digo: varios - paraisos - noches - amanecer. Y despues guardo la extension de la imagen en la bd y la estension de la carpeta donde queda.

tengo el codigo para subir una imagen y me guarda la extension en la bd y funciona bien, como hago para adaptarle lo que acabo de decir?.

aqui el formulario de insercion:

Código PHP:
<html>

<
head>

<
title></title>

<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<
META lang=es content="" name=Keywords>

<
META content="" name=Description>

<
META content=worldwide name=coverage>

<
META content=all name=robots>

<
META content=general name=rating>

<
META content="1 days" name=revisit-after>

<
meta name="distribution" content="local">

</script>

<script language="JavaScript1.2">

<!--

top.window.moveTo(0,0);

if (document.all) {

top.window.resizeTo(screen.availWidth,screen.availHeight);

}

else if (document.layers||document.getElementById) {

if (top.window.outerHeight<screen.availHeight||top.window.outerWidth<screen.availWidth){

top.window.outerHeight = screen.availHeight;

top.window.outerWidth = screen.availWidth;

}

}

//-->

</script>

<link rel="stylesheet" href="lightbox.css" type="text/css" media="screen" />

<script type="text/javascript" src="js/prototype.js"></script>

<script type="text/javascript" src="js/scriptaculous.js?load=effects"></script>

<script type="text/javascript" src="js/lightbox.js"></script>

<link href="estilo.css" rel="stylesheet" type="text/css">

<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<link href="../estilo.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Estilo1 {font-size: 16pt}
.Estilo2 {font-weight: bold}
-->
</style>
</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">



<table width="837" height="462" border="0" align="center" cellpadding="0" cellspacing="0" id="principal">

    <tr>

      <td width="2" height="462" class="leftshadow"></td>

        <td width="831" height="462" valign="top" class="leftbox"><p align="center">&nbsp;</p>
          <p align="center"><span class="titulos Estilo2 Estilo1">INSERTAR  IMAGENES</span></p>
          <form enctype="multipart/form-data" action="proceimages.php" method="POST">
            <label>
            <div align="center">
              <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
              <br />
<strong>Insertar imagen</strong>:
<input name="imagen" type="file" />
<input type="submit" name="enviar" value="Enviar" />
</div>
            </label>
          </form>
          <p>&nbsp;</p>
      </td>
        <td width="4" align="center" valign="top" class="watermark">&nbsp;</td>
  </tr>
</table>

</body>

</html> 

este el de procesar

Código PHP:
<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<META lang=es content="" name=Keywords>

<META content="" name=Description>

<META content=worldwide name=coverage>

<META content=all name=robots>

<META content=general name=rating>

<META content="1 days" name=revisit-after>

<meta name="distribution" content="local">

</script>

<script language="JavaScript1.2">

<!--

top.window.moveTo(0,0);

if (document.all) {

top.window.resizeTo(screen.availWidth,screen.availHeight);

}

else if (document.layers||document.getElementById) {

if (top.window.outerHeight<screen.availHeight||top.window.outerWidth<screen.availWidth){

top.window.outerHeight = screen.availHeight;

top.window.outerWidth = screen.availWidth;

}

}

//-->

</script>

<link rel="stylesheet" href="lightbox.css" type="text/css" media="screen" />

<script type="text/javascript" src="js/prototype.js"></script>

<script type="text/javascript" src="js/scriptaculous.js?load=effects"></script>

<script type="text/javascript" src="js/lightbox.js"></script>

<link href="estilo.css" rel="stylesheet" type="text/css">

<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<link href="../estilo.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Estilo1 {font-size: 16pt}
-->
</style>
</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">



<table width="837" height="462" border="0" align="center" cellpadding="0" cellspacing="0" id="principal">

    <tr>

      <td width="2" height="462" class="leftshadow"></td>

        <td width="831" height="462" valign="top" class="leftbox"><p align="center">&nbsp;</p>
          <p align="center"><span class="titulos Estilo2 Estilo1">INSERCION DE IMAGENES</span></p>
          <div align="center">
            <p><strong>Im&aacute;gen recibida</strong></p>
          </div>
          <?php
define
('HOST''localhost');
define('DB''');
define('USERNAME''');
define('PASSWORD''');

$link = @mysql_connect(HOST,USERNAME,PASSWORD);
if (!
$link) {
   die(
'En este momento no hay conexion con la base de datos.');
}
   
mysql_select_db(DB) or die("No se ha seleccionado base de datos.");  
if (isset(
$_POST['enviar'])) {

 
    
$upload_dir '../imagprod/';
    
$upload_file $upload_dir $_FILES['imagen']['name'];
    
$imagen $_FILES['imagen']['name'];

    if (
move_uploaded_file($_FILES['imagen']['tmp_name'], $upload_file)) {
          
        
$query "INSERT imagenes SET imagen='$imagen'";
        
mysql_query($query);

    } else {
           
    }


}
?>
<p align="center">&nbsp;</p>
          <p align="center">&nbsp;</p>
      <p align="center">&nbsp;</p></td>
        <td width="4" align="center" valign="top" class="watermark">&nbsp;</td>
  </tr>
</table>

</body>

</html>


Gracias de antemano
__________________
Mil gracias por sus enseñanzas.

Davincci
  #2 (permalink)  
Antiguo 17/11/2007, 11:55
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Elegir Carpeta

La clave esta en
Código PHP:
move_uploaded_file($_FILES['imagen']['tmp_name'], $upload_file); 
Si revisas el manual de php para la funcion move_uploaded_file() verás que el segundo parámetro no sólo sirve para nombrar a la imagen, sino para ubicarla en algun directorio de nuestro servidor.
Código PHP:
$upload_dir '../imagprod/'
$upload_file $upload_dir $_FILES['imagen']['name']; 
 
if (
move_uploaded_file($_FILES['imagen']['tmp_name'], $upload_file)) {
    
$query "INSERT imagenes SET imagen='$upload_file'"
    
mysql_query($query); 

Asi como lo haces esta bien. La imagen deberia guardarse en la carpeta ../imagprod/... Cual es el problema?

Un saludo,
  #3 (permalink)  
Antiguo 17/11/2007, 12:33
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Elegir Carpeta

Cita:
Asi como lo haces esta bien. La imagen deberia guardarse en la carpeta ../imagprod/... Cual es el problema?

El problema esta en que la imagen que subo va a esa carpeta "imagprod", pero si la imagen que se va a subir pertenece a otra categoria, debe ir a otra carpeta por ejemplo "imagnoeches" y asi hasta diferenciar cuatro categorias, esto lo hago con el fin de tener orden en las imagenes para cada categoria y asi dar los permisos respectivos a cada usuario.


Gracias.
__________________
Mil gracias por sus enseñanzas.

Davincci
  #4 (permalink)  
Antiguo 17/11/2007, 15:25
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Elegir Carpeta

Cita:
Iniciado por davincci Ver Mensaje
[...]
y por medio de un list/le digo: varios - paraisos - noches - amanecer.
[...]
A que te refieres con un list? hablas de un select? pero no figura nada en el formulario. Cómo entonces defines a que categoria va a ir cada imagen?

Bueno, lo unico que tienes que hacer es cambiar el nombre de la carpeta... Algo como:

Código PHP:
//$categoria = "varios";
$upload_dir "../$categoria/"
Pd. La verdad sigo sin entender bien tu problema

Un saludo,
  #5 (permalink)  
Antiguo 17/11/2007, 18:15
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Elegir Carpeta

Hola okram el formulario que esta es para una sola imagen, igual el proceso de alamcenamiento, lo que pregunto es que si al formulario le agrego un select, como hago para que el archivo de proceso me almacene la imagen en la carpeta segun la categoria seleccionada con anterioridad y a la vez me almacene la extension en la bd.
__________________
Mil gracias por sus enseñanzas.

Davincci
  #6 (permalink)  
Antiguo 17/11/2007, 19:18
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Elegir Carpeta

Tu select seria algo asi:

Código HTML:
<select name="categorias">
<option value="1">Varios</option>
<option value="2">Paraisos</option>
<option value="3">Noches</option>
<option value="4">Amanecer</option>
</select> 
y en tu php que procesa el formulario:
Código PHP:
$cats = array(1=>"varios",2=>"paraisos",3=>"noches",4=>"amanecer");
 
$categoria $cats[$_POST['categorias']];
 
$upload_dir "../$categoria/"
Un saludo,
  #7 (permalink)  
Antiguo 18/11/2007, 08:02
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Elegir Carpeta

Gracias okram, pero mira que siempre termina en la misma carpeta
Cita:
$upload_dir = "../$categoria/";
lo que quisiera hacer es esto:

Código PHP:

Si el select es 
== Varios

$upload_dir 
"../Varios/";  e insertar la extension de la imagen en la tabla Varios.
 

Si el select es == Paraisos

$upload_dir 
"../Paraisos/"e insertar la extension de la imagen en la tabla Paraisos.

Si el select es == Noches

$upload_dir 
"../Noches/"e insertar la extension de la imagen en la tabla Noches.

Si el select es == Amanecer

$upload_dir 
"../Amanecer/"e insertar la extension de la imagen en la tabla Amaneces

En conclusion, lo puedo hacer pero para ello debo utilizar cuatro formularios para subir imagenes y cuatro para procesar la subida de archivos, no sera mejor en solo dos archivos hacer este proceso?.



Gracias.
__________________
Mil gracias por sus enseñanzas.

Davincci
  #8 (permalink)  
Antiguo 18/11/2007, 11:56
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Elegir Carpeta

Pues eso mismo hice en el script del post anterior.... Te lo pongo de otra manera:

Formulario:
Código HTML:
<select name="categorias">
<option value="1">Varios</option>
<option value="2">Paraisos</option>
<option value="3">Noches</option>
<option value="4">Amanecer</option>
</select> 
Procesamiento:
Código PHP:
//Lista de carpetas segun la categoria
$cats = array(
  
1=>"../Varios/",
  
2=>"../Paraisos/",
  
3=>"../Noches/",
  
4=>"../Amanecer/"
);
 
//Lista de tablas destino segun la categoria
$tbls = array(
  
1=>"Varios",
  
2=>"Paraisos",
  
3=>"Noches",
  
4=>"Amanecer"
);
 
$upload_dir $cats[$_POST['categorias']];
$upload_file $upload_dir.$_FILES['imagen']['name'];
$tabla $tbls[$_POST['categorias']];
 
if (
move_uploaded_file($_FILES['imagen']['tmp_name'], $upload_file)) { 
    
$query "INSERT INTO $tabla SET imagen='$imagen'"
    
mysql_query($query); 
} else { 
 

Si tienes algun problema, no dudes en postear nuevamente

A que te refieres con extension?

Un saludo,
  #9 (permalink)  
Antiguo 18/11/2007, 12:12
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Elegir Carpeta

Lo probare y te comentare como me va, muchas gracias por tu ayuda.
__________________
Mil gracias por sus enseñanzas.

Davincci
  #10 (permalink)  
Antiguo 18/11/2007, 13:01
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Elegir Carpeta

mira cambie solo algunas cosas de lo que me diste y sube los archivos bien a cada carpeta lo unico malo es que en la tabla me coloca el nombre de archivo como temporal C:WINDOWSTEMPphp28.tmp y no como fijo, este es el codigo modificado:

[PHP]
</table>
<p>&nbsp;</p>
</div>
<?php
define('HOST', 'localhost');
define('DB', '');
define('USERNAME', '');
define('PASSWORD', '');

$link = @mysql_connect(HOST,USERNAME,PASSWORD);
if (!$link) {
die('En este momento no hay conexion con la base de datos.');
}

mysql_select_db(DB) or die("No se ha seleccionado base de datos.");
if (isset($_POST['enviar'])) {


//Lista de carpetas segun la categoria
$cats = array(
1=>"../desadmin/",
2=>"../desaca/",
3=>"../desmun/",
4=>"../despub/"
);

//Lista de tablas destino segun la categoria
$tabla = array(
1=>"desadmin",
2=>"desaca",
3=>"desmun",
4=>"despub"
);

$upload_dir = $cats[$_POST['categorias']];
$upload_file = $upload_dir.$_FILES['imagen']['name'];
$tabla = $tabla[$_POST['categorias']];

if (move_uploaded_file($_FILES['imagen']['tmp_name'], $upload_file)) {
$query = "INSERT INTO $tabla SET archivo='$imagen'";
mysql_query($query);
} else {

}


}
?>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p></td>
<td width="4" align="center" valign="top" class="watermark">&nbsp;</td>
</tr>
</table>
PHP]

Gracias por la ayuda que me puedas birndar en este paso.
__________________
Mil gracias por sus enseñanzas.

Davincci
  #11 (permalink)  
Antiguo 18/11/2007, 13:35
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Elegir Carpeta

Código PHP:
$query "INSERT INTO $tabla SET archivo='$upload_file'"
Un saludo,
  #12 (permalink)  
Antiguo 18/11/2007, 14:50
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Elegir Carpeta

Muchas gracias okram, tu ayuda me ha sido de mucho valor.


Saludos.
__________________
Mil gracias por sus enseñanzas.

Davincci
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 13:06.