Foros del Web » Programando para Internet » PHP »

recoger valores de chekboxes en php

Estas en el tema de recoger valores de chekboxes en php en el foro de PHP en Foros del Web. hola de nuevo, sigo con problemas en los checkboxes, a saber: tengo una pagina en la que desde una Base de Datos recojo los datos ...
  #1 (permalink)  
Antiguo 31/08/2005, 08:45
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 5 meses
Puntos: 7
recoger valores de chekboxes en php

hola de nuevo, sigo con problemas en los checkboxes, a saber:
tengo una pagina en la que desde una Base de Datos recojo los datos de un informe, si tiene documento asociado, aparece un chekbox con el nombre del documento, precedido de un campo para poner un documento diferente si fuese el caso esto lo hago con:
Código PHP:
 <input name="nombre1" type="file" class="casillas" size="30">
              <? if($row ['Documento']!= "") {
                echo 
'<input type="checkbox" name="checkbox"  checked >'.$row ['Nombre'];                
              }else{
                echo 
'<input type="hidden" name="checkbox" unchecked>'.$row ['Nombre'];
              };
?>
la funcionalidad es la siguiente, si hay documento el chebox aparece marcado, si no hay documento no aparece el checkbox, hasta aqui bien, si modifico cualquier dato, excepto el documento, funciona bien, pero aqui esta el problema, si desmarco el checkbox a secas, funciona bien, lo elimina de la Base de Datos, pero si lo desmarco e introduzco un archivo nuevo, no lo sube, da cadena vacia, igualmente, si no aparece el checkbox, por no haber documento, e introduzco un archivo nuevo, tampoco lo sube, sigue dando cadena vacia. En la pagina que se encargaria de recibir los datos tengo lo siguiente:
Código PHP:
$ssql "Update datos set Referencia='$ref', TituloCast='$titulo1', TituloIng='$titulo2', Descripcion='$descripcion1', DescripcionIng='$descripcion2', TipoDoc='$tipo', Fecha='$fecha', FechaIng='$fecha2' ";
    if (isset(
$_POST['checkbox']))
   {
           
$binario_contenido =$row['Documento'];
        
$binario_nombre=$row ['Nombre'];    
        
$binario_tipo=$row ['Mime'];

    }else{
        
$binario_nombre_temporal=$_FILES['nombre1']['tmp_name'] ;
    if (
$binario_nombre_temporal ==''){
        
$binario_contenido ='';
        
$binario_nombre='';    
        
$binario_tipo='';
    }else{
        
// leer del archvio temporal .. el binario subido.
        
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal)));
        
// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
        
$binario_nombre=$_FILES['nombre1']['name'];
        
$binario_tipo=$_FILES['nombre1']['type']; 
    };
    };
    
$ssql .= ", Nombre='$binario_nombre', Documento='$binario_contenido', Mime='$binario_tipo'"
la verdad no se que pasa, y me esta volviendo loco.

Por cierto, para pasar los datos lo hago mediante $_GET, y lo paso, no directamente sino con javascript con la sentencia:
Código HTML:
fdocumento.action = "documento_update.php";
fdocumento.submit();
Siento todo este tocho, pero es que llevo un par de dias con esto y no soy capaz de resolverlo(aunque seguro es una tonteria), desde ya mi agradecimiento por la ayuda.
  #2 (permalink)  
Antiguo 31/08/2005, 09:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Debes tener presente que cuando un checkbox es seleccionado, este pasa a tu script de proceso con su valor definido si usas "value" para tu checkbox .. pero si no está seleccionado, no pasa nada a tu script, es decir .. obtienes un "variable no definida" .. Por ende para procesar ese dato de un checkbox donde sólo te interesa saber si está marcado o se marcó .. o no .. puedes validar de la siguiente manera:

Código PHP:
if (isset($_POST['nombre_de_tu_checkbox'])){
// se marcó tu checbox ..
} else {
// no se marcó

Esto ya lo conoces y así lo haces ... (despues de re-leer tu mensaje ya ví que así lo hacias).

Ahora .. lo que no indicas es el código completo de tu formulario .. no se vé que "method" definistes. Tal vez no indicastes método (method) en ese caso se asume que si tu haces un "submit" ya sea por un botón o con javascritp con tu fdocumento.submit(); .. los datos se enviarán por el método que ahí definas en tu formulario .. EN tu caso pretendes recogerlos por POST y tal vez tengas GET en method o bien no definistes nada en <form .. method= ..> y por ende se asume GET.

Un saludo,
  #3 (permalink)  
Antiguo 31/08/2005, 10:37
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 5 meses
Puntos: 7
Cluster, gracias por tu pronta respuesta, en el mensaje anterior tenia un error, era GET y no POST, esto lo arregle, pero sigue sin funcionar, el resto de campos si los envia y modifica
la etiqueta form es :
Código PHP:
<form name="fdocumento" method="get" enctype="multipart/form-data"
y en el boton pongo:
Código PHP:
<input name="Submit32" type="button" class="botones" onClick="javascript:Enviar();" value="enviar"
El codigo Javscript es:
Código HTML:
<script language="JavaScript">

        function Enviar()
        {
            // validación Referencia
            if (document.fdocumento.ref.value.length==0){
               alert("Tiene que escribir la referencia del documento")
               document.fdocumento.ref.focus()
               return ;
            }


            // validación Tipo
            if (document.fdocumento.tipo.value==-1){
                alert('Debe introducir un tipo de documento');
                document.fdocumento.tipo.focus();
                return;
            }
			fdocumento.action = "documento_update.php";
    		fdocumento.submit();
            
        }
    </script> 

la verdad es que me esta volviendo loco de remate, si puedes echarme una mano(o otro cualquiera), te estare agradecido para siempre.
Gracias de nuevo.
  #4 (permalink)  
Antiguo 31/08/2005, 10:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. si envias archivos (con tu campo file) el método debe ser POST (por lo menos así dice php.net).

En consecuencia .. deberías validar por $_POST tus variables (todas las que necesites) .. sabiendo que si no "existe" .. es que no estaba seleccionado tu checbox de nombre que le des como te comenté.

SI tienes problemas para ver que te va pasando por tus variables externas usa:

Código PHP:
echo "<pre>";
print_r($_POST);
echo 
"</pre>"
Un saludo,
  #5 (permalink)  
Antiguo 31/08/2005, 11:54
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 5 meses
Puntos: 7
Un millon, eran por usar get en lugar de post, ahora funciona a las mil maravillas
Gracias
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:24.