Foros del Web » Programando para Internet » PHP »

Subir una cantidad limitada de imágenes al servidor y guardar las URLs en la BD

Estas en el tema de Subir una cantidad limitada de imágenes al servidor y guardar las URLs en la BD en el foro de PHP en Foros del Web. Hola, quisiera saber si conocen alguna forma de subir imágenes al servidor pero limitando la cantidad y que automáticamente se guarden las urls en la ...
  #1 (permalink)  
Antiguo 08/02/2012, 09:10
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Subir una cantidad limitada de imágenes al servidor y guardar las URLs en la BD

Hola, quisiera saber si conocen alguna forma de subir imágenes al servidor pero limitando la cantidad y que automáticamente se guarden las urls en la Base de Datos sin incrementar las IDs, en otras palabras, que haya un campo para cada url ppor cada ID de usuario.

Es que tengo un sistema de usuarios y quiero que tengan la posibilidad de tener un album de fotos con al menos 10 imágenes.

Sé muy poco de PHP por eso suelo buscar scripts para solucionar algunos inconvenientes que me surgen pero lastimosamente no encontré nada hasta ahora que haga lo que les planteo líneas arriba.

Ojalá puedan ayudarme. Gracias.
  #2 (permalink)  
Antiguo 08/02/2012, 09:31
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

con hacer un form con 10 input file tienes ¿cual es el rollo?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 08/02/2012, 09:40
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Yo en lo personal uso el plugin de JQuery que se llama Uploadify
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 08/02/2012, 10:07
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Hola vf, no sé como tengas tus tablas en la base de datos, pero necesitas 3 tablas

1. usuarios
2. imagenes
3. album


Donde la tabla album va a relacionar a la tabla usuarios e imagenes
id_usuarios | id_imagenes

Y ya con una consulta a la tabla album con sus respectivos parametros limitas la cantidad de imágenes que quieres que tus usuarios puedan subir. Saludos
  #5 (permalink)  
Antiguo 08/02/2012, 10:50
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Actualmente puedo enviar una imagen junto con su respectiva url a la BD usando un archivo "uploader.php" que genera una imagen reducida (thumbs), sube la imagen al servidor y guarda la url en un determinado campo de la tabla.

Pensé en poner en el "action" dentro del formulario algo como:

"action=uploader1.php" para la imagen 1
"action=uploader2.php" para la imagen 2
"action=uploader3.php" para la imagen 3

y así sucesivamente...

vinculando todos con sus respectivos "inputs" y enviarlos de una sola vez con un único botón "submit", pero hasta ahora no encuentro cómo poner distintos "actions" que tengan relación con cada input de cada imagen por separado para que se envíe en la tabla de una sola vez en los campos que deseo... y todo eso sin alterar en ningún momento las IDs.

Quiero poner por ejemplo así mi tabla:

"ID | USER_NAME | IMG1 | IMG_NAME1 | IMG2 | IMG_NAME2 | IMG3 | IMG_NAME3..."


Donde IMG es el campo en el que se guarda la url e IMG_NAME el titulo de la imagen.

Uploadify me gustaría utilizar, pero necesito que específicamente el formulario ingrese la url de cada imagen dentro de los únicos campos en los que pueden agregarse las urls y sinceramente desconozco cómo hacerlo.
  #6 (permalink)  
Antiguo 08/02/2012, 11:24
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

O mejor si en vez de hacer todo lo que intento hacer me ayuden a que en un mismo archivo (en mi caso uploader.php) pueda ya enviar todas las imágenes al servidor guardando sus urls modificando el código.

Como no tengo mucho conocimiento de PHP les agradeceré que me ayuden a lograr eso si no es mucho pedir.

A continuación les paso el código de mi archivo "uploader.php"

Código PHP:

<?php


include('conexion.php');

function 
redimensionar_jpeg($img_original$img_nueva$img_nueva_anchura$img_nueva_altura$img_nueva_calidad)

    
$img imagecreatefromJPEG($img_original); 
    
