Definir Valor 0 Para Checkbox "unchecked" - PHP - Fórum WMO
Definir Valor 0 Para Checkbox "unchecked"
Started By Theoto, 23/02/2008, 20:29
#1 Theoto
Localidade:Jundiai
Posted 23/02/2008, 20:29
Estou tentando definir o valor 0 para quando o checkbox for desmarcado para que esse valor possa ser gravado no sql como 0.
A linha do formulário é essa:
<input type='checkbox' name='atopcrel[".$pergcod."][".$opcgrupo."]' value='1' ".($opcvisirel==1 || $opcvisirel==-1?'checked':'').">Visirel
Quando o campo opcvisirel é 0 na BD e você selecione o checkbok na página e atualiza, ele passa a ser 1.
O problema é que quando o campo opcvisirel é 1 na BD e você desmarca o checkbox na página, o formulário não envia nenhum valor.
Como fazer para que quando o checkbox for desmarcado, o value seja "0"?
Já tentei o seguinte: value=".('checked'?'1':'0')." mas não deu certo, não aconteceu nada.
Tentei outras opções encontradas em outros foruns, mas nenhuma deu certo.
Quem souber a solução, por favor, me ajude.
#2 Matheus Cáceres
Posted 23/02/2008, 21:06
cara não precisa disso ... pq não faz isso na verificação do formulario?
#3 Theoto
Posted 23/02/2008, 22:57
Eu preciso editar esse campo como sendo 0 ou 1, pois a página questinsere.php que exibe o questionário lê esse campo para saber se exibe ou não cada uma das perguntas.
A página que estou fazendo agora é para editar o questionário selecionando quais perguntas vão ser exibidas ou não. Para isso estou querendo usar o checkbox. Na página questedita eu marco ou desmarco os checkboxs das perguntas que eu quero ou não que sejam exibidas. Assim ao atualizar, o campo opcvisirel fica com o valor 1 ou 0.
#4 Matheus Cáceres
Posted 23/02/2008, 23:12
cara meu pega o falar do value e faz um check nele se tiver on ele retorna true se naum false, tente se expressar melhor no que quer, você quer validar o checkbox é isso?
Posted 24/02/2008, 14:03
Eu entendi o que quer...
Você tem várias perguntas...
1 - Qual seu nome? Checked
2 - Qual sua idade? Unchecked
Aí você muda de idéia, e quer trocar...
1 - Qual seu nome? Unchecked
2 - Qual sua idade? Checked
Mas precisa passar essas informações para o BD...
Para fazer isso, acredito que você possa fazer uma consulta no bd, depois disso fazer uma verificação, ou seja, verifique existe algum checkox no bd que você não selecionou... Se existir, faça ficar com o valor 0, e o restante mude para 1.
Eu pensei dessa forma...
Não testei, aí fica por sua conta testar..
Edição feita por: _Dudu_1533, 24/02/2008, 14:04.
#6 Theoto
Posted 24/02/2008, 16:55
Matheus, é o seguinte:
A página questinsere.php exibe um formulário com várias perguntas registradas no Sql. Essas perguntas são recuperadas do Sql com um foreach e são exibidas somentes as perguntas que tem o campo visirel com o valor 1. Essa página é acessada pelo usuário.
Por outro lado a página questedita.php é acessada pelo administrador. Nessa página eu coloquei um checkbox para cada pergunta estando checked caso o campo visirel esteja com o valor 1. O que eu quero fazer é que quando o administrador desmarcar o checkbox e enviar o formulário, o Sql atualize o campo visirel de 1 para 0. Dessa forma a pergunta deixa de ser exibida ao usuário.
O problema é que quando o checkbox é desmarcado, o formulário não envia nada para o Sql, nem 0 nem nulo.
Não sei me expressar tecnicamente, pois aprendi a mexer com programação sozinho, perguntando e fuçando.
Pelo que você fala de validar o checkbox seria criar um input type=hidden para definir um valor para quando ele não estiver selecionado?
Sem querer demais, mas você poderia me dar um exemplo?
Isso mesmo dudu, entendi, só tenho agora que pensar como fazer isso, pode dar certo.
Posted 24/02/2008, 17:15
pergunta 1 - > 1
pergunta 2 - > 0
pergunta 3 - > 1
pergunta 4 - > 0
pergunta 5 - > 0
[ . ] pergunta 1
[ ] pergunta 2
[ . ] pergunta 3
[ ] pergunta 4
[ ] pergunta 5
Caso ele altere no painel admin altera no bd e assim altera a exibição na página do usuário...
Fiz isso para te ajuda a fazer as pessoas entenderem sua dúvida... pois até agora estava meio confuso o entendimento.
Partindo do exemplo, se vc tem as 5 perguntas cadastradas as 5 tem valores "0" ou "1", sendo assim...
Quando vc recebe os dados verifica os valores... os que estiverem vazios é "0" e depois é só fazer o UPDATE no bd...
Isso a grosso modo
#8 Theoto
Posted 24/02/2008, 18:45
É isso ai Crab,
O problema é que pelo que estou entendendo de outro tópico que estou lendo aqui do forum (http://forum.wmonlin...extSibling&st=0) um formulário só submete valores de checkboxs selecionados.
Para poder enviar um valor de um checkbox não selecionado seria preciso criar um input type=hidden (seria isso validar o checkbox?).
Nesse tópico que eu citei parece que isso deu certo, mas eu tento fazer igual e não funciona.
A idéia do dudu deu certo.
Primeiro eu faço um UPDATE opcvisirel=0 para todas as perguntas e depois faço outro UPDATE opcvisirel=1 somente para as perguntas que tenham o checkbox selecionado. Me pareceu uma saida um pouco bruta, mas funcionou.
O que eu gostaria de aprender a fazer é definir um valor para quando o checkbox não estiver selecionado e fazer com que esse valor seja submetido pelo formulário para que eu possa atualiza-lo na BD. (Quando vc recebe os dados verifica os valores... os que estiverem vazios é "0": isso que eu não consigo fazer)
Agradeço a paciência de todos com minha inexperiencia, ainda não tenho muito claro como as coisas funcionam em programação, por isso não consigo me expressar muito bem e nem entender bem o que as pessoas sugerem. Mas estou caminhando e ficando cada vez mais facinado com a versatilidade da informática, principalmente do PHP.
Posted 24/02/2008, 19:53
Eu não sei se eu entendi bem, mas a sua dúvida é basicamente por que você não consegue capturar quando o elemento não foi marcado, certo?
Pois bem, para resolver toda essa questão, a alternativa mais simples é gravar as perguntas no database, e deixar um campo "visivel" lá. Quando tiver 0 no campo, não mostra para o usuario final, e quando tiver 1 mostra. Para o admin mostra todas, ou seja, nao existe este filtro.
Isso é basicamente trabalhar com uma instrução SQL. O filtro se dá através do WHERE. Ex:
Select * from sua_tabela Where visivel = '1'
#10 Crab
Posted 24/02/2008, 21:24
Firehalk... isso ele consegue fazer... a dúvida é quando ele atualiza...
Não seria só ver as que vieram e aí deduzir que as que não vieram é 0 e assim apenas fazer o update ?
#11 Theoto
Posted 24/02/2008, 23:09
Então Crab, mas o problema é que eu tenho a seguinte estrutura:
uma tabela de questionarios;
uma tabela das sessoes de todos os questionarios;
uma tabela das perguntas de todas as sessoes e
uma tabela das opções de todas as perguntas.
Quando o administrador vai editar as opções e perguntas, ele seleciona primeiro um questionario e em seguida uma sessão desse questionário.
Ao atualizar as opções e perguntas dessa sessão eu não posso alterar as opções e perguntas das outras sessões e dos outros questionários.
Assim, eu não posso atualizar como 0 tudo o que não veio do formulário.
Eu só posso atualizar as opções e perguntas da sessão que foi apresentada no formulário.
Quando eu tenho o valor dos checkbox, eu uso um foreach para fazer o update somente das opções e perguntas da sessão com o seccod que foi selecionado.
Eu precisaria inicialmente filtrar todas as opções e perguntas somente da sessão selecionada; depois atualizar os registros para os quais eu tenho os valores do formulário; por fim atualizar o resto dessa filtragem como 0.
Agora escrevendo isso me deu a idéia de usar um while para rodar todas as opções da sessao e verificar para cada ocorrencia se há o valor vindo do formulário. Se houver atualiza com o valor se não atualiza com 0.
Vou tentar, depois aviso se deu certo.
#12 Crab
Posted 25/02/2008, 13:00
Não sei como está a estrutura do teu bd, mas obviamnte será um trabalho mais fácil se ela proporcionar que vc escolha uma seção por vez para editar
tipo vc seleciona as seções e exibe na tela administrativa através de links ou em uma lista de seleção... aí sim escolhendo uma seção exibe tudo que se relacionar à esta.
Esta é a melhor forma acredito eu...
Boa Sorte Até mais
#13 javitorino
javitorino
Posted 27/08/2008, 17:03
Se cada check tem um nome,, você pode falar qu if(!$check_seila){ $check_seila = 0 ; }
acho que é a maneira mais facil....
Posted 30/10/2017, 10:51
Elocon Buy Now Cod Accepted With Overnight Delivery Lamisil Tablets At Ebay viagra Levitra Orosolubile Italia
Beta Celias From Cananda Renovables A Propecia viagra Viagra Vendita In Italia Amoxicillin Clavulanic Acid Cialis 20 Mg Mitad
Posted 30/10/2017, 14:18
Generic Viagra Louisville Ky viagra vs cialis vs levitra reviews Birthcontrol Online
Will Alli Diet Pills Become Available Ceclor And Keflex Viagra Libre Belgique viagra Lioresal Achat 25mg Buy Prescriptions Online Review
Where Can Ibuy Ivermectin For Humans levitra on line Propecia Espana Finasteride 1mg Kamagra Impacto