Foros del Web » Programando para Internet » PHP »

problemas con un siclo for

Estas en el tema de problemas con un siclo for en el foro de PHP en Foros del Web. Hola a todos tengo un pequeño inconveninete con un siclo, la idea es que de un formulario de carga de archivos, reciba los nombres de ...
  #1 (permalink)  
Antiguo 13/08/2010, 09:57
 
Fecha de Ingreso: julio-2010
Mensajes: 43
Antigüedad: 13 años, 9 meses
Puntos: 3
De acuerdo problemas con un siclo for

Hola a todos tengo un pequeño inconveninete con un siclo, la idea es que de un formulario de carga de archivos, reciba los nombres de los mismos, los ingrese a la base de datos.
El problema que tengo es que solo esta ingresando a la base de datos solo uno de los nonbres de los archivo y no los cuatro.
Les dejo el código para ver si me pueden hechar una manita.
Muchas gracias.

Código Javascript:
Ver original
  1. function cargaclave(){
  2.     var claves="";
  3.       frmTemp=document.getElementsByName("txtArchivo");
  4.       for(i=0;i<frmTemp.length;i++){  
  5.            claves+=frmTemp[i].id + ",";}
  6.     return   claves;
  7. }

Código PHP:
<?php
    
//función para cargar archivos.
  
include("Configuration.php"); //llama la conexión a la base de datos.
  
include("utilerias.php");
  
session_start(); 

      
$claves=0;
      
$claves=$_GET["claves"];
      
$clavessubstr($claves,0strlen ($claves) -1);
      
$arrayClavesplit(",",$claves);
      
$count0;
      
      foreach(
$_FILES as $file){      //$_FILES recibe los archivos y las manda a variables $file
           
if (move_uploaded_file($file['tmp_name'], "../files/" $file['name'])){   
                echo    
$file['name'];
           
nombreDeArchivos($strHostMYSQL,$strUserMYSQL,$strPWDMYSQL,$strDBMYSQL"files/" $file['name'] , $arrayClave[$count]);  
           }else{ 
             echo 
$msg=  "Ocurrio algun error al subir el archivo. No pudo guardarse."
           }
           
$count++;
      }                           
       echo 
sizeof($_FILES['txtArchivo']);
       
 
?>
  #2 (permalink)  
Antiguo 13/08/2010, 10:19
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 3 meses
Puntos: 46
Respuesta: problemas con un siclo for

Hola.

Imprime el contenido de ti variable $_FILES para ver si las iteraciones son correctas.

Código PHP:
Ver original
  1. echo("<pre>");
  2. print_r($_FILES);
  3. echo("</pre>");

Suerte, espero respuesta
  #3 (permalink)  
Antiguo 13/08/2010, 10:20
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: problemas con un siclo for

Resulta que cuando en el html incluyes inputs tipo file como arreglo name="archivo[]" la estructura de $_FILES es PHP es identica a cuando envias solo un archivo, con la excepcion de que $_FILES['name'], $_FILES['tmp_name'], etc... todos contendran arreglos de mismo numero de elementos cada uno (tantos como hayas incluido en el formulario), por lo que tu ciclo deberia ser:

Código PHP:
Ver original
  1. foreach($i = 0; $i < count($_FILES['archivo']['name'] ); $i++) {
  2.     // Aqui analizas cada elemento $_FILES['archivo']['name'][$i], etc.;
  3. }
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 13/08/2010 a las 12:30 Razón: Faltaba el indice 'archivo'
  #4 (permalink)  
Antiguo 13/08/2010, 10:44
 
Fecha de Ingreso: julio-2010
Mensajes: 43
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: problemas con un siclo for

Hola lair imprimi la variable como me indicaste y solo da elñ siguiente mensaje.

sidegrisright.pnginsert into usuariodoc (clave_usuario, clave_doc, archivo_usdoc, fecha_usdoc) values (1,18,'files/sidegrisright.png', now())5
Array
(
[txtArchivo] => Array
(
[name] => sidegrisright.png
[type] => image/x-png
[tmp_name] => C:/Archivos de programa/EasyPHP1-8\tmp\php512.tmp
[error] => 0
[size] => 319
)

)
  #5 (permalink)  
Antiguo 13/08/2010, 12:31
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: problemas con un siclo for

