Jump to content


Photo

Como Pegar Valor D Várias Checkbox


  • Faça o login para participar
7 replies to this topic

#1 Josy

Josy

    :*

  • Usuários
  • 662 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre/RS

Posted 12/03/2007, 18:00

Tenho uma form com várias input:

<form name="form" method="post">
<input type="text" name="nome" value="<?php echo $_POST['nome']; ?>" size="15">
<input type="text" name="valor" value="<?php echo $_POST['valor']; ?>" size="5">
<input type="text" name="fotos" value="<?php echo $_POST['fotos']; ?>" size="5">
<?
$conteud = MYSQL_QUERY("SELECT DISTINCT nome_conteudo FROM $tabela2 where situacao_conteudo='1' order by nome_conteudo") or die (mysql_error());
$cont = mysql_num_rows($conteud);
$i=1;
while($dados = mysql_fetch_array($conteud))
{
	$conteudo = $dados['nome_conteudo'];
				echo "<TD WIDTH='25%'><INPUT TYPE='checkbox' NAME='$conteudo'>".$conteudo;
	echo "<TD><input name='arquivo' size='3' type='file'></TD>";
	if (($i > 1) && (($i % 2) == 0))
	{
		echo "<TR>";
	}
	$i++;
}
?>
<input type="button" value="Cadastrar" onclick="mostrar();">
</form>

Depois q é clicado em Cadastrar pego os valores das input dessa forma:

$nome = isset($_POST['nome'])? $_POST['nome'] : null;
$valor = isset($_POST['valor'])? $_POST['valor'] : null;
$fotos = isset($_POST['fotos'])? $_POST['fotos'] : null;

Mas como faço pra pegar o valor d cada checkbox q for marcada e o arquivo se ele for selecionado?
Isso vou inserir em uma tabela do bd..

Edição feita por: Josy, 12/03/2007, 18:01.


___________________________________

Josy R.L.
Grupo Plyme
www.plyme.com.br
___________________________________


#2 Guilherme Luiz

Guilherme Luiz

    Normal

  • Usuários
  • 78 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 12/03/2007, 18:25

coloca uma id na tag e dentro dessa id vc cria um array...

<input type="checkbox" name="id" [b]id="id[]"[/b]>

isso seria com checkboxes pq acontece ae que todas as checkbox que tiverem o nome ID irão guardar os seus valores no array id[]... ai dps eh soh você usar um for e umas verificações pra pegar cada valor...

procura por array que você vai achar um monte de respostas !!

flw
just its a lie when the truth is found !

#3 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 12/03/2007, 18:51

Complementando o que o Gilherme disse.
Primeiramente o nome do campo vai ser um array() , ou seja, deverá ter [].

<input type="checkbox" name="id[]" value="1">


Isso é simples.

Agora vamos para a parte dinâmica...

$input = $_POST['id'];
foreach($input as $id) {

echo $id . "<br>\n";

}


Invês de echo..., você executa a ação que quiser.

Pode ser:

mysql_query("INSERT INTO tabela (id) VALUES ('".$id."')") or die(mysql_error());


Entre várias outras...

Espero ter ajudado.
Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#4 Josy

Josy

    :*

  • Usuários
  • 662 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre/RS

Posted 13/03/2007, 09:14

while($dados = mysql_fetch_array($conteud))
					{
						$conteudo = $dados['nome_conteudo'];
						echo "<TD><INPUT TYPE='checkbox' NOME='banco[]' ID='$conteudo'>".$conteudo;
						if (($i > 1) && (($i % 4) == 0))
						{
							echo "<TR>";
						}
						$i++;
					}

//Depois para a verificação
if(isset($_POST['banco']))
		{
			$prob = "Informe pelo menos um conteúdo para o novo plano!!";
			$erro=true;
		}
foreach($_POST['banco'] as $conteudo)
		{   
			echo " $conteudo <br />";
		}

Dai na primeira vez escreveu certinho na tela as checkbox q eu tinha clicado, mas agora só da erro

Warning: Invalid argument supplied for foreach() in c:\arquivos de programas\apache group\Apache\htdocs\josy\origem\cadastrarplano.php

___________________________________

Josy R.L.
Grupo Plyme
www.plyme.com.br
___________________________________


#5 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 13/03/2007, 09:29

....
Dai na primeira vez escreveu certinho na tela as checkbox q eu tinha clicado, mas agora só da erro

Warning: Invalid argument supplied for foreach() in c:\arquivos de programas\apache group\Apache\htdocs\josy\origem\cadastrarplano.php


