Foros del Web » Programando para Internet » PHP »

Subir varios ficheros adjuntos (fotos) a una Base de datos

Estas en el tema de Subir varios ficheros adjuntos (fotos) a una Base de datos en el foro de PHP en Foros del Web. Hola: despues de mucho buscar por internet no termino de dar con lo que necesito, o al menos no se ajusta totalmente o yo no ...
  #1 (permalink)  
Antiguo 14/03/2013, 17:19
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Subir varios ficheros adjuntos (fotos) a una Base de datos

Hola:

despues de mucho buscar por internet no termino de dar con lo que necesito, o al menos no se ajusta totalmente o yo no soy capaz de hacerlo andar.

Quiero un formulario en el que permita subir un numero N de fotos a una base de datos, siendo N un numero indeterminado de fotos.

He dado con algun formulario para enviarlas por correo, pero no para guarda la informacion en una base de datos.

Un saludo
  #2 (permalink)  
Antiguo 14/03/2013, 17:27
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

y gracias de antemano

Última edición por miriamgomez; 14/03/2013 a las 17:29 Razón: era una contestacion a un post que ha desaparecido
  #3 (permalink)  
Antiguo 14/03/2013, 18:03
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

Qué es lo que quieres guardar en la base de datos?
a) Directamente la imagen
b) Sólo la ruta al archivo en el host

a) Hay un tutorial muy antiguo, pero te puede servir como base: http://www.forosdelweb.com/f18/tutor...inario-127775/
b) Hay muchos ejemplos aquí en el foro, es fácil encontrarlos usando el buscador
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 15/03/2013, 00:37
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

hola:

Gracias por tu respuesta:

la idea que tenia es de guardar la ruta, tenia entendido que era lo mejor.

a) Voy a probar el tutorial que has comento, luego te cuento como me ha ido-

b) es cierto que hay varios pero no he conseguido hacer andar los que he visto o al menos yo no he sabido, Por eso recurri a vosotros por si conociais alguno sencillo y que reuniera lo que necesito.

Un saludo
  #5 (permalink)  
Antiguo 15/03/2013, 00:59
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

Como te dije probe el tutorial que me recomendastes, aunque esta muy bien, no es justo lo que que busco, por que solo se sube una imagen.

Sabes de algun otro que sirva para subir varias imagenes en un mismo "envio"

Un saludo
  #6 (permalink)  
Antiguo 15/03/2013, 03:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

De hecho, es más conveniente guardar las rutas que las imágenes, pero, como no lo especificaste, por eso pregunté cuál era tu intención.

Usando el buscador llegué fácilmente a esto: http://www.forosdelweb.com/f18/uploa...5/#post4237091

Revísalo y adáptalo a tus necesidades; generalmente copiar y pegar no es muy aconsejable.

Si al probarlo tienes algún problema, es mejor si muestras el código que no te funciona para tratar de ayudarte.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 15/03/2013, 04:26
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

Vamos mejorando¡¡¡¡ muchas gracias.

Solo un par de cosas, el numero de imagenes a subir parece fijo ademas sino se rellena dan como error.

Conoces algun otro que el numero no sea fijo, vamos que se puedan añadir los datos adjuntos en funcion de la necesidad.

http://tiendamotos.info/varios/uploader.php
  #8 (permalink)  
Antiguo 15/03/2013, 04:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

Debes revisar la validación, basta verificar $_FILES['archivo']['error'], si es cero, el archivo se subió correctamente, si es 4, no se seleccionó archivo y, si es otro número, consulta el manual de PHP para los códigos de error.

Lo de agregar campos no es tan difícil, con un poco de Javascript puedes lograrlo; revisa el código fuente del enlace que pusiste y de ahí copias y adaptas a tus necesidades.
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 15/03/2013, 05:48
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

hola:

gracias de nuevo.

He intentado hacer lo que comentabas de unir los dos codigos, pero no he sido capaz

He tratado de resumir el codigo para ver si me podeis ayudar un poco

Este es el javascript:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. var numero = 0;
  3.  
  4. // Funciones comunes
  5. c= function (tag) { // Crea un elemento
  6.    return document.createElement(tag);
  7. }
  8. d = function (id) { // Retorna un elemento en base al id
  9.    return document.getElementById(id);
  10. }
  11. e = function (evt) { // Retorna el evento
  12.    return (!evt) ? event : evt;
  13. }
  14. f = function (evt) { // Retorna el objeto que genera el evento
  15.    return evt.srcElement ?  evt.srcElement : evt.target;
  16. }
  17.  
  18. addField = function () {
  19.    container = d('files');
  20.    
  21.    span = c('SPAN');
  22.    span.className = 'file';
  23.    span.id = 'file' + (++numero);
  24.  
  25.    field = c('INPUT');  
  26.    field.name = 'archivos[]';
  27.    field.type = 'file';
  28.    
  29.    a = c('A');
  30.    a.name = span.id;
  31.    a.href = '#';
  32.    a.onclick = removeField;
  33.    a.innerHTML = 'Quitar';
  34.  
  35.    span.appendChild(field);
  36.    span.appendChild(a);
  37.    container.appendChild(span);
  38. }
  39. removeField = function (evt) {
  40.    lnk = f(e(evt));
  41.    span = d(lnk.name);
  42.    span.parentNode.removeChild(span);
  43. }
  44. </script>

Este es el trozo del formulario donde se cargan las fotos:

