Foros del Web » Programando para Internet » PHP »

normalizar codigo de subida de fotos multiple

Estas en el tema de normalizar codigo de subida de fotos multiple en el foro de PHP en Foros del Web. Buenas , quiero hacer la siguiente consulta porfaor, el codigo que muestro es el que utilizo para agregar varias fotos a una tabla y un ...
  #1 (permalink)  
Antiguo 19/11/2011, 16:20
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cordoba
Mensajes: 42
Antigüedad: 13 años
Puntos: 0
normalizar codigo de subida de fotos multiple

Buenas , quiero hacer la siguiente consulta porfaor, el codigo que muestro es el que utilizo para agregar varias fotos a una tabla y un directorio y me anda bien, lo que quiero consultar es que he recibido alguna critica o en realidad quizas una forma de resolver acotando el codigo, yo no soy experto y siempre me enredo con los bucles por eso quisiera saber si estoy haciendo codigo de mas, o si hay forma de mejorar el codigo sin repetir o haciendo un buen uso del bucle For...




Código PHP:
Ver original
  1. <?php
  2. //analizar form, agregar producto
  3. if(isset($_POST['act'])){
  4. $nombre__prod = mysql_real_escape_string($_POST['N__prod']);
  5. $precio__prod = mysql_real_escape_string($_POST['P__prod']);
  6.  
  7. $detalles__prod = mysql_real_escape_string($_POST['D__prod']); 
  8. $id_ct = mysql_real_escape_string($_POST['select1']);
  9. $idsubcat = $_POST['select2'];
  10.  
  11. $img =$_FILES["archivos"];
  12. if (isset ($img)) {
  13.          //de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
  14.          //obtenemos la cantidad de elementos que tiene el arreglo archivos
  15.          $tot = count($_FILES["archivos"]["name"]);
  16.          for ($i = 0; $i < $tot; $i++){
  17.          $name = $_FILES["archivos"]["name"][0];
  18.          $name1 = $_FILES["archivos"]["name"][1];
  19.          $name2 = $_FILES["archivos"]["name"][2];
  20.          $name3 = $_FILES["archivos"]["name"][3];
  21.          move_uploaded_file($_FILES['archivos']['tmp_name'][0],"../img_/$name");
  22.          move_uploaded_file($_FILES['archivos']['tmp_name'][1],"../img_/$name1");
  23.          move_uploaded_file($_FILES['archivos']['tmp_name'][2],"../img_/$name2");
  24.          move_uploaded_file($_FILES['archivos']['tmp_name'][3],"../img_/$name3");
  25.                     }
  26.          
  27.          }
  28.  
  29.  
  30.            
  31. //vemos si el nombre de producto es identico a otro producto del sistema
  32. $sql = mysql_query("SELECT id FROM productos WHERE nombreProd = '$nombre__prod' LIMIT 1 ");
  33. $P__coincidencia = mysql_num_rows($sql);
  34. if($P__coincidencia > 0){
  35.     echo 'Disculpe, trato de crear un producto que ya existe ,<a href="inventorio.php">click aca</a>';
  36.     exit();
  37.     }
  38.     $sql = mysql_query( "INSERT INTO productos(nombreProd,precio,detalles,dia_added,id_ct,subcategoria)
  39.     VALUES('$nombre__prod','$precio__prod','$detalles__prod',now(),$id_ct,'$idsubcat')") or die(mysql_error());
  40.     $pid = mysql_insert_id();
  41.  
  42.     if(isset($name)){
  43.     $sql = mysql_query( "INSERT INTO fotoxproducto(ruta_foto,idproducto)
  44.     VALUES('$name','$pid')") or die(mysql_error());}
  45.     if(isset($name1)){
  46.     $sql_1 = mysql_query( "INSERT INTO fotoxproducto(ruta_foto,idproducto)
  47.     VALUES('$name1','$pid')") or die(mysql_error());}
  48.     if(isset($name2)){
  49.     $sql_2 = mysql_query( "INSERT INTO fotoxproducto(ruta_foto,idproducto)
  50.     VALUES('$name2','$pid')") or die(mysql_error());}
  51.     if(isset($name3)){
  52.     $sql_3 = mysql_query( "INSERT INTO fotoxproducto(ruta_foto,idproducto)
  53.     VALUES('$name3','$pid')") or die(mysql_error());}
  54.     //$pid = mysql_insert_id();
  55.     //imagen
  56.     //$nw__img = "$pid.jpg";
  57.     //move_uploaded_file($_FILES['fileField']['tmp_name'],"../eCommIMG/$nw__img");
  58.     header("location: inventorio.php");
  59.     exit();
  60. }
  61. ?>
  #2 (permalink)  
Antiguo 19/11/2011, 16:58
 
Fecha de Ingreso: noviembre-2011
Ubicación: Morelia, Mich, México
Mensajes: 95
Antigüedad: 13 años
Puntos: 18
Respuesta: normalizar codigo de subida de fotos multiple

Una forma :)

Código PHP:
Ver original
  1. <?php
  2. //analizar form, agregar producto
  3. if(isset($_POST['act'])){
  4. $_POST = array_map ('mysql_real_escape_string', $_POST);
  5.  
  6. $nombre__prod = $_POST['N__prod'];
  7. $precio__prod = $_POST['P__prod'];
  8. $detalles__prod = $_POST['D__prod'];
  9. $id_ct = $_POST['select1'];
  10.  
  11.  
  12. $idsubcat = $_POST['select2'];
  13.  
  14. $img =$_FILES["archivos"];
  15. if (isset ($img)) {
  16.       $tot = count($_FILES["archivos"]["name"]);
  17.       for ($i = 0; $i < $tot; $i++){
  18.          $name = $_FILES["archivos"]["name"][$i];
  19.             move_uploaded_file($_FILES['archivos']['tmp_name'][$i],"../img_/$name");
  20.        }
  21. }
  22.  
  23. $sql = mysql_query("SELECT id FROM productos WHERE nombreProd = '$nombre__prod' LIMIT 1 ");
  24. $P__coincidencia = mysql_num_rows($sql);
  25.  
  26. if ($P__coincidencia > 0) {
  27.    exit('Disculpe, trato de crear un producto que ya existe ,<a href="inventorio.php">click aca</a>');
  28. }
  29.  
  30.       $sql = mysql_query( "INSERT INTO productos(nombreProd,precio,detalles,dia_added,id_ct,subcategoria)
  31.      VALUES('$nombre__prod','$precio__prod','$detalles__prod',now(),$id_ct,'$idsubcat')") or die(mysql_error());
  32.  
  33.       $pid = mysql_insert_id();
  34.  
  35.     for ($i = 0; $i < $tot; $i++){
  36.         $name = $_FILES["archivos"]["name"][$i];
  37.             if (isset($name)) {
  38.              $sql = mysql_query( "INSERT INTO fotoxproducto(ruta_foto,idproducto)
  39.                                 VALUES('$name','$pid')") or die(mysql_error());
  40.         }
  41.     }
  42.       header("location: inventorio.php");
  43.       exit();
  44. }
  45. ?>
__________________
Que de Cosas - Tienda En linea México

La Batalla Por tu cuerpo - Dietas|Rutinas|Entrenamientos|Salud
  #3 (permalink)  
Antiguo 19/11/2011, 17:21
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cordoba
Mensajes: 42
Antigüedad: 13 años
Puntos: 0
Respuesta: normalizar codigo de subida de fotos multiple

gracias hermano, muy bien normalizado, y funcionando de diez
  #4 (permalink)  
Antiguo 19/11/2011, 18:14
 
Fecha de Ingreso: octubre-2011
Mensajes: 37
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: normalizar codigo de subida de fotos multiple

Código PHP:
Ver original
  1. foreach($_POST as $key => $value)
  2.     if(is_string($value))
  3.         $_POST[$key] = mysql_real_escape_string($value);
  4.  
  5. $post = (object) $_POST;
  6.  
  7. if(isset($post->act)) {
  8.     $result = mysql_query("SELECT id FROM productos WHERE nombreProd='" . $post->N__prod . "' LIMIT 1;");
  9.    
  10.     if(!mysql_num_rows($result)) {
  11.         mysql_query("
  12.             INSERT INTO productos(nombreProd, precio, detalles, dia_added, id_ct, subcategoria)
  13.             VALUES('" . $post->N__prod . "', '" . $post->P__prod . "', '" . $post->D__prod . "', now(), " . $post->select1 . ", '" . $post->select2 . "')"
  14.         );
  15.    
  16.         $id = mysql_insert_id();
  17.         $files = (object) $_FILES['archivos'];
  18.    
  19.         foreach($files->name as $key => $value) {
  20.             move_uploaded_file($files->tmp_name[$key], "../img_/$value");
  21.             mysql_query("
  22.                 INSERT INTO fotoxproducto(ruta_foto, idproducto)
  23.                 VALUES('$value', '$id')"
  24.             );
  25.         }
  26.     }
  27.  
  28.     header("Location: inventorio.php");
  29.    
  30. }

ten en cuenta que los ficheros solo los guardas en el directorio "../img_" si das de alta el producto en la base de datos, porque si ya existe, estarias guardando ficheros de imagenes que luego no contemplarias en la bd

Última edición por loluchis; 19/11/2011 a las 18:44

Etiquetas: fotos, mysql, normalizar, sql, subida, tabla
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:09.