Foros del Web » Programando para Internet » PHP »

Validar CheckBOx PHP + JS

Estas en el tema de Validar CheckBOx PHP + JS en el foro de PHP en Foros del Web. Espero que este sea el lugar adecuado para la consulta.. sino sepan disculparme.. tengo un script PHP que arma un formulario con x cant de ...
  #1 (permalink)  
Antiguo 26/04/2006, 01:43
 
Fecha de Ingreso: noviembre-2004
Ubicación: Montréal - Santa Fe
Mensajes: 140
Antigüedad: 13 años, 1 mes
Puntos: 2
Validar CheckBOx PHP + JS

Espero que este sea el lugar adecuado para la consulta.. sino sepan disculparme..

tengo un script PHP que arma un formulario con x cant de check box de esta forma:

Código PHP:
$j=($i%4);
              if(
$j==0){
                  echo 
'<tr></tr>';
              }
              echo 
"<td>";
              echo 
"<table width=\"90\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
              echo 
"  <tr>\n";
              echo 
"    <td id='fotos2' class='texto66' height=\"90\" align=\"center\" valign=\"middle\">";
              echo 
"      <input type='checkbox' name='archivos[]' value='$archivo'><br>Eliminar\n";
                 echo 
"    </td>";
              echo 
"    <td id='fotos' width=\"90\" height=\"50\" valign=\"top\"><img src=\"$fotos/thumbs/tn_$archivo\" class=\"gallery2\"/></td>\n";
                echo 
"</table>";
              echo 
"</td>"
y una funcion borrar tambien en PHP que borra de acuerdo a los Checkbox activos que haya.. son enviados por POST como array de X cant

Código PHP:
if (isset($_POST['archivos'])) {  //Valido para BORRAR LA IMAGEN!!!!!

    
foreach ($_POST['archivos'] as $archivo){ 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

   
$ruta_archivo_original="../pro_users_fot/" $usuario"/" urldecode($archivo);
   
$ruta_archivo_thumbs="../pro_users_fot/" $usuario"/thumbs/tn_" urldecode($archivo);    
   
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   
   
if ((file_exists($ruta_archivo_original)) || (file_exists($ruta_archivo_thumbs))){ 
       @
unlink($ruta_archivo_original); 
       @
unlink($ruta_archivo_thumbs); 
       
$mensaje '<span style="color: #38ad09" class="panelerror"/> -  Su foto fue borrada con éxito!</span><BR><BR>';
       
//echo $ruta_archivo_original." --> Borrado<br>"; 
       //$nohayfotos = "<br><br><br><br>";
   
} else { 
       
//echo "<b>".$ruta_archivo_original." --> FALLÓ Borrado</b><br>"; 
       
$mensaje '<span class="panelerror"/> - Ocurrió un error al borrar - intente nuevamente</span><BR><BR>';
   } 
}  

 echo 
$mensaje;
     
    

todo eso funciona de maravillas.... el tema es que ahora kiero que si la persona no ha marcado nada me salga un mensaje en JS de que no puede borrar porque no se ha marcado ningun checkbox...
para ellos hize esto

Código HTML:
function eliminar() {
	cantidad=document.forms[0].archivos.length;
	num=0;
             for (i = 0; i < cantidad; i++){
                    if(document.forms[0].archivos[i].checked == true)
                       {num++;}
              }
   	if (num!=0){
	          alert(" Hay seleecinado");
	          document.forms[0].action='subir_fotos.php?accion=eliminar';
	          document.forms[0].submit();
	       }
	        else { 
	          alert(" ¡ No hay fotos selecionadas !\n No se puede Eliminar nada ");
		  exit();
	       }  

}
Mi problema es que asi no como esta no anda... si en el formulario en lugar de declarar como arrayr el NAME del CHECK
Código PHP:
echo "      <input type='checkbox' name='archivos[]' value='$archivo'><br>Eliminar\n"
pongo como name solo
Código PHP:
echo "      <input type='checkbox' name='archivos' value='$archivo'><br>Eliminar\n"
funciona perfecto el JS pero no me borra en PHP y hace cualquier cosa

alguien me puede dar una ayudita??

Sdsl
  #2 (permalink)  
Antiguo 26/04/2006, 08:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El problema que tienes con tus rutinas javascript debes resolverlo en javascript (pregunta en dicho foro) .. Lo que es PHP y su trabjo con ese tipo de "agrupaciones" de elementos de formularios ha de ser -si o si- como un array:

name="nose[]"

Yo no domino nada de Javacript .. pero el tema pasa por tratar los elementos (u objetos) del formulario por su "id" (me parece?) y no por su "name" .. Creo que por ahí va el tema .. confirmalo en el foro de Javascript.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 26/04/2006, 09:32
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Hola:

Bueno, dí una respuesta en la pregunta hecha en javascript, y de paso pongo el comentario aquí, porque me parece que se trata de una pregunta bastante recurrente...

La cuestión es que el problema está en que al referenciar los objetos separados por puntos se acostumbra a usar los índices dentro del corchete, pero el nombre es una cadena con los corchetes, así que debe usarse otra sintaxis... poniendo el nombre y sus corchetes como una cadena (entrecomillada) también entre corchetes... y luego los corchetes propios de la indexación. Por ejemplo:

document.forms["archivos[]"][i]...

¡Sí, si !... sé que es cosa de javascript, pero sin esa sintaxis obligada -si o si- no sería necesario preocuparse de javascript...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 26/04/2006, 10:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Gracias caricatos por el comentario.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 23:39.