Foros del Web » Programando para Internet » PHP »

Casillas de Input para Upload

Estas en el tema de Casillas de Input para Upload en el foro de PHP en Foros del Web. Que tal, Busco algo sencillo. Un usuario requiere hacer un Upload, a veces son 1 archivo o 4 archivos o 7 archivos. Conocen algún script ...
  #1 (permalink)  
Antiguo 21/07/2005, 15:23
 
Fecha de Ingreso: agosto-2004
Ubicación: NASA, MIT
Mensajes: 209
Antigüedad: 13 años, 4 meses
Puntos: 0
Casillas de Input para Upload

Que tal,

Busco algo sencillo.

Un usuario requiere hacer un Upload, a veces son 1 archivo o 4 archivos o 7 archivos.

Conocen algún script donde el usuario pueda decir 5 y automáticamnete se creen las casillas de input ???

Gracias desde ya.
  #2 (permalink)  
Antiguo 21/07/2005, 16:02
Avatar de abe_k  
Fecha de Ingreso: diciembre-2004
Mensajes: 286
Antigüedad: 13 años
Puntos: 2
uploads

No puede ser muy dificil.

creas una casilla de texto en un form y que el usuario ponga el numero. Al darle al submit que refresque toda la pantalla i con un bucle (en funcion del numero) generar los input type=file.

Algo asi:

Código:
<?php

echo "<form name='frm1' method='post' action=respuesta.php>\n";
echo "<input type='text' name='numero'>\n";
echo "<input type='submit' name='numero' value='enviar'>\n";
.......
Luego en respuesta.php

Código:
$num = $_POST['numero'];

echo"<form name='frm2' method='post'  enctype='multipart/form-data' action='subir.php'>\n";
for($i =0;$i<$num;$i++){
echo"<input type='file' name='numero".$num."'>\n";
}
echo "<input type='submit' name='numero' value='enviar'>\n";
.....
Y finalmente en subir.php


