Ver Mensaje Individual
  #10 (permalink)  
Antiguo 18/06/2005, 03:45
Avatar de jam1138
jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Pués nop....
En primera, si leiste el enlace que te dejé, menciono (ya al final ) que, el estar enviando archivos, no debes recojerlos con $_POST sino con $_FILES, y que está a su vez es una variable multidimencional (indices 'tmp_name', 'name', 'type', 'size')... supongo puedes usar $_POST solo para facilitarte una validación (if(!empty(...))) pero a la hora de recojer debes, forzosamente emplear $_FILES...

... en segundo término, con count() solo optienes un número... no puedes aplicarle un foreach() a un número... igual en el post que te dejé mencioné en qué casos se emplearía el count() y foreach() no es uno de ellos...

... si mencioné el count() es porque el problema original del tema era solo optener el número de elementos de la matriz... porque, muy astutamente, visitó la FAQ que trata sobre subir archivos multiples y solo necesitaba ese número para aplicarla... (deberías verla).

Ya en tu caso en concreto... y con tu query... tendrías primero que validar los campos subidos para agregar el dato a dicha query... Ve esto:
http://www.forosdelweb.com/showpost....64&postcount=6

Ahora. debo decir que personalmente no creo conveniente manejar datos en binario para lo que planteas... el hecho de tomar los datos, "construir" el archivo y mandarlo a imprimir significa un gasto de recursos. Lee el tutorial de Cluster al respecto... pero como gustes.. es solo comentario y en nada afecta el comportamiento del ciclo...

Y bueno.. además de toda la info que se te ha proporcionado (por medio de los enlaces y referencias --FAQ--... cuesta repetir las cosas textualmente), te dejo esto:
Código PHP:
<form action="<?=$_SERVER['PHP_SELF'?>" method="post" enctype="multipart/form-data">
  <input type="file" name="file[]"><br>
  <input type="file" name="file[]"><br>
  <input type="file" name="file[]"><br>
  <input type="submit" name="Submit" value="Enviar">
</form>
<?php
if(isset($_POST['Submit'])) {
    for(
$i=0$i<count($_FILES['file']['name']); $i++) {
        if(!empty(
$_FILES['file']['name'][$i])) {
            if (
is_uploaded_file($_FILES['file']['tmp_name'][$i])) {
                
$nombre"imagenes/".$_FILES['file']['name'][$i]; // Conserva su nombre original, se guarda en una carpeta imagenes
                
if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $nombre)) {
                    
$campos[]= "campo".($i+1); // el +1 solo es para darle "un nombre bonito" :-D
                    
$values[]= "'$nombre'";
                }
            }
        } 
    }
    
$camposimplode(", "$campos);
        
$valuesimplode(", "$values);
    echo 
"INSERT INTO ($campos) VALUES ($values)";
}
?>
... debería servirte.. no lo he probado directamente.. solo he recojido lo dicho por los enlaces que te he dejado... creo en mi .. jejeje... si esto no funciona estaría mintiendo todo el tiempo

Espero ya puedas adaptarlo... es algo sencillo, solo lo básico... puede hacerse con while() y foreach() como dije... pero OJO que $_FILES es una matríz MULTIDIMENCIONAL (tres niveles) y con foreach() deberás hacer uno dentro de otro (ó tres si quieres hacerlo directamente desde $_FILES ...

Quitate de curiosidad y cambia el for() por esto:
Código PHP:
foreach($_FILES['file'] as $atributo => $matriz) {
      foreach(
$matriz as $indice => $valor)
            echo 
"$atributo => $indice => $valor<br>";

... creeque que si entiendes sobre matricez verás el potencial que tienen... Tu código se reduciría en gran medida lo cuál se traduce en una página de menoe peso y eficiencia en tu aplicación... el simple hecho de que el mismo script serviría para N campos... así podrías, con JavaScript dar una opción de "agregar una nueva foto" donde podrías no mostrar ningún campo y el usuario al clickear podría añadir cuantos archivos quisiese... que eso no signifique que no puedes poner límites... pero bueno, solo es información que te servirá si la estudias...

www.php.net/array
www.php.net/foreach

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"