Foros del Web » Programando para Internet » PHP »

formulario de subida

Estas en el tema de formulario de subida en el foro de PHP en Foros del Web. Buenas, he creado un formulario simple pero tiene 2 apartados donde quiero que suba archivos a la carpeta donde se encuentra el formulario. El formulario ...
  #1 (permalink)  
Antiguo 28/02/2008, 13:31
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Pregunta formulario de subida

Buenas, he creado un formulario simple pero tiene 2 apartados donde quiero que suba archivos a la carpeta donde se encuentra el formulario.

El formulario es este:

Código PHP:
<div align="center">
<
form name="torrent" action="insert.php" method="post">
<
table width="400">
<
tr align="center">
<
td>Título: <table><tr><td> <input type="text" name="titulo"><br><p>&nbsp;</p></td></tr></table>
</
td>
<
td>Imagen: <table><tr><td> <input type="file" name="imagen" style="width:135px"><br><p>&nbsp;</p></td></tr></table>
</
td>
</
tr>
<
tr align="center">
<
td>Género: <table><tr><td> <input type="text" name="genero"><br><p>&nbsp;</p></td></tr></table>
</
td>
<
td>Enlace: <table><tr><td> <input type="file" name="enlace" style="width:135px"><br><p>&nbsp;</p></td></tr></table>
</
td>
</
tr>
<
tr align="center">
<
td>Tipo: <table><tr><td>   <select name="tipo" style="width:146px">
    <
option>Torrent</option>
    <
option>Pando</option>
      </
select><br><p>&nbsp;</p></td></tr></table>
</
td>
<
td>Tu nombre o alias: <table><tr><td> <input type="text" name="autor"><br><p>&nbsp;</p></td></tr></table>
</
tr>
</
table>
<
table>
<
tr align="center">
<
td>Descripcion o Sinopsis: <table><tr align="center"><td> <textarea name="descripcion" cols="60" rows="10"></textarea><br><p>&nbsp;</p></td></tr></table>
</
td>
</
tr>
</
table>
<
table>
<
tr><td align="center">
<
input type="submit" value="Enviar" id="boton">
</
td></tr>
</
table>
</
form>
</
div
Yo lo que quiero es que en imagen y en enlace se pueda subir un archivo, y en la base de datos guarde la ruta de ese archivo.

¿Cómo lo hago?
  #2 (permalink)  
Antiguo 28/02/2008, 13:37
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: formulario de subida

mirate en la segunda pagina de este foro un tutorial que he hecho hoy sobtre ese mismo tema
te ira bien
el titulo del post es asi

Aporte: Aplicacion de centro de descargas. parte 1
esta completo
  #3 (permalink)  
Antiguo 28/02/2008, 13:47
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Re: formulario de subida

Ese codigo lo he visto esta mañana y lo he probado, pero hay un problema.

Si has visto mi código, incluye varios campos, de los cuales solo 2 son para subir archivos, el resto no.

No se por qué pero en mi formulario, al poner enctype="multipart/form-data" me da error.
  #4 (permalink)  
Antiguo 28/02/2008, 13:56
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: formulario de subida

la orden
enctype="multipart/form-data
es necesaria para enviar archivos por form
igual tu problema es que intentas subir dos archivo, yo subo de uno en uno y la aplicacion me funciona perfecta.
  #5 (permalink)  
Antiguo 28/02/2008, 13:56
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: formulario de subida

revisa bien ese codigo quete he dicho, va de maravilla
  #6 (permalink)  
Antiguo 28/02/2008, 14:07
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Re: formulario de subida

No hay otra forma más facil?

Es que el código que usas para subir un archivo es doble grande que todo el código que yo uso para introducir todos los datos.

Mi formulario no es para subir un archivo y ya está, tiene que añadir información en la base de datos y no se como juntar las 2 partes.

Yo tengo un formulario simple, donde añade una serie de valores en la base de datos. Lo que quiero es que en imagen y en enlace se pueda subir un archivo a una carpeta en concreto, y además en la base de datos se quede guardada la ruta de los 2 archivos.
  #7 (permalink)  
Antiguo 28/02/2008, 14:28
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: formulario de subida

aqui lo tienes con mas campos de form y puedes introducir los que qieras.
hay campo file para subir archivo
campo para el titulo
campo para descripcion y a si los que quieras, y a la base de datos le mandas un query con los datos que tu quieras, mas simple es dificil.


<?php
if (isset($_POST['submit'])) {
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) {


// me verifica haya sido cargado el archivo
$ruta_destino = "../cevit/archivos/";
if(move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta_destino . $_FILES['fichero']['name'])) { // se coloca en su lugar final
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$ruta_destino . $_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
echo "<br><hr><br>";


// Aqui es donde tendre que insertar en la BD la variable $_FILES['fichero']['name']



mysql_connect('localhost','user','9999')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());





$nombre_archivo = $_POST["nombre_archivo"];
$description = $_POST["description"];


