Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

stview

Checkbox e array

Recommended Posts

Sintaxe:

Eu tenho um cadastro com varios campos, e um deles é formado por um grupo de checkbox que eu gravo em um campo no banco como array.

 

Ex:

<input type="checkbox" name="Frase[]" value="1">Frase 1;<br><input type="checkbox" name="Frase[]" value="2">Frase 2;//CODE:foreach ($_POST["Frase"] as $val) {$Frase .= "$val, ";}

 

Problema:

Quando visualizo este cadastro, utilizo a mesma pg de cadastro, eu apenas faço um select para preencher os campos.

Como farei para que os checkbox estejam checados, tipo $Frase[2] apareça checked mesmo se $Frase[1]=="" .. entenderam?

 

Se eu colocar if ($Frase[2]!=""){echo "checked";} e apenas um ítem estiver checado, ele não escreverá nada certo?

 

Soluções:

Seria a melhor saída eu desmembrar este array, criando varias $vars?

Talvez criar um loop onde para cada resultado geraria uma resposta, mas pra isso teria um if grande .. acho que seria ruim ..

 

Alguma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nao tenho certeza, mas eu acho q um erro esta acontecendo aqui:$Frase .= "$val, ";primeiro, se register globals estiver on ele vai dar conflito pq $_POST['Frase'] = $Frase, portanto você estara definindo um valor em $Frase, ---tanto nas verificacoes sempre tera valor, por isso mostrara checked...eu n sei como você tah fazendo pra exibir checked, é na frente do checkbox? eh depois do envio, aparece frase1 checked, frase40 checked e assim por diante?tenta mudar o nome da variavel $Frase pra outro nome..se manter o erro, exemplifique o resultado esperado do codigo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa determinar a posição do valor no array:assim:<input type="checkbox" name="Frase[0]" value="1">Frase 1;<br><input type="checkbox" name="Frase[1]" value="2">Frase 2;//CODE:foreach ($_POST["Frase"] as $val) {$Frase .= "$val, ";}caso contrário o script se perde e consegue identificar o valor passado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa determinar a posição do valor no array:assim:<input type="checkbox" name="Frase[0]" value="1">Frase 1;<br><input type="checkbox" name="Frase[1]" value="2">Frase 2;//CODE:foreach ($_POST["Frase"] as $val) {$Frase .= "$val, ";}caso contrário o script se perde e não consegue identificar o valor passado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas respostas,Primeiro, não existe erro neste script, eu ainda não o criei :P ... A única coisa que esta criada é o form.O loop foreach ... Eu utilizo em outra ferramenta e ela funciona perfeitamente.webvp,Se eu for colocar em cada checkbox uma posição no array, torna inútil a função do array.Eu estou utilizando isso pq: Tenho uma pergunta que pode ter 20 respostas, seria cansativo colocar um nome pra cada checkbox. Por isso eu coloco o mesmo nome, e é claro, cada um com seu valor.No Submit, eu puxo todas as variações deste campo e transformo numa única variável através do foreach. Repito, eu crio uma variável, e não um array. E salvo este e outros campos no db.Quando visualizo o cadastro é que vem o problema. Eu quero que ele seja modificável, para isso eu utilizo a mesma página, onde todos os campos estão com o value <? if ($var!=""){echo "$var";} ?>, mas estou preocupado em como vou fazer os checkbox se "checarem" ...O impulso foi criar um array com o conteúdo cadastrado no campo e no corpo do form fazer um loop que lê o array e se o valor for = "x" echo checked ... Mas eu tenho outras coisas mais urgentes do que isso, então nem escrevi nada, mas postei aqui pra ver se alguém já tinha feito algo parecido e me dar uma luz.Você entendeu meu impulso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.