Definir Valor 0 Para Checkbox "unchecked"
#1
Posted 23/02/2008, 20:29
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
Posted 23/02/2008, 21:06
#3
Posted 23/02/2008, 22:57
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.
Não sei como fazer isso.
#4
Posted 23/02/2008, 23:12
#5
Posted 24/02/2008, 14:03
Você tem várias perguntas...
Por exemplo:
1 - Qual seu nome? Checked
2 - Qual sua idade? Unchecked
Aí você muda de idéia, e quer trocar...
Tornando:
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..
Até mais
Edição feita por: _Dudu_1533, 24/02/2008, 14:04.
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador
Twitter: HostCheap
#6
Posted 24/02/2008, 16:55
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?
Valeu.
Isso mesmo dudu, entendi, só tenho agora que pensar como fazer isso, pode dar certo.Eu entendi o que quer...
Você tem várias perguntas...
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.
Valeu.
#7
Posted 24/02/2008, 17:15
SQL
pergunta 1 - > 1
pergunta 2 - > 0
pergunta 3 - > 1
pergunta 4 - > 0
pergunta 5 - > 0
Painel Admin
[ . ] pergunta 1
[ ] pergunta 2
[ . ] pergunta 3
[ ] pergunta 4
[ ] pergunta 5
Página do usuário
pergunta 1
pergunta 3
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
Até mais
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#8
Posted 24/02/2008, 18:45
Para entender
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
É 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.
#9
Posted 24/02/2008, 19:53
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'
A idéia é essa.
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.
#10
Posted 24/02/2008, 21:24
Mas vamos lá...
Não seria só ver as que vieram e aí deduzir que as que não vieram é 0 e assim apenas fazer o update ?
Até mais
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#11
Posted 24/02/2008, 23:09
Então Crab, mas o problema é que eu tenho a seguinte estrutura:Firehalk... isso ele consegue fazer... a dúvida é quando ele atualiza...
Mas vamos lá...
Não seria só ver as que vieram e aí deduzir que as que não vieram é 0 e assim apenas fazer o update ?
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.
Valeu.
#12
Posted 25/02/2008, 13:00
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
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#13
Posted 27/08/2008, 17:03
acho que é a maneira mais facil....
#15
Posted 30/10/2017, 14:18
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
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)