Código:
$file1=$_FILES['numero1'];
//dir del server donde guardar los ficheros
$dir_up = 'modules/events/images/';
			
			$image_name = $_FILES['numero1']['name'];
			
			$image_tmp = $imatge['tmp_name'];
			
			if ( move_uploaded_file($image_tmp,$dir_up.$image_name)){
				echo"Subido con exito";
......
Mas o menos, te vale?
__________________
abe_k

Si quieres visitar Andorra, consulta la guia de este pequeño pais y conseguiras toda la información que necesites. La guia del visitante en Andorra
  #3 (permalink)  
Antiguo 21/07/2005, 16:05
okram
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo do...while...

puedes usar la funcion do...while(condicion). Puedes leer un poco mas sobre esta funcion aqui:
http://www.desarrolloweb.com/articulos/567.php?manual=20

Código PHP:
<form action=procesar.php method=post>
 
<?
 
if(!isset($campos)){
$campos == 1//Seteamos el numero por defecto de campos
}

 
$i 1//Seteamos el valor por defalut de $i
 
do {
     echo 
"<input name=\"attach".$i."\" type=\"file\"><br />"
     
$i++;
     }
 while (
$i <= $campos
?>
 
<input type=submit value="Subir archivos">
</form>


Suponiendo que tu pagina se llama upload.php , entonces si no incluye ninguna variable, osea es simplemente upload.php, el valor por defecto es 1(puedes camnbia este valor). Si estableces valores para la variable $campos (upload.php?campos=n), entonces habran n campos. Te hice inicialmente un codigo qur usaba solo la funcion while, pero se presento problemas cuando el valor de $campos no era numerico, asi que te cambie a la funcion do...while, de tal modo que si campos tiene un valor no numerico, el valor por defalut sera 1.

Ademnas te hice un arreglo para que cada campo tenga un nombre distinto. Asi si son 3 campos, sus nombres seran attach1, attach2 y attach3. Espero ue te sirva

Cualquier duda o problema postealos aqui para ayudarte

Salu2
  #4 (permalink)  
Antiguo 21/07/2005, 16:44
 
Fecha de Ingreso: agosto-2004
Ubicación: NASA, MIT
Mensajes: 209
Antigüedad: 13 años, 4 meses
Puntos: 0
Muchas Gracias Abe_k . Okram, pero no logro que funcione con ?campos=5
  #5 (permalink)  
Antiguo 21/07/2005, 16:50
okram
Invitado
 
Mensajes: n/a
Puntos:
te manda algun error?
  #6 (permalink)  
Antiguo 21/07/2005, 16:51
okram
Invitado
 
Mensajes: n/a
Puntos:
lo estoy probando justo ahora y si me resulta...
  #7 (permalink)  
Antiguo 21/07/2005, 16:57
 
Fecha de Ingreso: agosto-2004
Ubicación: NASA, MIT
Mensajes: 209
Antigüedad: 13 años, 4 meses
Puntos: 0
Mira lo que tengo:

http://img335.imageshack.us/my.php?image=upload6qt.jpg
  #8 (permalink)  
Antiguo 21/07/2005, 17:09
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
El servidor que estás usando tendrá la dir ectiva register_globals en Off?

De pronto puede ser el problema, usa el super array $_POST, espero que funcione.

Ah, lo de la variable campos si la estas trayendo desde la url (o desde la barra de direcciones) usa $_GET['campos'].
__________________
Ahora T4X es
WinGFX!!!!!

Última edición por T4X; 21/07/2005 a las 17:17
  #9 (permalink)  
Antiguo 21/07/2005, 17:17
 
Fecha de Ingreso: agosto-2004
Ubicación: NASA, MIT
Mensajes: 209
Antigüedad: 13 años, 4 meses
Puntos: 0
Lo cambié y no funciona ¿Lo hice mal?:

Código PHP:
<form action=procesar.php method=post>

<?

if(!isset($_POST['campos'])){
$campos == 1//Seteamos el numero por defecto de campos
}

$i 1//Seteamos el valor por defalut de $i
do {
     echo 
"<input name=\"attach".$i."\" type=\"file\"><br />"
     
$i++;
     }
while (
$i <= $campos
?>
  #10 (permalink)  
Antiguo 21/07/2005, 17:22
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
Algo te falto en la etiqueta form

Debes establecer el atributo enctype="multipart/form-data" como el que esta aqui, recuerda que sin eso lo que hace el form es enviar solo datos, recuerda SOLO DATOS!
__________________
Ahora T4X es
WinGFX!!!!!
  #11 (permalink)  
Antiguo 21/07/2005, 17:25
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
Ah, y con relacion al codigo que tu envias:

Código PHP:
<?

if(!isset($_POST['campos'])){
$campos == 1//Seteamos el numero por defecto de campos
}

$i 1//Seteamos el valor por defalut de $i
do {
     echo 
"<input name=\"attach".$i."\" type=\"file\"><br />";
     
$i++;
     }
while (
$i <= $campos)
?>
Estas trayendo la variable via POST?

Usa asi (a mi me sirve):

Código PHP:
<?

$campos 
$_REQUEST['campos'];

if(!isset(
$campos)){
$campos == 1//Seteamos el numero por defecto de campos
}

$i 1//Seteamos el valor por defalut de $i
do {
     echo 
"<input name=\"attach".$i."\" type=\"file\"><br />";
     
$i++;
     }
while (
$i <= $campos)
?>
Observa la variable $_REQUEST, esta es una matriz asociativa que consiste en los contenidos de $_GET, $_POST, y $_COOKIE.
__________________
Ahora T4X es
WinGFX!!!!!
  #12 (permalink)  
Antiguo 21/07/2005, 17:43
 
Fecha de Ingreso: agosto-2004
Ubicación: NASA, MIT
Mensajes: 209
Antigüedad: 13 años, 4 meses
Puntos: 0
Claro que si paso el valor por url debe ser con GET (el efecto del copy paste)

Hechos los cambios, ya me funciona:

Código PHP:
<form action=procesar.php method=post enctype="multipart/form-data">

<?

$campos 
$_GET['campos'];

if(!isset(
$campos)){
$campos == 1//Seteamos el numero por defecto de campos
}

$i 1//Seteamos el valor por defalut de $i
do {
     echo 
"<input name=\"attach".$i."\" type=\"file\"><br />";
     
$i++;
     }
while (
$i <= $campos)
?> 

<input type=submit value="Subir archivos">
</form>
  #13 (permalink)  
Antiguo 21/07/2005, 17:44
 
Fecha de Ingreso: agosto-2004
Ubicación: NASA, MIT
Mensajes: 209
Antigüedad: 13 años, 4 meses
Puntos: 0
Ahora como pongo un campo de texto para que reciba la entrada de la cantidad de archivos y Auto-Procese la pagina ???
  #14 (permalink)  
Antiguo 21/07/2005, 18:44
okram
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Post # 100

Este es mi post numero 100 en este foro =P.

Bueno aqui te dejo este arreglo para que tu visitante procese la cantidad de campos que desea.

Te dejo 2 formas. Esta PRIMERA es usando un campo select

formulario.php, donde estan los campos file
Código HTML:
<form name="setnumcampos" action="set_campos.php" method="post">
<SELECT name="numero">
<OPTION VALUE="">Número de archivos que desea subir
<OPTION VALUE="">------------------------
<OPTION VALUE="1">1
<OPTION VALUE="2">2
<OPTION VALUE="3">3
<OPTION VALUE="4">4
<OPTION VALUE="5">5
<OPTION VALUE="10">10
<OPTION VALUE="15">15
<OPTION VALUE="20">20
<OPTION VALUE="30">30
<OPTION VALUE="50">50
</SELECT><br />
<input type=submit name=submit value=" Actualizar formulario ">
</form> 
y SEGUNDO, puedes usar un campo de texto

Código HTML:
<form name="setnumcampos" action="set_campos.php" method="post">
Escriba el numero de archivos que desea subir =):&nbsp;&nbsp;
<input type="text" name="numero">&nbsp;
<input type="submit" name="submit" value=" Actualizar formulario ">
</form> 
En ambos casos los formularios van hacia la pagina set_campos.php

set_campos.php
Código PHP:
<?
if($_POST['numero'] !== ""//Comprobamos que existen datos en esa variable
{
$set_num=$_POST['numero']; //Establecemos la variable $set_num
header("Location: formulario.php?campos=".$set_num); //Redirijimos hacia formulario.php, pero ya con la variable campos definida
}
else
{
header("Location: formulario.php?"); //como no hay datos en $_POST['numero'], simplemente redirijimos a la pagina anterior
}
?>
Bueno ahi tienes 2 formas de hacer que tu visitante elija el numero de campos

Salu2
  #15 (permalink)  
Antiguo 22/07/2005, 14:43
okram
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo

o en ves de crear otra pagina puedes procesar este ultimo formulario en la misma pagina:

formulario.php, donde estan los campos file
Código HTML:
<form name="setnumcampos" action="formulario.php" method="post">
Escriba el numero de archivos que desea subir =):&nbsp;&nbsp;
<input type="text" name="numero">&nbsp;
<input type="submit" name="submit" value=" Actualizar formulario ">
</form> 
y en el codigo que te di antes reemplazas la linea
Código PHP:
$campos $_GET['campos']; 
reemplazas por
Código PHP:
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$campos $_POST['numero'];
} else {
$campos 1;

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 16:13.