$thumb imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura);  
    
imagecopyresampled($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img)); 
    
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
    
ImageDestroy($img);


    

                
                 
   
//Preguntamos si nuetro arreglo 'archivos' fue definido
         
if (isset($_FILES["archivos"])) {
             
        
         
//de ser asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
         //obtenemos la cantidad de elementos que tiene el arreglo archivos
         
$tot count($_FILES["archivos"]["name"]);

         
//este for recorre el arreglo
         
for ($i 0$i $tot$i++){
             
                
                                                    
            if(
is_uploaded_file($_FILES["archivos"]["tmp_name"][$i])){
         
//con el indice $i, podremos obtener la propiedad que desemos de cada archivo
         //para trabajar con este como si fuera un array continuo
            
$tmp_name $_FILES["archivos"]["tmp_name"][$i];
            
$name $_FILES["archivos"]["name"][$i];
            
$tamano $_FILES["archivos"]["size"][$i];
            
$tipo $_FILES["archivos"]["type"][$i]; 
            
            
            
                    if (!((
strpos($tipo"gif") || strpos($tipo"png")|| strpos($tipo"jpg")|| strpos($tipo"jpeg")) && ($tamano 500000))) {
                    echo 
'<div style="width:500px; height:80px; padding:10px; background-color:#FF0000;">';
                    echo 
'<p style="font-size:15px; color:#FFF;"><strong>ERROR DE FORMATO O TAMANHO</strong></p></div>';
                    
                    }else{

                            
/* Guardar el archivo */
                            
$destino="../galerias/fotos/";
                            
$dir_thumb "thumbs/";
                                if (!
file_exists($destino.$dir_thumb)){
                                    @
mkdir ($destino.$dir_thumb0755
                                    or die(
"No se ha podido crear el directorio ".$destino.$dir_thumb);
                                }
                            
                            
$destTHU$destino.$dir_thumb;
                            
                            
                            if(
move_uploaded_file($_FILES["archivos"]["tmp_name"][$i],$destino.$name)){
                            
redimensionar_jpeg($destino.$name$destTHU.$name704780);
                                
//inserto los textos en la base de datos
                             
$sql "INSERT INTO galeria_arte (big, small) 
                             VALUES ('"
.$name."', '".$name."')";
                                
                                
                                
                                
                        }
//if move_uploaded_file
                        
                    
}//else
                    
                
}//if is_uploaded_file
                
                //cierro mi consulta $sql
                 
mysql_query($sql,$fausto_conn) or die(mysql_error($fausto_conn)); 
            }
//for
            
        
      
//if

          
     
?>
La mejor solución obviamente es que en un mismo archivo ya se procese todo loq ue necesito.

Por ejemplo, poner en el formulario 5 inputs para subir 5 imágenes con sus respectivos titulos y que al hacer submit y se lleve todo al archivo uploader.php se envíe sin problemas las urls a cada campo dentro de la tabla sin incrementar la ID del usuario.

Ojalá alguien sepa como hacerlo. Saludos y gracias por responder!!! :D
  #7 (permalink)  
Antiguo 08/02/2012, 11:26
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Ah! Me olvidaba decir que la url se guarda dentro de la tabla en el campo de nombre "big" en la BD, pero por cada imagen subida incrementa la ID, y lo que me gustaría es que no lo haga.
  #8 (permalink)  
Antiguo 08/02/2012, 12:22
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

En uno de mis proyectos hice algo parecido, te cuento: era un sistema para noticias en la que cada noticia tenia un conjunto de 4 o menos imágenes y cada imagen tenia una breve descripción, utilcé 3 tablas para poder tener una relación entre la noticia e imágenes para cada una.


Primero te muestro el javascript que use(no recuerdo donde me lo encontre xD, pero aquí va)

Código Javascript:
Ver original
  1. var numero = 0;
  2. var num = 1;
  3. var limite = <?php if (isset ($limite)){echo $limite;}else{echo "4";}?>;
  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.    if(num <= limite){
  20.    container = d('files');
  21.    
  22.    
  23.    span = c('SPAN');
  24.    span.className = 'file';
  25.    span.id = 'file' + (++numero);
  26.  
  27.    field = c('INPUT');  
  28.    field.name = 'archivos[]';
  29.    field.type = 'file';
  30.    
  31.    field2 = c('INPUT');  
  32.    field2.name = 'descripcion[]';
  33.    field2.type = 'text';
  34.    field2.size = '40';
  35.    field2.value = 'Inserte una breve descripción';
  36.    
  37.    a = c('A');
  38.    a.name = span.id;
  39.    a.href = '#';
  40.    a.onclick = removeField;
  41.    a.innerHTML = 'Quitar';
  42.  
  43.    span.appendChild(field);
  44.    span.appendChild(field2);
  45.    span.appendChild(a);
  46.    container.appendChild(span);
  47.    num++;
  48.    
  49.    }  
  50. }
  51. removeField = function (evt) {
  52.     num--;
  53.    lnk = f(e(evt));
  54.    span = d(lnk.name);
  55.    span.parentNode.removeChild(span);
  56. }

La variable $limite tiene como valor el resultado de una consulta a la tabla donde se relacionan las noticias con las imágenes, si no tenia ninguna imagen cargada entonces el limite es 4

Luego el formulario para subir multiples imágenes

Código PHP:
Ver original
  1. <form name="formulario" id="formulario" action="procesa_alta_img.php" method="post" enctype="multipart/form-data">
  2.    <input type="hidden" value="alta_img" name="alta_img" />
  3.    <?php
  4.        $id_noticia = $_POST['id_noticia'];
  5.        echo "<input type='hidden' value='".$id_noticia."' name='id_noticia' />";
  6.     ?>
  7.         <label>Selecciona:</label>
  8.         <dd><div id="files"></div><div id="comentario"></div></dd>
  9.         <dt>&nbsp;&nbsp;&nbsp;<a href="#" onclick="addField()">A&ntilde;adir Archivo</a></dt>
  10.         <dd><input type="Submit" value="Cargar" /></dd>
  11.    </dl>
  12.            
  13. </form>

$id_noticia es el id que se genera automáticamente y lo envio en un campo oculto

y para procesar el upload de imágenes procesa_alta_img.php


Código PHP:
Ver original
  1. <?php
  2. include('conexion.php');
  3. if (isset($_FILES["archivos"])) {
  4.          //de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
  5.          //obtenemos la cantidad de elementos que tiene el arreglo archivos
  6.          $errores = 0;
  7.          $name=array();
  8.          $tot = count($_FILES["archivos"]["name"]);
  9.          //este for recorre el arreglo
  10.          for ($i = 0; $i < $tot; $i++){
  11.          //con el indice $i, podemos obtener la propiedad que desemos de cada archivo
  12.          //para trabajar con este
  13.          //verificamos los campos vacios en este if
  14.             if(!empty($_FILES['archivos']['name'][$i])){
  15.                 //vemos dimensiones de imagenes para aceptarla o no
  16.                 $img = $_FILES['archivos']['name'][$i]; // almaceno el nombre del archivo subido
  17.                 $tipo = $_FILES['archivos']['type'][$i];  // almaceno el tipo de archivo                   
  18.                 $anchomin = 400;
  19.                 $imagen = $_FILES['archivos']['tmp_name'][$i];
  20.                 $descripcion = $_POST['descripcion'][$i];
  21.                 //aca controlo que el archivo subido sea JPG
  22.                 if ($tipo == "image/jpeg" || $tipo == "image/jpg" || $tipo == "image/pjpeg" || $tipo == "image/png") {
  23.                 switch($tipo){
  24.                         case 'image/jpeg':    $ext = "jpg"; break;
  25.                         case 'image/jpg':     $ext = "jpg"; break;
  26.                         case 'image/pjpeg':     $ext = "jpg"; break;
  27.                         case 'image/png':     $ext = "jpg"; break;
  28.                         default:        $ext = "jpg"; break;
  29.                 }              
  30.                 $img2 = date("mdy")."_".date("His")."_1_".rand(100,9999).".".$ext; //nombre de la nueva imagen achicada
  31.                 // es JPG o PNG entonces abtengo el tamaño en pixel de la imagen subida
  32.                 $tamanos = getimagesize($imagen);
  33.                 $ancho = $tamanos[0];
  34.                 $alto =  $tamanos[1];
  35.                 $aspecto = $alto/$ancho;
  36.                 // controlo que mida de ancho mas que  el limite
  37.                 if ($ancho >= $anchomin) {
  38.                     //agui separo los 3 tamanos de imagen
  39.                     for($t=0; $t<=2; $t++){
  40.                     //defino los 3 directorios
  41.                     $dir = "imagenes_noticias/".$anchomin."/";
  42.                     $nuevoalto = round($anchomin / $ancho * $alto); //calculo el nuevo alto
  43.                     //tomamos la imagen de la original con un switch
  44.                     switch($tipo)
  45.                         {
  46.                         case 'jpeg':    $imagenoriginal = ImageCreateFromJPEG($imagen); break;
  47.                         case 'jpg':     $imagenoriginal = ImageCreateFromJPEG($imagen); break;
  48.                         case 'png':     $imagenoriginal = ImageCreateFromPNG($imagen); break;                      
  49.                         default:        $imagenoriginal = ImageCreateFromJPEG($imagen); break;
  50.                     }                  
  51.                     $imagennueva = imagecreatetruecolor($anchomin,$nuevoalto); // creo el lienzo de la imagen nueva
  52.                     imagecopyresampled($imagennueva, $imagenoriginal, 0, 0, 0, 0, $anchomin, $nuevoalto, $ancho, $alto);// cambio el tanaño
  53.                     imagejpeg($imagennueva, $dir . $img2); // guardo el archivo nuevo
  54.                     $archivo = $dir.$img2;
  55.                     $sql="INSERT INTO imagen_noticia(
  56.                                     id_noticia,nombre,ruta,dimension,descripcion
  57.                                     ) VALUES(
  58.                                     '".$_POST['id_noticia']."','".$img2."','".$archivo."','".$anchomin."','".$descripcion."')";
  59.                     mysql_query($sql,$conexion) or die("Error en la insercion".mysql_error($conexion));
  60.  
  61.                     if($t == 1){
  62.                         $anchomin = 100;
  63.                     }else{
  64.                         $anchomin = $anchomin / 2;
  65.                     }
  66.                     }//for($t=0; $t<=2; $t++)                  
  67.                 }//if ($ancho > $anchomin)
  68.                 else {
  69.                     $name[$errores] = "<b>".$_FILES["archivos"]["name"][$i]." </b><font color='red'>No cumple con las dimensiones requeridas.</font>";
  70.                     $errores++;
  71.                     //echo "<font color='red'>Las dimensiones deben de ser minimo de 800px de ancho</font>";
  72.                  };
  73.                 }//if ($tipo == "image/jpeg" || $tipo == "image/jpg" || $tipo == "image/png")
  74.                 else {
  75.                     $name[$errores] = "<b>".$_FILES["archivos"]["name"][$i]." </b><font color='red'>No tiene extención JPG.</font>";
  76.                     $errores++;
  77.                 //$muestra = "<font color='red'>No tiene extención JPG.</font>";
  78.                 //echo $muestra;
  79.                 }
  80.             }//if(!empty($_FILES['archivos']['name'][$i]))
  81.                 else{
  82.                     $campo = $i + 1;
  83.                     $name[$errores] = "<font color='red'>El campo ".$campo." se envio vacio.</font>";
  84.                     $errores++;                
  85.             }
  86.         }//for ($i = 0; $i < $tot; $i++)
  87.         /*
  88.         $celdas = 3;
  89.         $dato = $i / $celdas;
  90.         $u_fila = floor($dato);
  91.         $in=0;
  92.         echo "<table border='0'>";
  93.         for($fila=0; $fila<=$u_fila; $fila++){
  94.             echo "<tr>";
  95.             for($cuenta=1; $cuenta<=$celdas; $cuenta++){
  96.                 echo "<td align='center'>";
  97.                 echo "<img src='".$direccion[$in]."'>";
  98.                 echo "</td>";
  99.                 $in++;
  100.             }
  101.             echo "</tr>";
  102.         }
  103.         echo "</table>";
  104.         */
  105.        
  106.       }//if (isset ($_FILES["archivos"]))  
  107. mysql_close($conexion);
  108. function array_envia($array) {
  109.  
  110.      $tmp = serialize($array);
  111.      $tmp = urlencode($tmp);
  112.  
  113.      return $tmp;
  114. }
  115. $arreglo = array_envia($name);
  116. $id_noticia = $_POST['id_noticia'];

En este momento ya me tengo que ir, pero alguna duda la comentas y más alrato lo veo, espero te sirva o te oriente con tu proyecto, saludos.
  #9 (permalink)  
Antiguo 08/02/2012, 15:12
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Muchas Gracias por responder luis_h_1, ahora intentaré probar y experimentar con el código, te agradeceré si me pasas la estructura de la tabla en la base de datos para probarlo. De cualquier manera veré cómo lo hago sin ella. Saludos!
  #10 (permalink)  
Antiguo 08/02/2012, 16:01
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Hola, ahorita vi que no son 3 tablas como dije xD, pero se me hace mejor asi con 3 que solo 2.

Tabla noticias
id_noticia (int)
nombre (varchar)
id_categoria (int)
lugar (varchar)
fecha (date)
descripcion (text)
solicitar (int)
autorizado (int)
vinculo (varchar)

Tabla imagen_noticia
id_imagen_noticia (int)
id_noticia (int)
nombre (varchar)
ruta (varchar)
dimension (varchar)
descripcion (text)
principal (int)

En la tabla imagen_noticia el campo id_noticia es una FK a la tabla noticias del campo id_noticia, de ahi sacaba cuantas imágenes tenia cada noticia.

Saludos!
  #11 (permalink)  
Antiguo 08/02/2012, 16:50
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Gracias luis_h_1!!!

Ahora tengo 2 preguntas:

1- ¿Cómo le llamo al archivo Javascript?
y 2- ¿Le falta la parte final del código al archivo "procesa_alta_img.php"?

Me parece que sí :/
  #12 (permalink)  
Antiguo 08/02/2012, 18:41
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Varios "action" en un formulario que envíe imágenes a varios archivos con un SUBMIT

Saludos.

Mi consulta es la siguiente:

Me gustaría saber si conocen algún modo para que con un único botón submit se pueda enviar varios inputs a distintos archivos php para que los procesen a la vez.

Tengo un archivo PHP que conseguí rebuscandome por internet envía a la perfección una imágen al servidor creando su respectivo thumb y encima guarda la url en un cambo en la Base de Datos.

Como sé muy poco de programación no sé cómo hacer que se envíe por ejemplo 10 imágenes con ese archivo (que se llama "uploader.php"), quisiera solamente copiarlo varias veces por mi cuenta, renombrarlo (uploader1.php, uploader2.php, uploader3.php...) y vincular cada uno con un input que subirá cada imagen al servidor con un único botón submit.

Creo que necesitaré tener varios "action" en el formulario que vincule cada imagen a cada archivo que enviará todo al servidor y a la BD a la vez.

Tengo un sitema de usuarios y quiero que tengan un album de fotos de al menos 10 imágenes cada uno. Por eso no quiero que se incremente la ID cada vez que se sube una imagen sino que solamente ingrese la url en un campo dentro de la tabla respetando la id del usuario (Ej.: USER_ID | IMG1 | IMG2 | IMG3, etc).

Ojalá puedan ayudarme. Gracias.
  #13 (permalink)  
Antiguo 08/02/2012, 18:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Varios "action" en un formulario que envíe imágenes a varios archivos con

1. No se puede tener mas de un action en un formulario.
2. Si se pueden subir varios archivos a la vez usando un único formulario.
3. Por favor consulta el manual, ahí tienes todo lo que se necesitas.
http://php.net/manual/en/features.file-upload.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 08/02/2012, 20:12
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Varios "action" en un formulario que envíe imágenes a varios archivos con

Gacias por la respuesta pateketrueke!

Que pena, según leí por ahí con ajax y javascript se puede hacer algo parecido a tener varios action en un solo formulario

Sé cómo subir varios archivos con un único formulario, el problema es que no sé cómo hacer para que cada url de cada archivo quede guardada en la Base de Datos :/

Si tan solo ese archivo "uploader.php" pudiera enviar cada url a cada campo de la tabla donde deseo las cosas serían más fácil para mi existencia jajaja

¿Sabes si podría lograr eso de enviar una cantidad limitada de imágenes al servidor guardando las urls en la Base de Datos utilizando un solo archivo?

Así únicamente tendría que usar un action y no intentar hacer algo tan extraño como lo que quiero hacer :D

Una vez más, gracias por la respuesta
  #15 (permalink)  
Antiguo 08/02/2012, 21:49
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Varios "action" en un formulario que envíe imágenes a varios archivos con

Piensa en arreglos, arrays, matriz (o cual sea el nombre que te suene conocido).

El Objeto $_FILES, para fines prácticos lo puedes ver como un arreglo.

$_FILES es recogido por el script PHP (en tu caso uploader.php) si y solo si tu formulario tiene method="post" y encripte="multipart/form-data" como atributos declarados en la apertura de la etiqueta <form..>


$_FILES tiene las siguientes llaves

tmp_name
name
size
type

y se accede a los valores de la siguiente forma

$_FILES['nombreCampoTipoFile']['tmp_name'] = contiene la información de la ruta temporal en la que se ha subido el archivo
$_FILES['nombreCampoTipoFile']['name'] = el nombre del archivo de la forma (nombreArchivo.extension)
etc....

Entonces si tu vez a $_FILES como el array que es puedes recorrerlo sin miedo utilizando un foreach

Código PHP:
Ver original
  1. foreach($_FILES as $key){
  2. //Y guardar por ejemplo el nombre de cada archivo en la base de datos
  3.  
  4. $query="INSERT INTO............. nombreArchivo='". $_FILES[$key]['name'] ."'   ";
  5.  
  6. mysql_query($query);
  7.  
  8. }

Realmente es muy intuitivo, es necesario que consultes el manual de PHP
Un saludo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #16 (permalink)  
Antiguo 08/02/2012, 22:27
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Creé otro topic con el mismo tema y creo que ya fue muy repetitivo pedir más ayuda del que ya me dan por aquí, así que mil disculpas a todos por la molestia.

Continuando con este asunto, me estoy iniciando en este mundillo de PHP y aún me cuesta asimilar algunas cosas ya que no soy programador, solamente soy diseñador y a duras penas estoy intentando comprender todo esto con las esperanzas de dominar al dedillo más adelante como lo hacen ustedes

iovan muchas gracias por tu respuesta, para que conozcan mejor qué script estoy usando les comento que justamente uno que ya pusieron aquí en forosdelweb:

http://www.forosdelweb.com/f18/aporte-cargar-varias-imagenes-bd-generar-thumbnail-miniatura-845770/

Funciona a la perfección, el problema radica en lo que exactamente quiero que haga:


-Tener 10 inputs para subir 10 imágenes que se enviarán al dar click en un único botón "ENVIAR".

-Guardar automáticamente las urls de cada imagen en la Base de Datos (en el caso de ese script será: para la imagen 1 = big1 en la tabla, para la imagen 2 = big2 en la tabla, para la imagen3 = big3 en la tabla, y así hasta llegar a diez imagenes por ID de usuario)

Para un experto eso será simple, pero para alguien que recién se inicia y tiene pocos conocimientos cuesta un poco

Ojalá puedan explicarme cómo modificar ese script para que pueda enviar esa cantidad de urls a la Base de Datos mientras se suben los archivos al servidor.

Desde ya muchisimas gracias por tomarse la molestia en responder!!!
  #17 (permalink)  
Antiguo 08/02/2012, 23:39
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Hola, el javascript va en el header del documento y se llama a la función addField() al hacer click en Añadir archivo.

Código PHP:
Ver original
  1. <dt>&nbsp;&nbsp;&nbsp;<a href="#" onclick="addField()">A&ntilde;adir Archivo</a></dt>

Saludos
  #18 (permalink)  
Antiguo 09/02/2012, 08:29
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Hola, luis_h_1... me dices que se pone en "procesa_alta_img.php"???

Lo puse ahí en el header dentro de <script type="text/javascript"></script> y no lo lee correctamente.
  #19 (permalink)  
Antiguo 09/02/2012, 08:35
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Ahora puse en el formulario (creo que era ahí en realidad xD) y al darle clic en "Añadir Archivo" sólo sale un "#" al final de la dirección que está en el navegador.
  #20 (permalink)  
Antiguo 09/02/2012, 12:13
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Hola, te paso el link de todos los archivos en mediafire, ahí esta todo junto con la BD, va funcionando ojala no tengas problemas, saludos

http://www.mediafire.com/?1k76xvjbzdcbci8
  #21 (permalink)  
Antiguo 09/02/2012, 13:30
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

WOW!!! Está excelente luis_h_1!!!

Estoy analizando para ver cómo lo uno a mi proyecto

A primera vista lo que me parece raro es cómo eliminar las imágenes. Me aparece en la esquina superior izquierda un boton X y no puedo seleccionar qué imagen borrar. De cualquier manera está excelente el script MUCHAS GRACIAS!!!
  #22 (permalink)  
Antiguo 09/02/2012, 15:35
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Hola, que bien que te sirvio la X si te fijas es un <div> y al dar click llama a una funcion javascript la cual rellena un campo oculto con el id de la imagen y se envia el formulario y listo se elimina jeje, lo probé aquí y está funcionando bien, saludos.
  #23 (permalink)  
Antiguo 10/02/2012, 10:50
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Está en esta sección del código?

Código PHP:
Ver original
  1. }
  2. removeField = function (evt) {
  3.     num--;
  4.    lnk = f(e(evt));
  5.    span = d(lnk.name);
  6.    span.parentNode.removeChild(span);
  7. }
  8. </script>
  #24 (permalink)  
Antiguo 10/02/2012, 10:53
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

En esta parte:

Código PHP:
Ver original
  1. <?php
  2.             //para este ejemplo puse la noticia con id 1, pero lo puedes recibir por $_POST
  3.             $id_noticia = 1;
  4.             echo "<input type='hidden' value='".$id_noticia."' name='id_noticia'>";
  5.             ?>


Cómo podría modificar para que se vincule con la id del usuario que se registra?

Quiero cambiar "id_noticia" por "id_usuario"

Pero como desconozco bastante de PHP no sé cómo vincular cada foto con su respectivo usuario. Ojalá puedas echarme una manito xD
  #25 (permalink)  
Antiguo 10/02/2012, 10:56
 
Fecha de Ingreso: febrero-2012
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir una cantidad limitada de imágenes al servidor y guardar las URLs en

Y no hay una manera de elegir una imágen y borrarla? Porque como está sólo puedo eliminar la última foto subida.

Etiquetas: bd, cantidad, formulario, limitada, servidor, submit, tabla, acciones, url, usuarios
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 14:10.