Jump to content
Sir Pereira

[RESOLVIDO] Checkboxes em POST

Recommended Posts

Sir Pereira

Boas pessoal,

tenho uma listagem de checkboxes que retorna o valor do ID dos utilizadores, e ao clicar enviar, queria conseguir na página a seguir retornar a lista das checkboxes com check.

Tenho este código:

                                        <div class="listMeetingUsersInvite">

                                        <?php

                                        $sql = mysql_query("SELECT * FROM scie_users ORDER BY nome ASC");

                                        if (mysql_num_rows($sql) > 0) {
                                            while ($dados = mysql_fetch_assoc($sql)) {

                                        ?>

                                            <span class="meetingInvite"><input type="checkbox" name="<?php echo $dados['id']; ?>" value="<?php echo $dados['id']; ?>" /> <?php echo $dados['nome']; ?></span>

                                        <?php

                                            }
                                        }

                                        ?>
                                            
                                        </div>

Como vou inserir isso na base de dados, preciso de ter todos os IDs para que vá inserindo, conforme vá lendo os IDs vai inserindo na BD.

Sugestões?

Share this post


Link to post
Share on other sites
scorch

Voltas a obter tudo da BD, e fazes um ciclo. Nesse ciclo, verificas, com a variável $_POST, cada elemento presente na BD, tipo:

if ($_POST[$dados["nome"]] == "1"){
    //Estava selecionada
}


PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Não percebi bem a tua questão, mas o que tu queres saber é se o checkbox foi "checkado"?

Se for isso, tens que utilizar a função isset(). Porque, se utilizares apenas "$campo == 1", caso o campo não seja seleccionado vai ocorrer um erro.

<?php

if ( isset( $_POST['campo'] ) )
echo 'Checkado';

?>

Share this post


Link to post
Share on other sites
Sir Pereira

Boas,

Não percebi bem a tua questão, mas o que tu queres saber é se o checkbox foi "checkado"?

Se for isso, tens que utilizar a função isset(). Porque, se utilizares apenas "$campo == 1", caso o campo não seja seleccionado vai ocorrer um erro.

<?php

if ( isset( $_POST['campo'] ) )
echo 'Checkado';

?>

Um erro? Que erro? Ele apenas vai comparar o valor, para ver se é igual.

No entanto, adicionei o que me disseste mas estou aqui com umas dúvidas.

if (!empty($_POST)) {

    //verificar cada checkbox checked p inserir registos na bd
    $sql = mysql_query("SELECT id,nome FROM scie_users");

    if (mysql_num_rows($sql) > 0) {
        while ($checkboxes = mysql_fetch_assoc($sql)) {

            if ((isset($_POST[$checkboxes[id]]))) {

                echo $_POST[$checkboxes[id]]."<br />";

            }

        }
    }

}

Isto deve ser algum problema nas condições, pois ele não me retorna nada...

Sugestões?  :dontgetit:

Nota: no formulário alterei o name da checkbox para o ID, em vez do nome do utilizador, evitando assim registos duplicados.

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Um notice como: Notice: Undefined index: campo in...

Mas só ocorre se o campo NÃO for checkado.

1) Deves usar plicas na no array $checkboxes, por exemplo: $checkboxes['id'].

2) Podes retirar um parêntesis à esquerda e um à direita de isset($_POST[$checkboxes[id]].

3) Não tens nenhum checkbox cujo nome seja $checkboxes[nome].

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.