Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/05/2014, 04:31
Avatar de alberthp
alberthp
 
Fecha de Ingreso: abril-2013
Mensajes: 12
Antigüedad: 10 años, 11 meses
Puntos: 0
Pregunta [HTML-PHP] Enviar datos múltiples checkbox al controlador

Buenas,

Recientemente entré en un proyecto como programador web. Soy novato. Muy novato. Quiero decir, tengo algo de experiencia, he hecho mis pinitos, pero mi formación es escasa y aunque tengo dos FP de programación, me siento eternamente como si no supiera nada. Los profesores nos explican cómo poner en marcha un motor de carbón cuando hay de gasolina (bonita metáfora), se lo dices y lo único que te dicen es "el currículo que nos ha dado Educación es así".

En fin...

Tengo una pequeña duda. He probado de varias maneras y estoy casi seguro de que estoy rozando la respuesta correcta, pero no llego a tocarla.

La cuestión es que tengo diversos registros variables, en los que cada uno hay un checkbox que al seleccionar y luego clickar a un botón, envía los datos a la función del controlador correspondiente y entra en la DB, para luego volver y cambiar el checkbox por un "recibido por...". Me va bien si marco una sola casilla, pero si selecciono varias únicamente me coge la primera.

HTML:
Código:
<td>
    <p>
        <?php 
            if(isset($arraysalidas[$i]['recibido']) && $arraysalidas[$i]['recibido']=="1" && isset($arraysalidas[$i]['empleado_recibe']) ){
                echo "<font color=green>Recibido por:</font><br>".$arraysalidas[$i]['empleado_recibe']."<br>";	
                if(isset($arraysalidas[$i]['fecha_recibido'])) echo $arraysalidas[$i]['fecha_recibido'];
            }else{  ?>
            <form id="recibidos" name="recibidos" method="post" action="<?=base_url('informes/reparto2');?>">
                <input type="hidden" id="id_ref_txt_busq" name="id_ref_txt_busq" value="<?=$arraysalidas[$i]['referencia_txt']?>" >
                <input id="checkbox" type="checkbox"  value="<?=$arraysalidas[$i]['id']?>" name="recibido[]">
            </form>
        <?php }?>
    </p>
</td>
Esto por sí solo no hace nada si no se le da al botón recibidos:

Código:
<button type="submit" id="recibidos" onClick="document.forms['recibidos'].submit();">Recibido</button>
Y luego el PHP donde se deberían recibir los datos..., la parte donde tengo problemas:

Código:
//INICIO - Marcar pedido recibido en tienda
//Si se recibe el array con los marcados a Recibidos (es decir: Marcar recibidos)
    if($this->input->post('recibido')){
        $id_emp=$this->centinela->getId();//Recoge el id de empleado
        //Viene a marcar salidas como recibidas
            $arrayRecib = ($this->input->post('recibido'))?($this->input->post('recibido')):(array());
                foreach($arrayRecib as $key => $value) {
                    $this->M_salidas->update_recibido($value, $id_emp);
		}
    } 
El resultado es que sólo se me marca el primero de los checkbox seleccionados, el resto no pasa nada. Supongo que es por ese "input->post('recibido')", pero cuando lo cambié por el botón (recibidos), no me hacía nada de nada xD También he intentado con recibido[], recibido[$i] y un for delante, con un foreach...

Ya no sé qué más hacer xD

¿Me puede ayudar alguien y, sobretodo, ¿explicarme por qué? ¿qué hago mal o qué no entiendo de lo que estoy haciendo?

Gracias de antemano