$query = "INSERT INTO archivos
VALUES (0,'$nombre_archivo','$description' , '".$_FILES['fichero']['name']."','".$_FILES['fichero']['type']."', '".$_FILES['fichero']['size']."')";

mysql_query($query) or die(mysql_error());
echo "El archivo '".$nombre_archivo."' ha sido registrado de manera satisfactoria.<br />";





}
}

// A continuación el formulario
}
?>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
Archivo: <input name="fichero" type="file" size="150" maxlength="150">
<br> Nombre: <input name="nombre_archivo" type="text" size="70" maxlength="70">
<br> Descripcion: <input name="description" type="text" size="100" maxlength="250">
<br>
<input name="submit" type="submit" value="Upload!">
</form> </body>
  #8 (permalink)  
Antiguo 28/02/2008, 14:29
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: formulario de subida

aqui lo tienes con mas campos de form y puedes introducir los que qieras.
hay campo file para subir archivo
campo para el titulo
campo para descripcion y a si los que quieras, y a la base de datos le mandas un query con los datos que tu quieras, mas simple es dificil.


Código PHP:
<?php 
if (isset($_POST['submit'])) {  
    if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
    
    
     
// me verifica haya sido cargado el archivo 
        
$ruta_destino "../cevit/archivos/";
        if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta_destino $_FILES['fichero']['name'])) { // se coloca en su lugar final 
                    
echo "<b>Upload exitoso!. Datos:</b><br>"
            echo 
"Nombre: <i><a href=\"".$ruta_destino $_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>"
            echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>"
                    echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>"
                        echo 
"<br><hr><br>"
                        

// Aqui es donde tendre que insertar en la BD la variable $_FILES['fichero']['name']



mysql_connect('localhost','user','9999')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());


 
 
 
 
$nombre_archivo  $_POST["nombre_archivo"];
 
$description  $_POST["description"];


$query "INSERT INTO archivos 
    VALUES (0,'$nombre_archivo','$description' , '"
.$_FILES['fichero']['name']."','".$_FILES['fichero']['type']."', '".$_FILES['fichero']['size']."')";

                
mysql_query($query) or die(mysql_error());
                echo 
"El archivo '".$nombre_archivo."' ha sido registrado de manera satisfactoria.<br />";
                
    


                     
        } 
    } 
 
// A continuación el formulario 
}
?>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'?>" method="post" enctype="multipart/form-data"> 
    Archivo: <input name="fichero" type="file" size="150" maxlength="150"> 
    <br> Nombre: <input name="nombre_archivo" type="text" size="70" maxlength="70">
    <br> Descripcion: <input name="description" type="text" size="100" maxlength="250">
    <br>
  <input name="submit" type="submit" value="Upload!">  
</form> </body>
  #9 (permalink)  
Antiguo 28/02/2008, 15:45
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Re: formulario de subida

Muchas gracias por tu ayuda. Voy a ponerme a ello a ver si sale y cuando lo consuiga te aviso ;)
  #10 (permalink)  
Antiguo 28/02/2008, 15:58
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: formulario de subida

Claro que te saldra,

el codigo funciona perfecto ya veras, solo has de tener los permisos correspondientes en la carpeta donde vayas a guardar los archivos, permisos de escritura, en el panel de control de tu hostig
  #11 (permalink)  
Antiguo 28/02/2008, 16:07
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Re: formulario de subida

Me falla en lo de guardarlo en la base de datos. Supongo que tengo que adaptarlo a mi base de datos y como no entiendo ni se como funciona
Código:
$query = "INSERT INTO archivos 
    VALUES (0,'$nombre_archivo','$description' , '".$_FILES['fichero']['name']."','".$_FILES['fichero']['type']."', '".$_FILES['fichero']['size']."')";
pues no puedo adaptarlo.

El archivo lo sube bien.
  #12 (permalink)  
Antiguo 28/02/2008, 16:34
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: formulario de subida

para adaptar la base de datos borra la tabla que estabas usando y ve al phpMyAdmin e importa esata tabla:


este archivo lo has de nombrar como tabla.sql , despues lo importas en la base de datos y te ceara la tabla que necesitas

CREATE TABLE `archivos` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(120) NOT NULL,
`description` varchar(250) NOT NULL,
`ruta` varchar(100) NOT NULL,
`tipo` varchar(50) NOT NULL,
`size` int(50) NOT NULL,
PRIMARY KEY (`id`)
  #13 (permalink)  
Antiguo 28/02/2008, 18:14
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Re: formulario de subida

Pero yo lo que quiero es comprender como funciona esa parte para usarla con mi base de datos. Los valores de la tabla que indicas ahi no me sirven.

Por ejemplo, a mi el tipo o el tamaño no me importa ni me sirve para nada.

Yo en mi base de datos tengo: id, titulo, imagen, enlace, genero, tipo, autor, descripcion.

en imagen tiene que poner la ruta de la imagen subida.
  #14 (permalink)  
Antiguo 29/02/2008, 05:19
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: formulario de subida

