Salvar no banco valores de checkbox como String

32 views
Skip to first unread message

Renato Maia

unread,
Sep 14, 2020, 10:50:40 AM9/14/20
to php-brasil
Estou tentando enviar para o banco de dados um ARRAY dos check-box, neste exemplo definido como  name="documento[] no entanto estou recebendo de retorno a seguinte mensagem de erro;

"Message: Array to string conversion"

os values aparecem assim:
ERRO: Unknown column 'Array' in 'field list'  TRADUÇÃO: Coluna desconhecida 'Array' na 'lista de campos' 

VALUES ('1', '', '1234', 'PEDRO PINTO', '', 'MARIA', 'JOSÉ', '2020-09-11', '15', '', 'Branco', 'Negro', 'Homossexual', '14', '2421', 'MARAJÓ', '', '', '', '', '', '', '', '', '', '', '', Array, '')  

Meus códigos:
Estou usando Framework codeIgnater

view:
<div class="col-md-4">
    <div class="customcheck">
        <h4>DOCUMENTOS</h4>
            <div class="form-check">
                <label>
                    <input type="checkbox" value="CPF" name="documento[]" id="CPF"> <span class="label-text">CPF</span>
                </label>
            </div>
            <div class="form-check">
                <label>
                    <input type="checkbox" value="RG" name="documento[]" id="RG"> <span class="label-text">RG</span>
                </label>
            </div>
            <div class="form-check">
                <label>
                    <input type="checkbox" value="Título Eleitoral" name="documento[]" id="tituloEleitoral"> <span class="label-text">Título Eleitoral</span>
                </label>
            </div>
            <div class="form-check">
                <label>
                    <input type="checkbox" value="Certidão nascimento" name="documento[]" id="certidaoEleitoral"> <span class="label-text">Certidão nascimento</span>
                </label>
            </div>
            <div class="form-check">
                <label>
                    <input type="checkbox" value="Reservista" name="documento[]" id="reservista"> <span class="label-text">Reservista</span>
                </label>
            </div>
            <div class="form-check">
                <label>
                    <input type="checkbox" value="CTPS" name="documento[]" id="CTPS" > <span class="label-text">CTPS</span>
                </label>
            </div>
            <div class="form-check">
                <label>
                    <input type="checkbox" value="Doc. social" name="documento[]" id="docSocial"> <span class="label-text">DOC. SOCIAL</span>
                </label>
            </div>
            <span class="help-block"></span>
    </div>
</div>

Controller:
public function ajax_save_socioeducando() {
        //if (!$this->input->is_ajax_request()) {
           // exit("Nenhum acesso de script direto permitido!");
        //}
        $json = array();
        $json["status"] = 1;
        $json["error_list"] = array();

        $this->load->model("Model_seCadastro");
        $data = $this->input->post();
        
       //Validações.        
        $array = $data["documento"];
        $documentos = implode(",", $array);


        if (!empty($json["error_list"])) {
            $json["status"] = 0;
        } else {
            if (!empty($data["se_img"])) {
                $file_name = basename($data["se_img"]);
                $old_path = getcwd() . "/tmp/" . $file_name;
                $new_path = getcwd() . "/assets/img/se/" . $file_name;
                rename($old_path, $new_path);
                $data["se_img"] = "/assets/img/se/" . $file_name;
            } else {
                unset($data["se_img"]);
            }
            if (empty($data["id_se"])) {
                $this->Model_seCadastro->insert($data);                
            } else {
                $id_se = $data["id_se"];
                unset($data["id_se"]);
                $this->Model_seCadastro->update($id_se, $data);                
            }
        }
        
        echo json_encode($json);
    }

arquivo .js
// Salvar SE
    $("#formCadastroSe").submit(function() {
        $.ajax({
            url: "Sec_cadastroAdd/ajax_save_socioeducando",
            dataType: "json",
            data: $(this).serialize(),
            type: "POST",
            beforeSend: function () {
                clearErrors();
                $("#btn_add_se").siblings(".help-block").html(loadingImg("Verificando..."));
            },
            success: function(response){
                clearErrors();
                if (response["status"]) {
                   Swal.fire({
                        title: "Sucesso!",
                        text: "Socioeducando salvo com sucesso!",
                        type: "success"
                    }).then(function() {
                        window.location = "sec_cadastroControle";
                    });
                } else {
                    showErrors(response["error_list"]);
                }
            }   
        })
        return false;
    });


Tiago Agostinho

unread,
Sep 14, 2020, 11:09:00 AM9/14/20
to php-b...@googlegroups.com
Renato,

Olhei rapidamente o seu código.

Vi que converteu em string o array de documentos, porém não atribuiu ao array $data.

--
Você recebeu essa mensagem porque está inscrito no grupo "php-brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para php-brasil+...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/php-brasil/1862b25b-a412-433a-90de-dc08cab2b0d3n%40googlegroups.com.

Renato Maia

unread,
Sep 14, 2020, 1:34:24 PM9/14/20
to php-brasil
//Validações.        
        $array = $data["documento"];
        $documentos = implode(",", $array);
       $data =  $documentos

Seria isso?
Reply all
Reply to author
Forward
0 new messages