Foros del Web » Programando para Internet » PHP »

Usar el mismo código para validar varios campos

Estas en el tema de Usar el mismo código para validar varios campos en el foro de PHP en Foros del Web. Hola, Mi problema es el siguiente: tengo 8 campos de imágenes que se activan al marcar el input hab X . X representa el número ...
  #1 (permalink)  
Antiguo 17/07/2011, 11:41
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Usar el mismo código para validar varios campos

Hola,

Mi problema es el siguiente: tengo 8 campos de imágenes que se activan al marcar el input habX. X representa el número de la foto. Ejemplo:

<input type='checkbox' name='habX' OnClick='..'>
<div id='foto_campoX'>
<input type='file' name='fotoX' />
</div>

Uso el siguiente código para validar estos campos:

Código PHP:
Ver original
  1. if($_POST['hab1'] == true) {
  2.        
  3.         if($_SESSION['foto1'] != '') {
  4.             if(strlen($_FILES['foto1']['name']) > 3) {
  5.                 $nombre_foto = strtolower($_FILES['foto1']['name']);
  6.                 $nombre_foto = str_replace(' ','_',$nombre_foto);
  7.                
  8.                 unlink("../".$_SESSION['foto1']."");
  9.                 move_uploaded_file($_FILES['foto1']['tmp_name'], "../images/pisos/$nombre_foto");
  10.                 $foto1 = "images/pisos/$nombre_foto";
  11.                
  12.                 $_SESSION['foto1'] = "images/pisos/$nombre_foto";
  13.                 $cant_fotos++;
  14.             } else {
  15.                 $foto1 = $_SESSION['foto1'];
  16.             }
  17.         } else {
  18.             if(is_uploaded_file($_FILES['foto1']['tmp_name'])) {
  19.                 $nombre_foto = strtolower($_FILES['foto1']['name']);
  20.                 $nombre_foto = str_replace(' ','_',$nombre_foto);
  21.                
  22.                 move_uploaded_file($_FILES['foto1']['tmp_name'], "../images/pisos/$nombre_foto");
  23.                 $foto1 = "images/pisos/$nombre_foto";
  24.                 $_SESSION['foto1'] = "images/pisos/$nombre_foto";
  25.                 $cant_fotos++;
  26.             } else {
  27.                 $foto1 = '';
  28.             }
  29.         }
  30.        
  31.     }

Funciona de maravilla pero el problema es que para validar los 8 campos tendría que escribir el mismo código 8 veces. Parece fácil copiar, pegar y cambiar el número pero esto va a hacer muy pesado mi archivo y es lo que no deseo.

Espero que puedan ayudarme.
  #2 (permalink)  
Antiguo 17/07/2011, 12:23
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 3 meses
Puntos: 202
Respuesta: Usar el mismo código para validar varios campos

Hay algo que se llaman funciones...

Saludos
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #3 (permalink)  
Antiguo 17/07/2011, 12:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Usar el mismo código para validar varios campos

Aparte de que existen funciones como te comenta IEKK, también coloca los nombres de los campos algo así
Código PHP:
Ver original
  1. <input type="text" name="foo[]" />

De esa forma es fácil de trabajar luego con PHP.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 17/07/2011, 14:31
Avatar de duskrow  
Fecha de Ingreso: abril-2008
Mensajes: 267
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: Usar el mismo código para validar varios campos

simplmente metelo en un ciclo for y el identificador de 1 2 3 4 5 6 7 8 lo metes en la variable de inicio del ciclo

saludos
__________________
"El sabio no dice lo que piensa,pero piensa lo que dice"
Att Miguel Lomeli
Visita mi Blog
  #5 (permalink)  
Antiguo 18/07/2011, 06:37
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Respuesta: Usar el mismo código para validar varios campos

Gracias a todos por sus respuestas.

El problema de usar una function o un ciclo for es que tengo la siguiente variable: $foto1. La cual debe cambiar a $foto2, $foto3, etc.

El escribir $foto$i me va a dar error. Es por eso que buscaba otra solución.

Gracias nuevamente y espero puedan seguir ayudándome
  #6 (permalink)  
Antiguo 18/07/2011, 06:43
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 3 meses
Puntos: 202
Respuesta: Usar el mismo código para validar varios campos

Cita:
Iniciado por kenproxd Ver Mensaje
El escribir $foto$i me va a dar error. Es por eso que buscaba otra solución.
¿y si concatenas? $foto.$i
De todas formas la solución de abimaelrc sigue siendo la más fácil y limpia.

Saludos
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #7 (permalink)  
Antiguo 18/07/2011, 06:44
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Usar el mismo código para validar varios campos

Para hacerlo con un for puedes intentar guardar los datos a un array.

En PHP puedes hacer que los índices de un array sean cadenas y no enteros. Es decir, puedes tener el array fotos de la siguiente manera:
$fotos (['foto1'] -> "contenido_foto_1" ['foto2'] -> "contenido_foto_2" ...)

De esta forma, a la hora de rescatar los valores, tendrías que acceder al array como $foto['foto1'], $fotos['foto2'] y así sucesivamente. De esta forma, sí puedes utilizar un bucle for (por ejemplo) para recorrer el array, usando lo siguiente:
Código PHP:
for($i 0$i count($fotos); $i++) {
    echo 
$fotos['foto' $i];
}. 
Espero que te sirva, un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #8 (permalink)  
Antiguo 18/07/2011, 06:51
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Respuesta: Usar el mismo código para validar varios campos

Mil gracias por sus respuestas.

La concatenación no me sirvió. Al final logré acomodarlo usando la idea de abimaelrc.

Saludos! :)
  #9 (permalink)  
Antiguo 18/07/2011, 13:13
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 3 meses
Puntos: 202
Respuesta: Usar el mismo código para validar varios campos

Cita:
Iniciado por kenproxd Ver Mensaje
Mil gracias por sus respuestas.

La concatenación no me sirvió. Al final logré acomodarlo usando la idea de abimaelrc.

Saludos! :)
No dije que la solución fuera concatenar, aunque sí que se puede hacer así, sino que te daba error esto :

$foto$i porque eso no se puede hacer así sino que tienes que concatenar, p.e: $var= $foto . $i

Y sí, la idea de abimaelrc era lo mejor. Saludos
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Etiquetas: código, veces
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 15:11.