Código HTML:
Ver original
  1. <dt><label>Archivos Adjuntos:</label></dt>
  2.         <dd><div id="files"></div></dd>
  3.         <dd><a href="#" onclick="addField()" accesskey="5">A&ntilde;adir Archivo</a></dd>
  4.         <dd><input type="submit" value="Enviar" id="postback" name="postback" accesskey="6" /></dd>

Y este es el codigo original al cual habria que "acoplarlo"
Código PHP:
<?php 
$conexionn 
mysql_connect("localhost","user","pass"); //Datos de Acceso
mysql_select_db('base'); //Base de datos
 
if ($_POST["action"] == "upload") {
    
$Descripcion=$_POST[Descripcion];
    
$Datos[Insert]="INSERT INTO viviendas VALUES('' , '".$_POST[Vivienda]."' , '".$_POST[Descripcion]."')";
    
$Datos[Consulta]=mysql_query($Datos[Insert]);
    
$Datos[Consulta]=mysql_query('SELECT LAST_INSERT_ID()');
    
$IDNV=mysql_result($Datos[Consulta],0);
    for (
$i=1;$i<=10;$i++){
        
$IDIMG='IMG'.$i;
        
$Extencion explode("."$_FILES[$IDIMG]['name']);
        
$NombreNuevo='Img-'.$IDNV.'-'.rand(030).rand(030).rand(030).'.'.$Extencion[1];        
        
$tamano $_FILES[$IDIMG]['size'];
        
$archivo $_FILES[$IDIMG]['name']; 
        if (
$archivo != "") {
            
$destino =  "Img-Viviendas/".$NombreNuevo;
            if (
copy($_FILES[$IDIMG]['tmp_name'],$destino)) {
                
$status.= "Archivo subido: <b>".$archivo."</b> <br />";
                
$Datos[Insert]="INSERT INTO imagenes VALUES('".$IDNV."' , '".$NombreNuevo."' , '".$_POST['Descripcion'.$IDIMG]."')";
                
$Datos[Consulta]=mysql_query($Datos[Insert]);
            } else {
                
$status "Error al subir el archivo";
            }
        } else {
            
$status.= "Error Archivo No Encontrado <br />";
}   }   }
?>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
 
   <b>Sistema de carga de archivos</b>
<hr />
  <form action="upload.php" method="post" enctype="multipart/form-data">
        Nombre de la Vivienda: <input name="Vivienda" type="Text" />
        Descripcion de la vivienda: <textarea name="Descripcion"></textarea>
        <br />Imagenes:<br />
<?php
    
for ($i=1;$i<=10;$i++){
        
$IDIMG='IMG'.$i;
        echo(
'<input name="'.$IDIMG.'" type="file" class="casilla" id="archivo" size="35" /><br />
        Descripcion: <textarea name="Descripcion'
.$IDIMG.'"></textarea>     
        <hr />
        '
);
    }     
?>
      <input name="enviar" type="submit" class="boton" id="enviar" value="Guardar Datos" />
      <input name="action" type="hidden" value="upload" />    </td>   
    </form>
    <hr />
    <b style="color:#990000"><?php echo $status?></b>
    <hr />
    <b>Listado</b>
    <hr />
    <td class="infsub">
    
        <?php 
            $Vivienda
='';
            
$Datos[Consulta]=mysql_query('SELECT V.Nombre NVIV, V.Descripcion DVIV, I.Nombre NIMG , I.Descripcion DIMG FROM viviendas V LEFT JOIN imagenes I ON V.ID=I.IDVIV');
            while(
$Info=mysql_fetch_array($Datos[Consulta])){
                if(
$Info[NVIV]!=$Vivienda){     
                    if(
$Vivienda!=''){echo('</table>');}
                    echo(
'<hr /><b>'.$Info[NVIV].'</b><br /><p>'.$Info[DVIV].'</p><hr /><table>');
                    
$Vivienda=$Info[NVIV];
                }
                echo(
'<tr><td><img src="Img-Viviendas/'.$Info[NIMG].'" width="200px" /></td><td>'.$Info[DIMG].'</td></tr>');
            }
        
?>
</table>
</body>
</html>
Gracias de antemanos
  #10 (permalink)  
Antiguo 15/03/2013, 14:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

Qué parte es la que no te funciona?
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 15/03/2013, 15:38
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

Hola:

funcionar funciona, es que la idea es que el numero de fotos fueran al gusto del consumidor.

Este script lo que hace es que la va genrando los campos en funcion de que se vayan solicitando.

Seria posible mezclarlo?

Un saludo
  #12 (permalink)  
Antiguo 15/03/2013, 16:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Subir varios ficheros adjuntos (fotos) a una Base de datos

Por supuesto que se puede, sólo debes tener en cuenta que, al usar input file como array vas a obtener esta estructura:

$_FILES['archivo']['nombre'] = array numérico (no asociativo) con el nombre para cada archivo
$_FILES['archivo']['error'] = array numérico (no asociativo) con código de error para cada archivo
$_FILES['archivo'][****] = array del resto de campos

Luego, puedes recorrer, más o menos así:
Código PHP:
Ver original
  1. foreach($_FILES['archivo']['nombre'] as $numero => $nombre) {
  2.     // El nombre ya lo tienes
  3.     // Obtener código de error:
  4.  
  5.     $error = $_FILES['archivo']['error'][$numero];
  6.     // Igual que el anterior haces para obtener el resto de datos
  7. }
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: adjuntos, ficheros, formulario, fotos
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 05:46.