Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Variáveis Do Checkbox


fsphp

Pergunta

Estou quebrando a cabeça em como passar as variáveis dos checkbox para banco de dados.

Fiz assim:

formulario.php

<input type="checkbox" name="futebol" value="1">Futebol

-------------------------------

insere_variaveis.php

$futebol = $_POST['futebol'];

(INSERT INTO enquete VALUES futebol=$futebol'")/

-----------------------------------------

visualiza_dados.php

("SELECT futebol FROM enquete");

echo "$futebol"

----------------------------------------

Se o campo de futebol não é preenchido, o php não reconhece a variável que $_POST['futebol] que eu coloco no início da página insere_variaveis.php e dá mensegem de erro index.

O que devo fazer?

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

eu ponho assim e funciona

na pagina do formulário...

<input name="receber" type="checkbox" id="receber" value="S">
aqui eu ponho o select, mas não ponho condição nenhuma, só na lçeitura.... mas se quizer por vvocê vai por.
ná página que vai receber
$receber = $_POST['receber'];
e aonde vai ler....
<input name="receber" type="hidden" id="receber">
<? if ($receber == "S")
print("Sim desejo receber informações.");
else
print("Não desejo receber informações.");?>

não sei se te ajudou, qualquer dúvida posta ai...

guilherme

Editado por Guilherme014
Link para o comentário
Compartilhar em outros sites

  • 0

tem outra forma que aprendi aqui no fórum:

Colocando-se "name='foo[]'", quando esses campos forem passados para o PHP, eles vão retornar dentro da array $_POST['foo'], ou seja, $_POST['foo'][0] vai ser o 1º campo marcado, $_POST['foo'][1] vai ser o 2º campo marcado, $_POST['foo'][2] vai ser o 3º campo marcado. Isso mesmo que alguns campos estejam desmarcados, a array vai trazer somente os que forem marcados.

Depois da para fazer um for com um if dentro (para ver se está vazio) e ir colocando no bc

Link para o comentário
Compartilhar em outros sites

  • 0

Eu encontrei um tópico que mostra isso e que trata as variáveis com um foreach(), num exemplo que o Fabyo colocou.

<input type="checkbox" name="assunto" value="conto">CONTO

<input type="checkbox" name="assunto" value="artigo">ARTIGO

<input type="checkbox" name="assunto" value="piada">PIADA

foreach($_POST['assunto'] as $assunto)

{

echo "$assunto<br>"

}

Mas como INSERIR esses valorres no banco de dados?

Valeu pessoal!

Link para o comentário
Compartilhar em outros sites

  • 0

Aí pessoal, após vários dias de quebra-cabeça, consegui fazer conforme abaixo.

Se tiver algum debugger man que possa dar uma olhada no código para ver se não está com nenhum erro, seria bom para todo mundo, pois do jeito que está, tá gravando as variáveis no banco de dados.

=============

enquete1_form.php

=============

<HTML>

<HEAD>

<STYLE TYPE="text/css">

<!--

BODY, P      {color: black; font-family: verdana; font-size: 10 pt}

H1        {color: black; font-family: arial; font-size: 12 pt}

-->

</STYLE>

</HEAD>

<BODY>

<TABLE BORDER=0 CELLPADDING=10 WIDTH=100%>

<TR>

<TD BGCOLOR="#F0F8FF" ALIGN=CENTER VALIGN=TOP WIDTH=17%>

</TD>

<TD BGCOLOR="#FFFFFF" ALIGN=LEFT VALIGN=TOP WIDTH=83%>

<H1>ENQUETE</H1>

<P>Quero receber informações dos seguintes assuntos:</P>

<FORM METHOD=POST ACTION="insere_enquete1.php">

<INPUT TYPE=CHECKBOX NAME="artigo" VALUE=1> Artigo<BR><BR>

<INPUT TYPE=CHECKBOX NAME="art_aikido" VALUE=1> Artigo Aikido<BR><BR>

<INPUT TYPE=CHECKBOX NAME="art_empresa" VALUE=1> Artigo Empresa<BR><BR>

<INPUT TYPE=CHECKBOX NAME="dica" VALUE=1> Dica<BR><BR>

<INPUT TYPE=CHECKBOX NAME="conto" VALUE=1> Conto<BR><BR>

<INPUT TYPE=SUBMIT NAME="submit" VALUE="submit">

</FORM>

</TD>

</TR>

</TABLE>

</BODY>

</HTML>

==============

insere_enquete1.php

==============

<?php

include "include.php";

mysql_connect($hostname, $username, $password) or die("Não foi possível fazer a conexão!");

mysql_select_db("muralcultural");

// SE O FORMULÁRIO FOR SUBMETIDO, GRAVAR AS PREFEREENCIAS

if ($_POST['submit'] == 'submit') {

  if (!empty($_POST['artigo'])) {

    $artigo = 1;

  } else {

    $artigo = 0;

  }

  if (!empty($_POST['art_aikido'])) {

    $art_aikido = 1;

  } else {

    $art_aikido = 0;

  }

  if (!empty($_POST['art_empresa'])) {

    $art_empresa = 1;

  } else {

    $art_empresa = 0;

  }

  if (!empty($_POST['dica'])) {

    $dica = 1;

  } else {

    $dica = 0;

  }

  if (!empty($_POST['conto'])) {

    $conto = 1;

  } else {

    $conto = 0;

  }

  // Insere dados no banco de dados

  $query = "INSERT INTO enquete1 (artigo, art_aikido, art_empresa, dica, conto)

            VALUES ('$artigo', '$art_aikido', '$art_empresa', '$dica', '$conto')";

  $result = mysql_query($query);

  if (mysql_affected_rows() == 1) {

    echo "<P>Os dados foram inseridos com sucesso!.</P>";

  } else {

    echo "<P>Não foi possível inserir os dados.</P>";

  }

}

echo "<p align=\"center\"><a href=\"visualiza_resultados.php\"><b>VER RESULTADOS</b></a></p>";

?>

================

visualiza_resultados.php

================

<?php

include "include.php";

$con = mysql_connect($hostname, $username, $password);

mysql_select_db("muralcultural", $con);

$query = "SELECT * FROM enquete1";

$result = mysql_query($query);

$linhas = mysql_num_rows($result);

for($i=0; $i<$linhas; $i++)

{

$dados = mysql_fetch_row($result);

$artigos = $dados[0];

$art_aikido = $dados[1];

$art_empresa = $dados[2];

$dica = $dados[3];

$conto = $dados[4];

echo "$artigos - $art_aikido - $art_empresa - $dica - $conto<br>";

}

?>

smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

você pode fazer assim também:

insere_enquete1.php:

include "include.php";

mysql_connect($hostname, $username, $password) or die("Não foi possível fazer a conexão!");

mysql_select_db("muralcultural");

//aqui defino tudo pra zero,dai se não foi marcado o campo já fica zero

$artigo = 0;

$art_aikido = 0;

$art_empresa = 0;

$dica = 0;

$conto = 0;

foreach ($_POST as $campo => $valor) { $$campo = $valor; }

//dai o check que foi marcado sera com valor = 1 e o que não foi marcado sera 0

  $query = "INSERT INTO enquete1 (artigo, art_aikido, art_empresa, dica, conto)

            VALUES ('$artigo', '$art_aikido', '$art_empresa', '$dica', '$conto')";

  $result = mysql_query($query);

  if (mysql_affected_rows() == 1) {

    echo "<P>Os dados foram inseridos com sucesso!.</P>";

  } else {

    echo "<P>Não foi possível inserir os dados.</P>";

  }

}

echo "<p align=\"center\"><a href=\"visualiza_resultados.php\"><b>VER RESULTADOS</b></a></p>";

Link para o comentário
Compartilhar em outros sites

  • 0

Nesse caso, se o usuário selecionar os assuntos artigos, art_aikido e conto, teremos um array assim:

$array(1, 1, 0, 0, 1)

O foreach vai ler esses valores e, da forma com que foi colocado por você ($$campo = $valor), ele vai atribuir o nome do campo a cada um dos valores desse array, com exceção dos valores 0.

Então esse array ficaria assim:

$array(artigo, art_aikido, 0, 0, conto)

E, com isso, os valores inseridos no banco de dados seriam esses (artigos, art_aikido e conto)?

Link para o comentário
Compartilhar em outros sites

  • 0

não é bem assim

quando o foreach receber os dados do POST $$campo ele vai atribuir a $ pra cada campo exemplo:

nome => $nome

senha => $senha

apenas isso ele ta pegando o nome do campo e colocando $

e se viu que eu defini tudo pra zero antes dele dai o checkbox que não for selecionado não vai exitir então fica valendo a variavel que ta em cima do foreach

com valor zero, e se o checkbox foi marcado dai ele passa a existir e o valor será 1

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que agora entendi. O foreach vai atribuir a $ aos valores que forem selecionados, ou seja, ele vai gerar (no exemplo) $artigo, $art_aikido e $conto, que, uma vez que estes "existem", vão receber o valor de "1".

Com isso no banco de dados estes valores serão inseridos como "1", e para os demais (como foi declarado anteriormente "0") vai ser inserido o valor "0".

Acho que é isso, não? smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Editei o título deste tópico para ficar mais fácil quando a galera fizer buscas no site sobre esse título. Como existem muitos tópicos sobre o assunto, o caboclo tem que procurar de tópico por tópico para verificar se tem o que ele procura e muitas vezes o tópico não está resolvido e a gente perde um tempão nessas pesquisas e até acaba desistindo pois tem que ler muita coisa que as vezes não leva a nada. sad.gif

Então coloquei no título do tópico [RESOLVIDO] justamente para facilitar a busca. Sugiro que os demais façam dessa forma, ou seja, quando suas dúvidas forem resolvidas editem o tópico dessa forma. wink.gif

Como este tópico será novamente atualizado, fica bom para o Enlibra consultar, e depois tirar as dúvidas que ele tem. cool.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...