Eso quiere decir que solo tienes un campo tipo file con nombre txtArchivo... o habria que ver tu formulario HTML para ver que esta pasando.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 16/08/2010, 09:23
 
Fecha de Ingreso: julio-2010
Mensajes: 43
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: problemas con un siclo for

Este es mi formulario, pero segun yo los los campos de file se genran automaticamente.
Código PHP:
}

function carga(){
    frmUno.target="_self";
    alert (cargaclave());
    frmUno.action="../includes/cargararchivos.php?claves="+cargaclave();
    frmUno.submit();
}

function cargaclave(){
    var claves="";
      frmTemp=document.getElementsByName("txtArchivo[]");
      for(i=0;i<frmTemp.length;i++){  
           claves+=frmTemp[i].id + ",";}
    return   claves;
}
</script>
<link href="../preAutorizacion/styles/estilosMas.css" rel="stylesheet" type="text/css" />
</head>
<body bgcolor="#FFFFFF">
    <form id="frmUno" name="frmUno" target="_self" method="post" action="../includes/cargararchivos.php" enctype="multipart/form-data">
<table width="1004" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><table width="100%" border="0" align="center">
        <tr>
          <td valign="top"><p class="estilosmasweb"><b>Documntación Cliente.</b></p>
                <?php echo dameMenu();?>
          
              <table width="700" border="3" align="center" cellpadding="0" cellspacing="0" class="estilosmasweb">      
               <td colspan="2" class="TablaEncabezado" style="text-align: center;">Documentación</td>
                <tr>
                <td class="fondoColumna" style="text-align: right;">Pre-Autorización (Firmada) Descaraga</td>
                <td class="fondoColumna" style="text-align: left;"><img src="../preAutorizacion/images/pdf.jpg" width="4%" align="center"></td>
                </tr>
                <tr>
                <td class="fondoColumnaSin" style="text-align: right;">Buro de Crédito (Firmada) Descaraga</td>
                <td class="fondoColumnaSin" style="text-align: left;"><img src="../preAutorizacion/images/pdf.jpg" width="4%" align="center"></td>
                </tr>
                <tr>
                <td colspan="2" class="fondoColumnaSin" style="text-align: center;"><a href="">Llena la Solicitu en línea.</a></td>
                </tr>
<?php
    $link
=mysql_connect($strHostMYSQL$strUserMYSQL$strPWDMYSQL);
    
mysql_select_db($strDBMYSQL,$link);
    if(
mysql_errno()>0)
    {     
        
$strResultOp "No fue posible validar el usuario.";
        
$strInfoTec "No fue posible localizar el host[".mysql_errno()."-".mysql_error()."]";
        
$strModulo $_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/".basename($_SERVER['PHP_SELF']);
        
$strParameters"host:".$strHostMYSQL."~-user:".$strUserMYSQL."~PWD:".$strPWDMYSQL;
        echo 
"no";
    } 
    else
    {        
        
$strSql =" SELECT clave_doc,desc_doc from documento where estatus_doc=0 ";
        
$result mysql_query($strSql);
        if(
mysql_errno()>0){
            
$strResultOp "No fue posible validar el usuario.";
            
$strInfoTec "No fue posible ejecutar la consulta[".mysql_errno()."-".mysql_error()."]";
            
$strModulo $_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/".basename($_SERVER['PHP_SELF']);
            
$strParameters=$strSql;
            echo 
$strInfoTec;
        }
        else{          
            
$columnStyle=0;
            
$valor=0;
            
$estilo="fondoColumnaSin";
            while(
$row mysql_fetch_array($result)){
                
$valor=$columnStyle%2;
                if(
$valor==0)
                    
$estilo="fondoColumnaSin";
                else
                    
$estilo="fondoColumna";
                     
          
?>
                   <tr> 
                <td class="<?php echo $estilo;?>" style="text-align: right;"><? echo $row["desc_doc"]; ?></td>
                <td class="fondoColumna" style="text-align: left;">
                                    <input name="txtArchivo[]" type="file" size="35" id="<?php echo $row["clave_doc"];?>"></td>
                </tr>
<?
            
}
        }
    }
?>                <tr>
                <td class="fodoColumnaSin" style="text-align: center;" colspan="2">Cargar docuemnto
               <input name="enviar" type="button" value="cargar docuemnto" onclick=carga();></td>
               </tr>
              </table>

Etiquetas: Ninguno
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 19:40.