Foros del Web » Programando para Internet » PHP »

como cambiar este bucle for

Estas en el tema de como cambiar este bucle for en el foro de PHP en Foros del Web. cuando guardo los datos en mi base de datos siempre me guarda los input de tipo file que tenga aunque no se suba nada a ...
  #1 (permalink)  
Antiguo 06/05/2011, 07:51
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
como cambiar este bucle for

cuando guardo los datos en mi base de datos siempre me guarda los input de tipo file que tenga aunque no se suba nada a traves de ellos.
el codigo es el siguiente:
Código PHP:
Ver original
  1. $numFiles = count($_FILES['archivo']['name']);
  2.     for($asunto=0; $i<$numFiles; $asunto++){
  3. //codigo}

lo que yo quiero es que me guarde solo los archivos subidos osea que si en mi formulario hay tres input y solo subo dos archivos que me guarde solo dos.
  #2 (permalink)  
Antiguo 06/05/2011, 08:01
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: como cambiar este bucle for

for($asunto=0; $i<$numFiles; $asunto++){
if(pregunta aqui si el $_FILES tiene archivo){
//codigo
}
}

por otro lado, sería buena idea que a cada elemento de formulario de tipo files le pusieras un nombre distinto correlativo, por ejemplo:

$_FILES['archivo']['name1']
$_FILES['archivo']['name2']
$_FILES['archivo']['name3']

y luego solo haces 1 for
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 06/05/2011, 08:13
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como cambiar este bucle for

Como le pregunto si tiene archivo subido asin

Código PHP:
Ver original
  1. if ($_FILES['archivo'][$asunto]<=1){
  2. //codigo}

Última edición por roboty; 06/05/2011 a las 08:30
  #4 (permalink)  
Antiguo 06/05/2011, 08:34
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: como cambiar este bucle for

tu deberías saber como se llama el campo del archivo, yo estoy suponiendo, como haces para subir varios archivos? supongo que pones varios campos file con nombres distintos....
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #5 (permalink)  
Antiguo 06/05/2011, 08:42
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como cambiar este bucle for

stramin osea que si a los archivos le pongo un nombre como dices tu correlativos asin

Código HTML:
Ver original
  1. name='archivo[]'
  2. name'archivo[]'
  3. name='archivo[]'

entonces como seria algo asin:
Código PHP:
Ver original
  1. $numFiles = count($_FILES['archivo']['name']);
  2.     for($archivo=0; $archivo<$numFiles; $archivo++){
  3.           if($numFiles<=1){
  4. }}

esque asin no me funciona en mi codigo primero me guarda las fotos en mi carpeta del servidor y luego me lo tiene que guardar el nombre del archivo en la base datos pero no me funciona sabrias decirme que hago mal?

Última edición por roboty; 06/05/2011 a las 09:30
  #6 (permalink)  
Antiguo 06/05/2011, 10:15
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: como cambiar este bucle for

no, si haces esto:

name='archivo[]';
name='archivo[]';
name='archivo[]';

no obtendras ningun resultado mas que una cadena de texto igual a "archivo[]" en la variable $name
  • primero recuerda que las variables en PHP empiezan con $:
    $name='$archivo[x]';
  • segundo, no necesitas encerrar entre comillas las variables:
    $name=$archivo[x];
  • tercero, debes guardar cada valor en una variable distinta:
    $name1=$archivo['arch1'];
    $name2=$archivo['arch2'];
    $name3=$archivo['arch3'];
  • y por ultimo si las variables son de archivo usa $_FILES y agrega ['name'] si quieres el nombre:
    $name1=$_FILES['arch1']['name'];
    $name2=$_FILES['arch2']['name'];
    $name3=$_FILES['arch3']['name'];

Ahora solo debes hacer if para saber si se ha subido archivo en cada una:

if($_FILES['arch1']['name']) //subo el archivo

Si quieres optimizar usa un for:

for($f=1;$f<=3;$f++) if($_FILES["arch$f"]['name']) //subo el archivo

creo que no se me olvida nada XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #7 (permalink)  
Antiguo 06/05/2011, 10:46
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como cambiar este bucle for

Gracias stramin los del 'archivo[]' era en name de como esta en el formulariolo como antes me lo preguntabas.

bueno no lo tengo claro porque yo lo que tengo es esto:

[HIGHLIGHT="PHP"]
$numFiles = count($_FILES['archivo']['name']);
for($indice=0; $indice<$numFiles; $indice++){
//codigo
}

lo que pasa que me cuenta todo los archivos incluidos en los que no se envia nada eso no es lo que quiero, lo que yo quiero es ponerle una condicion osea que me cuente solo los archivos subidos como me habeis comentado pero no me sale probe asin:

Código PHP:
Ver original
  1. $contador=0;
  2. for($contador=0; $contador ++){
  3. $numFiles = count($_FILES['archivo']['name'][$contador]);
  4.   for($indice=0; $indice<$numFiles; $indice++){
  5. if($indice=<0){
  6. //codigo
  7. }}
  8. }
pero no se como hacerlo no esta bien me corriges

Última edición por roboty; 06/05/2011 a las 10:53
  #8 (permalink)  
Antiguo 06/05/2011, 11:48
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: como cambiar este bucle for

no me estas entendiendo, o quizas yo no te entiendo a ti, si estas subiendo archivos estas poniendo un objeto de formulario del tipo file, así como esto:

<input name="mifile" type="file" id="mifile">

sin embargo si estas subiendo varios archivos supongo que haces algo como esto:

<input name="mifile1" type="file" id="mifile1">
<input name="mifile2" type="file" id="mifile2">
<input name="mifile3" type="file" id="mifile3">

por lo tanto, para subirlos debes hacer algo como esto:

if($_FILES["mifile1"]['name']) //subo el archivo
if($_FILES["mifile2"]['name']) //subo el archivo
if($_FILES["mifile3"]['name']) //subo el archivo

y si quieres lo del for que te dije antes puedes hacerlo asin:

for($f=1;$f<=3;$f++) if($_FILES["mifile$f"]['name']) //subo el archivo

o sea que en vez de poner el contador como el tercer elemento de un arreglo tridimensional
($_FILES['archivo']['name'][$contador])

hazlo como un arreglo bidimensional
($_FILES["mifile$contador"]['name'])
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #9 (permalink)  
Antiguo 06/05/2011, 12:25
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como cambiar este bucle for

asin lo tengo yo

codigo html:
Código HTML:
Ver original
  1. <input name="archivo[]" type="file" >
  2. <input name="archivo[]" type="file" >
  3. <input name="archivo[]" type="file" >

lo guardo con un bucle for asin:
Código PHP:
Ver original
  1. $numFiles = count($_FILES['archivo']['name'];
  2. for($indice=0; $indice<$numFiles; $indice ++){
  3. //aqui el codigo para subir archivos a mi carpeta del servidor
  4. //codigo para guardar el nombre del archivo en mi base de datos
  5. // los datos del form los recojo con $_FILES['archivo']['name'][$indice]
  6. }

este codigo me funciona bien cuando me guarda los archivos en mi carpeta del servidor lo que no funciona bien es que cuando me guarda el nombre de el archivo siempre me guarda tres registros aunque envie solo uno y lo que quiero es que en mi base de datos no haiga un campo vacio.

Stramin me explique mal por eso no me entendistes lo siento espero que ahora me entiendas. No se si tengo que hacer un bucle for para la subida de archivos y otro bucle for para guardar la base de datos la verdad que no consigo dar con la solucion espero que me orientes

No hay otra forma de hacerlo con menos codigo

Última edición por roboty; 06/05/2011 a las 12:32
  #10 (permalink)  
Antiguo 06/05/2011, 14:26
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: como cambiar este bucle for

me rindo XD

intenta así:

Código PHP:
Ver original
  1. $numFiles = count($_FILES['archivo']['name'];
  2. for($indice=0; $indice<$numFiles; $indice ++){
  3.   if($_FILES['archivo']['name'][$indice]){
  4.     //aqui el codigo para subir archivos a mi carpeta del servidor
  5.     //codigo para guardar el nombre del archivo en mi base de datos
  6.     // los datos del form los recojo con $_FILES['archivo']['name'][$indice]
  7.   }
  8. }
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #11 (permalink)  
Antiguo 06/05/2011, 14:35
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: como cambiar este bucle for

Gracias stramin ahora si ya entiendo el problema que tenia gracias a ti saludos

Etiquetas: bucle
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 18:32.