Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados:
Como ainda não consegui ir além das funções em php (arrays e classes, por enquanto, são quase grego para mim), tentei um código burro que funciona em tudo, menos no que diz respeito aos checkbox.
Tenho o seguinte formulário:
<div id="conteudo">
<form name="atualiza" method="post" action="updates.php">
<?php if (!empty($rs1));{echo "<p><span class=red>ATENÇÃO! ".$count1." inscritos sem email</span></p>";}?>
<table class="tablesorter {sortlist: [[0,1]]}" border="0" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th id="tabNome"><span>Para corrigir, edite na própria tabela</span></th>
<th id="tabMail"><p align="right">CERTIFICADOS:</p></th>
<?php for ($n=1;$n<=11;$n++) {echo "<th>".$n."</th>";} ?>
<th>pgto</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="13"><input type="submit" class="adm" value="atualizar" name="atualizar" /></td>
</tr>
</tfoot>
<tbody>
//aqui começa o que “interessa”.
<?php while($rs = mysql_fetch_array($result)) {?>
<tr>
<td><input type="hidden" name="dt_atual[]" id="dt_atual" value="<?php echo date('Y-m-d H:i:s') ?>" />
<input type="hidden" name="atual_por[]" id="atual_por" value="<?php echo $usuario?>" />
<input type="hidden" name="id[]" id="id" value="<?php echo $rs['id']?>" />
<input type="text" name="nome[]" id="nome" value="<?php echo $rs['nome']?>" class="nome" /></td>
<td>
<input type="text" name="emailUp[]" id="emailUp" value="<?php responde($rs['email'],"[".$rs['ddd1']."] ".$rs['tel1'])?>" /></td>
<?php for ($j=1;$j<=11;$j++) { ?>
<td class="linha"><input type="checkbox" name="cert<?php echo $j?>[]" id="cert<?php echo $j?>" value="S" <?php valCheck($rs['cert'.$j])?> /></td>
<? ;}?>
<td class="sel"><select name="pgto[]" id="pgto" size="1">
<option value="N" <?php if($rs['pgto']=="N"){echo " selected";}?>>Não</option>
<option value="I" <?php if($rs['pgto']=="I"){echo " selected";}?>>Isento</option>
<option value="S" <?php if($rs['pgto']=="S"){echo " selected";}?>>Sim</option>
</select></td>
</tr>
</tbody>
<?php ;}?>
</table>
</form>
</div>
//Obs.: function valCheck($value) {if($value=="S") {print " checked";}} -> apenas para ativar os checkbox cujo valor é “S” no bd.
Na verdade, um form bem simples, buscando na tabela id, nome, email, 11 campos de certificados (cert1, cert2, cert3, cert4 etc…), pgto, dt_atual e atual_por.
Pagina updates.php:
if ($_POST['atualizar'] <> ''){
mysql_select_db(“meudb", $con) or die(mysql_error());
$size = count($_POST['id']);
for($i=0;$i<$size;$i++){
for($j=1;$j<=11;$j++){
if(!isset($cert[$j][$i])){$cert[$j][$i]==='N';}else{$cert[$j][$i]==='S';}}
$sql2="UPDATE inscritos1 SET nome='$nome[$i]', email='$emailUp[$i]', cert1='$cert1[$i]', cert2='$cert2[$i]', cert3='$cert3[$i]', cert4='$cert4[$i]', cert5='$cert5[$i]', cert6='$cert6[$i]', cert7='$cert7[$i]', cert8='$cert8[$i]', cert9='$cert9[$i]', cert10='$cert10[$i]', cert11='$cert11[$i]', pgto='$pgto[$i]', dt_atual='$dt_atual[$i]', atual_por='$atual_por[$i]' WHERE id='$id[$i]'";
$result2=mysql_query($sql2);
}
header("Location: index.php");
mysql_close();
exit;
}
O problema aqui, para um burro como eu, é que a sql faz o update "certinho" (conforme o id[$i]) de todos os campos, menos nos campos "cert" seqüenciais.
Por exemplo: se ativo os 3 primeiros checkbox do primeiro registro (cert1, cert2 e cert3 do registro 1) e os 3 últimos do, digamos, segundo registro (cert9, cert10, cert11, registro 2), o código desconsidera o id[$i] e coloca estes valores do cert9, cert10 e cert11 no id 1…
Juro que:
Desde já, obrigado por qualquer ajuda,
Carlos
Carregando comentários...