Bem esse erro, é que os argumetos que vc está passando para o "foreach" não é um array....
Ou provavelmente vc está enviado o formulário sem selecionar nenhum "checkbox" por isso o erro....

Faça um verificador dep array para "dizer que é um array", para evitar esse tipo de erro ....
if (count($_POST['banco'])) {
 foreach($_POST['banco'] as $conteudo) {   
  echo " $conteudo <br />";
 }
} else {
 $prob = "Informe pelo menos um conteúdo para o novo plano!!";
 $erro = true;
}


#6 Josy

Josy

    :*

  • Usuários
  • 662 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre/RS

Posted 13/03/2007, 14:22

Dessa forma ai, ele só dá o erro, q pelo menos um tem q ser marcado, é q nao tah lendo o q eu marco..

$input = isset($_POST['banco'])? $_POST['banco'] : null;
		$nome = isset($_POST['nome'])? $_POST['nome'] : null;
		$valor = isset($_POST['valor'])? $_POST['valor'] : null;
		$fotos = isset($_POST['fotos'])? $_POST['fotos'] : null;
		
		//VERIFICA DADOS DIGITADOS
		if (count($_POST['banco']))
		{
			foreach($input as $banco)
			{   
				  echo " $banco <br/>";
			}
		}
		else
		{
			$prob = "Informe pelo menos um conteúdo para o novo plano!!";
			$erro = true;
		}

//VERIFICA DADOS DIGITADOS
		if(isset($_POST["banco"]))
		{
			$prob =  "Os números de sua preferência são:<BR>";
			// Faz loop pelo array dos numeros
			foreach($_POST["banco"] as $conteudos)
			{
				echo $conteudos . "<BR>";
			}
		}

Funcionou assim.. obrigada

Mais uma dúvida...

Nas input conforme coloco valor, mesmo se eu clicar no submit os valores permanecem nos locais, no caso das checkbox como faço pra deixa-las marcadas?

Edição feita por: Josy, 13/03/2007, 11:03.


___________________________________

Josy R.L.
Grupo Plyme
www.plyme.com.br
___________________________________


#7 Guilherme Luiz

Guilherme Luiz

    Normal

  • Usuários
  • 78 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 13/03/2007, 15:01

você teria que armazenar o id do checkbox selecionado em uma session e dps que a pagina desse um reload vc iria fazer uma verificação se existe a session ou não... se existir vai marcar as checkboxs de acordo com os dados guardados na session caso contrario continuaria em branco !
just its a lie when the truth is found !

#8 Josy

Josy

    :*

  • Usuários
  • 662 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre/RS

Posted 14/03/2007, 17:15

Na minha consulta ao bd $idconteudo = $dados['id_conteudo']; e $conteudo = $dados['nome_conteudo']; eu precisava pegar o id_conteudo.. qdo a radio for clicada

as radio estao assim:
<INPUT TYPE='checkbox' NAME='banco[]' ID='$idconteudo' VALUE='$conteudo'>".$conteudo;

É desse jeito q pego o value e o id:
echo $conteudos . "<BR>";
echo $conteudos['id'] . "<BR>";

Só q o id nao aparece pra mim, como pego esse valor do id?

Não consegui ainda pegar o nome e o id de várias checkbox.. Meu código está assim:

<body>
<?
		$conteud = MYSQL_QUERY("SELECT DISTINCT id_conteudo,nome_conteudo FROM $tabela2 where situacao_conteudo='1' order by nome_conteudo") or die (mysql_error());
		$cont = mysql_num_rows($conteud);
		while($dados = mysql_fetch_array($conteud))
		{
			$idconteudo = $dados['id_conteudo'];
			$conteudo = $dados['nome_conteudo'];
						echo "<INPUT TYPE='checkbox' NAME='banco[]' ID='$idconteudo' VALUE='$conteudo'>".$conteudo;
?>
//RECEBE OS DADOS DO FORMULÁRIO
$conteudos = isset($_POST['banco'])? $_POST['banco'] : null;
if (count($_POST['banco']))
{
	foreach($conteudos as $conteudo)
	{   
		echo " $conteudo <br />"; //aqui eu escrevo os nomes das checkbox selecionadas, mas como eu pego tb o id??
	}
}

//VERIFICA DADOS DIGITADOS
if($conteudo == null)
{
	$prob =  "Você precisa escolher pelo menos um conteúdo para este novo plano!!<br>";
}

Edição feita por: Josy, 13/03/2007, 16:10.


___________________________________

Josy R.L.
Grupo Plyme
www.plyme.com.br
___________________________________





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq