Ir para conteúdo

POWERED BY:

Arquivado

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

VongolaX

Checkbox PHP + Mysql

Recommended Posts

Seguinte galera, to fazendo um sisteminha pro meu site...porem encontrei o seguinte problema

criei um formulario pra inserir dados em determinada tabela, ate ai beleza... porem me deparei com um problema dos checksbox.. no meu formulario o check vem dinamico do banco de dados depedendo do genero, ai o usuário pode escolher varios genero exemplo - ele ta adicionando tal assunto ai no genero podera escolher, comedia, ação, terror etc... ai a duvida como salvar todos os valores dos checks no banco?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Eu vi esse topico e não e bem isso que eu quero, vo reformular minha pergunta.

eu consigo salvar os dados na tabele mais APENAS um valor do check o que eu quero e salvar TODOS os valores que foram selecionados pelo usuario..

essa é minha dúvida, tipo eu seleciono varios checks porem ele so salva o valor de 1.

será que eu vo precisar criar mais uma tabela? qual o tipo do campo da tabela que eu devo deixar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo, dá pra criar uma tabela armazenando o id do usuário e o id do check selecionado

foreach($_POST['nome_check'] as $check){
       ... insert into tabela_relacao_usuario_check values ($usuario,$check)... 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta complicado o negocio, to seguindo um curso pra montar meu sistema, depois de muito tentar to quase la... porem o problema agora é que so e gravado os check que tem o menor id, se eu selecionar um que tem um id alto ele naum grava mo estranho isso, vo postar o link do meus codigos quem puder olhar e me ajudar eu agradeço :D

codigo form

http://pastebin.com/i41Y7z6Y

codigo acao

http://pastebin.com/zfw0C4mB

to perdendo os cabelos já com isso =(

 

 

PS:to começando agora em php então qualquer erro noob peço que não me crucifique :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, ve se da para entender agora...

 

 

form.html

<form name="seuform" method="post" action="save.php">
   <p>
   <label>Ação</label>
   <input type="checkbox" name="genero[]" value="acao"/>
   </p>
   <p>
   <label>Aventura</label>
   <input type="checkbox" name="genero[]" value="aventura"/>
   </p>
   <p>
   <label>Comédia</label>
   <input type="checkbox" name="genero[]" value="comedia"/>
   </p>
   <p>
   <label>Cartoon</label>
   <input type="checkbox" name="genero[]" value="cartoon"/>
   </p>
   <p>
   <label>Terror</label>
   <input type="checkbox" name="genero[]" value="terror"/>
   </p>
   <input type="submit" name="submit" value="Enviar"/>
</form>

 

save.php

foreach ($_POST['genero'] as $value) {
   //seu codigo para inserir no banco aqui... $value contem o valor do checkbox selecionado...
   echo $value . '<br/>';
}

 

perceba q a tag name da checkbox esta sendo passada como array adicionando as brackets name="genero[]". Assim, voce pode dar um foreach no post e pegar cada valor selecionado...

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, ve se da para entender agora...

 

 

form.html

<form name="seuform" method="post" action="save.php">
   <p>
   <label>Ação</label>
   <input type="checkbox" name="genero[]" value="acao"/>
   </p>
   <p>
   <label>Aventura</label>
   <input type="checkbox" name="genero[]" value="aventura"/>
   </p>
   <p>
   <label>Comédia</label>
   <input type="checkbox" name="genero[]" value="comedia"/>
   </p>
   <p>
   <label>Cartoon</label>
   <input type="checkbox" name="genero[]" value="cartoon"/>
   </p>
   <p>
   <label>Terror</label>
   <input type="checkbox" name="genero[]" value="terror"/>
   </p>
   <input type="submit" name="submit" value="Enviar"/>
</form>

 

save.php

foreach ($_POST['genero'] as $value) {
   //seu codigo para inserir no banco aqui... $value contem o valor do checkbox selecionado...
   echo $value . '<br/>';
}

 

perceba q a tag name da checkbox esta sendo passada como array adicionando as brackets name="genero[]". Assim, voce pode dar um foreach no post e pegar cada valor selecionado...

 

Abraço

 

p**** man e num é que deu certo :joia: :joia:

eu fiquei dias quebrando a cabeça com o for e nada, em 5 min o foreach resolveu meus problemas ;)

Vlw aew

Compartilhar este post


Link para o post
Compartilhar em outros sites

ZF - Zend Freaker, eu acabei de ver a sua resposta pro VongolaX e o meu problema é parecido, mas não consegui resolver com o foreach, então se puder me ajudar, fico grato!!!

 

O meu problema é bem parecido com o citado acima, mas o meu formulário tem mais de um checkbox, conforme o código abaixo:

Tenho um formulário que lista as seguintes informações:

Checkbox Cargo: Administrador, Analista, Engenheiro, Farmaceutico, etc.....

Combo Quantidade de vagas: 1,2,3,4.........

Justificativa da vaga: "texto justificando a contratação......"

 

 

formulario.php

<table width='80%' border='0' cellpadding='0' cellspacing='0'>
 <tr height='24' bgcolor='#FFFFFF'>
  <td valign='center' align='left'>Cargo</td>
  <td valign='center' align='left'>Quantidade de Vagas</td>
  <td valign='center' align='left'>Justificativa</td>
 </tr>
 <tr height='24' bgcolor='#FFFFFF'>
  <td>
   <input type='checkbox' name='COD_CARGO[]' value='{$COD_CARGO}' <? echo $checked;?>> {$NOME_CARGO}
  </td>
  <td>
   <select name='QTDE[]'>
    <option value='00'>-- Nº de vagas --</option>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
   </select>
  </td>
  <td>
   <input type='text' name='DESCRICAO[]' maxlength='80' size='60' onBlur='trim(this);' size='66' onkeypress='javascript: return isAlfa(getkey(event));'>
  </td>
 </tr>
</table>

O problema é na hora de gravar estas informações, pois eu preciso que seja gravado os 3 campos (cargo, quantidade e justificativa) SOMENTE dos campos que forem selecionados no checkbox....

Tentei fazer com o foreach conforme o exemplo acima, mas daí ele só grava um cargo quando temos mais de um selecionado.....

Alguém poderia me ajudar nisso??? Agradeço profundamente......

Compartilhar este post


Link para o post
Compartilhar em outros sites

@petruchio,

 

tem inumeras maneiras de fazer o acima... Vou listar uma das formas mais simples, mais provavelmente deve ter alguma library online.

<?php

    $data = array(
        'ICT Manager'    =>  array(
            'code'  => 123,
            'qty'   => 2,
            'desc'  => 'This is my role...'
        ),
        'Software Engineer'    =>  array(
            'code'  => 154,
            'qty'   => 1,
            'desc'  => 'But I also do this...'
        ),
        'UI Designer'    =>  array(
            'code'  => 158,
            'qty'   => 3,
            'desc'  => 'and this....'
        ),
        'IOS Developer'    =>  array(
            'code'  => 164,
            'qty'   => 1,
            'desc'  => 'This I do for fun... :)'
        ),
    );

    if ($_POST) {
        if (in_array($_POST['COD_CARGO'], $_POST)) {
            foreach ($_POST['COD_CARGO'] as $p) {
//                echo var_dump($_POST);
                echo 'Code: ' . $p . ' --- QTY: ' . $_POST['QTDE'][$p] . ' --- Desc: ' . $_POST['DESCRICAO'][$p];
                echo '<br>';
            }
        }
    }

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Test</title>
</head>
<body>
    <form name="cargos" method="post">
        <table width="80%" border="0" cellpadding="0" cellspacing="0">
            <tr height='24' bgcolor='#FFFFFF'>
                <td valign='center' align='left'>Cargo</td>
                <td valign='center' align='left'>Quantidade de Vagas</td>
                <td valign='center' align='left'>Justificativa</td>
            </tr>
            <?php foreach ($data as $cargo => $info) : ?>
            <tr height='24' bgcolor='#FFFFFF'>
                <td>
                    <input type='checkbox' name='COD_CARGO[<?php echo $info['code']; ?>]' value='<?php echo $info['code']; ?>'> <?php echo $cargo; ?>
                </td>
                <td>
                    <select name='QTDE[<?php echo $info['code']; ?>]'>
                        <option value='0'>-- Nº de vagas --</option>
                        <?php for ($i = 0; $i < 4; $i++) : ?>
                            <option value="<?php echo $i;?>" <?php if ($info['qty'] == $i) { echo 'selected'; } ?>><?php echo $i;?></option>
                        <?php endfor; ?>
                    </select>
                </td>
                <td>
                    <input type='text' name='DESCRICAO[<?php echo $info['code']; ?>]' value="<?php echo $info['desc']; ?>" maxlength='80' size='60'>
                </td>
            </tr>
            <?php endforeach; ?>
        </table>
        <input type="submit" name="submit" value="submit">
    </form>
</body>
</html>

tente usar var_dump(variable); para obter mais informacoes sobre a variable, quando trabalhando com forms, use var_dump(form.method) e.g. var_dump($_POST) e voce recebera mais informacoes no browser sobre $_POST array, continue fazendo isso em combinacao com foreach etc... assim voce entendera melhor o tipo de informacao que esta sendo enviada atraves HTTP/POST|GET etc....

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.