Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Todas vez que tento atulizar uma informação, onde marco-a por um checkbox, todas as outras informações são atualizadas.
Por exemplo, tenho uma lista de informações. cada informação é
uma linha e em cada uma dessas linhas tem um checkbox e um listbox.
Toda informação tem um campo de STATUS. Esse listbox serve para modificar esse STATUS,
que depois de escolhido é marcado no chekbox e envia o para o banco.
Até funciona, mas quando atualiza, atualiza todas as outras informações também.
No HTML, no VALUE do CHECKBOX, coloquei o ID:
<td><input type="checkbox" name="marcarPendencia[]" value="<?php echo $id_cataloga_erro; ?>"></td>
NO PHP(UPDATE):
mysql_query ("UPDATE tb_cataloga_erro SET status='".$status[$i]."' WHERE id_cataloga_erro = id_cataloga_erro ");
Não entendi porque atuliza todas as informações.
Quando marco o checkbox, é aplicada essa informação q a todas as outras.
Alguem tem ideia do que possa ser?
Falaeee, Beraldo!!!rsrs
Tô migrando ainda para MySQLi. Só que aos poucos.
Em relação a variável, quando a coloco não funciona.
Mas quando deixo o campo como está no banco, funciona.
Ex:
NÃO FUNCIONA:
$id_erro = $_POST['id_cataloga_erro'];
mysql_query ("UPDATE tb_cataloga_erro SET status='".$status[$i]."' WHERE id_cataloga_erro = '$id_erro ' ");
FUNCIONA:
mysql_query ("UPDATE tb_cataloga_erro SET status='".$status[$i]."' WHERE id_cataloga_erro = 'id_cataloga_erro ' ");
Por isso não estou entendendo ainda.
Vou tentar a variável novamente.
No HTML tem:
<input type="hidden" name="id_cataloga_erro[]" value="<?php echo $id_cataloga_erro ; ?>">
para essa variável, criei um WHILE que pega de um SELECT...
Tipo:
$sql = SELECT campo FROM tabela
WHILE ($exibe = mysql_fetch_assoc($sql)){
$id_cataloga_erro = $exibe[id_cataloga_erro];
}
Daí, surge:
<input type="hidden" name="id_cataloga_erro[]" value="<?php echo $id_cataloga_erro ; ?>">
pego o name desse input (id_cataloga_erro):
coloco em outra variável:
$id_erro = $_POST['id_cataloga_erro'];
mysql_query ("UPDATE tb_cataloga_erro SET status='".$status[$i]."' WHERE id_cataloga_erro = '$id_erro ' ");
Só que não fuciona. Quando coloca direto, ou seja: id_cataloga_erro = id_cataloga_erro
Funciona.
Conseguiu compreender?
Resolvido.
O problema estava numa variável que eu tinha esquecido de colocar: $exibe
$sql = SELECT campo FROM tabela
WHILE ($exibe = mysql_fetch_assoc($sql)){
$id_cataloga_erro = **$exibe**[id_cataloga_erro];
}
Agora funciona.
Por isso sempre oriento a habilita todas as exibições de erro e fazer debug das queries, como mostrado neste tópico
id_cataloga_erro = id_cataloga_erro
Isso equivale a "1 = 1" ou "o valor corrente é igual ao valor corrente"
Você precisa usar o valor de uma variável.
Parece que você esqueceu o cifrão ($).
PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/