Código PHP:
<?php $query "INSERT INTO archivos 
    VALUES (0,'$titulo','$enlace' , '"
.$_FILES['fichero']['name']."')";
    
    
?>
mira, 0 es la id de la talbla que ha de ser auto_increment,es el que va primero en la tabla de la BD

$titulo variable que viene desde el form contiene el titulo.


$_FILES['fichero']['name'] variable que contiene la ruta

Ya te he quitado el tipo y el tamaño

esta consulta a base de datos lo que hace es

introducior en la BD los VALUES (INTO archivos VALUES) en el mismo orden que los tienes en la BD

si en tu base tienes: id, titulo, imagen, enlace, genero, tipo, autor, descripcion
escribe,

Código PHP:
  $query "INSERT INTO archivos     VALUES (0,'$titulo','$imagen' , ' ".$_FILES['fichero']['name']." ','$genero','$tipo', '$autor', '$descripcion')"
  #15 (permalink)  
Antiguo 01/03/2008, 16:20
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Re: formulario de subida

Vale, muchas gracias. Ya me funciona, pero ahora tengo una duda más.

En este formulario tengo unos cuantos datos que se ponen manualmente y uno solo que es el que sube el archivo.

¿Se puede hacer que se suban 2 archivos?
  #16 (permalink)  
Antiguo 02/03/2008, 05:31
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: formulario de subida

eso no no se, prueba a poner dos campos de subiga de archivos, pero me imagino que tendras que duplicar las variables que envia el form con respecto a los archivos y duplica o añadir un archivo nuievo a la subida temporal, vaya un lio

si subes dos es doble de todo, dos titulos, dos caracteristicas, dos de lo que sea y que lo almacene en la db bueno, de uno en uno me va bien.
  #17 (permalink)  
Antiguo 03/03/2008, 15:03
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Re: formulario de subida

Una cosa, como puedo hacer par dar un mensaje de error si se dejan algún campo vacio?
  #18 (permalink)  
Antiguo 03/03/2008, 15:13
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: formulario de subida

Holas :)

Sí se puede subir más de un archivo en un mismo formulario. En tu caso son sólo 2, así que no hay problema. Parecerá que tendrás que hacer doble trabajo, pero con sólo programar bien uno y luego copiar y cambiar el nombre de las variables todo irá bien.
Siempre pueden enviar/recibir los datos es un arreglo y subirlos mediante un ciclo, el cual se escribe una sola vez.

Para la última pregunta, usa Javascript para corroborar si todos los campos obligatorios de tu formulario fueron llenados. No uses PHP para validar porque es engorroso que la página se cargue y luego te aparezca el mensajito de "Falta este o cual campo", con lo que hay que hacer todo de nuevo, si es que no guardaste los valores antes y los vuelves a poner en el formulario......

Código HTML:
<!--Esto en el HEAD de la página-->
<script language="javascript1.2" type="type/javascript">
 function Revisar()
 {
   var f = document.getElementById("formulario");
  
   // Revisa un campo: repite esto cambiando por los nombre de campos obligatorios:
   if (f.campo1.value == "")
  {
    alert("Falta el campo 1");
    f.campo1.focus();
    return false
  }
 }
</script>

<!--Esto en el BODY de la página-->

<form id="formulario" onsubmit="return Revisar()">
 (Contenido del Formulario)
  Campo 1 <input type="text" name="campo1"> <br>
  <input type="submit" value="Enviar">
</form> 
Puedes cambiar el llamado a la función Revisar desde el evento onsubmit que puse yo, al evento onclick de un botón o donde quieras.
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #19 (permalink)  
Antiguo 04/03/2008, 14:01
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Re: formulario de subida

Muchas gracias por tu ayuda. Voy a probarlo y te cuento ;)
  #20 (permalink)  
Antiguo 11/03/2008, 13:26
 
Fecha de Ingreso: enero-2008
Mensajes: 97
Antigüedad: 16 años, 3 meses
Puntos: 3
Re: formulario de subida

No hace nada el java... ni bien ni mal, como si no estubiera...
  #21 (permalink)  
Antiguo 11/03/2008, 14:35
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: formulario de subida

Ups! Tienes razón, es porque me he pelado una parte del código, sorry. Aquí está corregido:

Código HTML:
<!--Esto en el HEAD de la página-->
<script language="javascript1.2" type="text/javascript">
 function Revisar()
 {
   var f = document.getElementById("formulario");
  
   // Revisa un campo: repite esto cambiando por los nombre de campos obligatorios:
   if (f.campo1.value == "")
  {
    alert("Falta el campo 1");
    f.campo1.focus();
    return false
  }
 }
</script>

<!--Esto en el BODY de la página-->

<form id="formulario" onsubmit="return Revisar()">
 (Contenido del Formulario)
  Campo 1 <input type="text" name="campo1"> <br>
  <input type="submit" value="Enviar">
</form> 
Me equivoqué donde puse
Código:
<script language="javascript1.2" type="text/javascript">
: había puesto "type" en vez de "text"... uff...
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
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 03:11.