Comunidad de diseño web y desarrollo en internet online

combinar arrays en php para generar UPDATES mysql

Citar            
MensajeEscrito el 02 Sep 2015 10:04 am
Tengo este form:

Código :

<?php
                            while ($result = mysqli_fetch_array($query)) {
                                $idFrequencia = $result['idFrequencia'];
                                $nomeOficina = utf8_encode($result['nomeOficina']);
                        $nomeParticipante = utf8_encode($result['NomeParticipante']);
                        $precenca = utf8_encode($result['precenca']);
                                ?>
                        <td><?php echo $idFrequencia; ?></td>
                        <td><?php echo $nomeParticipante; ?></td>
                        <input type="hidden" name="idFrequencia[]" value="<?php echo $idFrequencia; ?>">
                        <td><input type="checkbox" class="checkbox" name="precenca[]" value="1"></td>
                            </tr>
                        <?php } ?>


Quiero generar un update para cada registro de la tabla.
lo que pasa es que al no seleccionar alguno de los checkbox los arrays quedan de diferente dimensión.

Código :


$idFrequencia = isset($_POST['idFrequencia']) ? $_POST['idFrequencia'] : null;
$precenca = isset($_POST['precenca']) ? $_POST['precenca'] : null;

$idFrequenciaPrecenca = array_combine(array_intersect_key($idFrequencia, $precenca), array_intersect_key($precenca, $idFrequencia));
foreach($idFrequenciaPrecenca as $key => $value) { //recorro el array
 if (!empty($key) || !empty($value)) {$sql=sprintf("UPDATE frequencia SET precenca = %d WHERE idFrequencia = %d;", trim($value), trim($key));}
 $sqls[$i] = $sql;
 $i++;
 }


al no seleccionar un checkbox los arrays quedan asi:
Array1
(
[0] => 5
[1] => 6
[2] => 7
)
Array2
(
[0] => 1
[1] => 1
)

lo cual hace que modifique un registro que no debería ser modificado.
como puedo hacer para que los arrays tengan una misma dimensión?
o alguna otra solucion para generar los UPDATES?
Desde ya gracias!

Por nattadsa

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Sep 2015 12:28 pm
En el "value" del input tipo checkbox en vez de poner un simple 1, pon el índice del array al que se refiere. De esta forma en los valores del array "precenca" de PHP tendrás el índice que apunta en el otro array que está checkeado y los que faltan no lo están.

Por DriverOp

Claber

2510 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Sep 2015 06:40 pm
Si muchas gracias!
lO que hice fue:
<td><input type="checkbox" class="checkbox" name="precenca[]" value="<?php echo $idFrequencia; ?>"></td>
pasar el id y en el sql :
UPDATE frequencia SET precenca = 1 WHERE idFrequencia = %d;", trim($idFrequencia[$i])
deje el valor de precenca fijo.
Gracias

Por nattadsa

5 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.