Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro quando não envia o formulário

Estou criando um classificados que ao invés do usuário ter direito a inserir vários anúncios, ele pode inserir somente 1. E este anúncio é linkado através do Join com a tabela de usuários, que contém o campo "usuario".

A pessoa se cadastra, preenche o usuário, senha e email, cria a conta e aí pode editar seu anúncio. Coloquei para o link do anúncio ser o usuário dele, ou seja, se ele criar uma conta com o usuário "vitor" o anúncio dele vai ter o link: www.dominio.com/anunciante/vitor.

O meu problema é o seguinte: Coloquei o formulário de contato que o Alexandre ensinou, em cada página de anúncio. Coloquei a validação no campo E-mail e Mensagem, se o usuário escrever tudo direitinho ele envia, se não, ele volta para o anúncio de ID 1 ou seja, o primeiro usuário cadastrado no site. aí quando o cliente escreve tudo direitinho no formulário ele não envia para a pessoa certa, e sim para esse usuário de ID 1.

Segue o código:

// Controller classificados.php


public function mostra($id){
        $this->load->model("classificados_model");
        $anuncios = $this->classificados_model->busca($id);        

        // para exibir as categorias do lado esquerdo mesmo na pagina do anúncio do usuario, 
        // aí logo depois transforma em array e chama dentro da variavel dados
        $categorias = $this->classificados_model->buscaCategorias();

        // Verifica se o anúncio existe antes de exibi-lo. 
        // Se não existir, ele direciona para a pagina inicial e exibe mensagem de erro.
        if($anuncios){
            $dados['anuncios']                 =     $anuncios;
            $dados['categorias']             =     $categorias;
            $dados['titulo_pagina']         =     "Anúncio de {$anuncios["nomeempresa_usuario"]}";
            $dados['descricao_pagina']         =     "{$anuncios["descricao_anuncio"]}";
            $dados['keywords_pagina']         =     "{$anuncios["palavras_chaves_anuncio"]}";

            $this->load->tpl_anunciante("classificados/mostra", $dados);
        } else {

            $this->session->set_flashdata("danger" , "Anúncio inexistente! <br /> Se você acha que deveria encontrar algo aqui, entre em contato conosco!");
            redirect("/");
        }


        //echo $this->db->last_query();
    }

// Controller: Anuncio.php

    public function contato(){

        $this->load->helper("httpnaurl");


        // validação do formulário de atualização do anuncio
        $this->load->library("form_validation");
        $this->form_validation->set_error_delimiters("<p class='alert alert-danger'>", "</p>");

        // abaixo, algumas mensagens de validação já traduzidas        
        $this->form_validation->set_message('required', 'O campo %s é obrigatório.');
        $this->form_validation->set_message('valid_email', 'O e-mail digitado é invalido!');
        // acima, algumas mensagens de validação já traduzidas

        // validações abaixo
        $this->form_validation->set_rules("nomeContato", "Nome", "required|min_length[2]|max_length[100]");
        $this->form_validation->set_rules("telefoneContato", "Telefone", "required|min_length[8]|max_length[22]");
        $this->form_validation->set_rules("emailContato", "Email", "valid_email");
        $this->form_validation->set_rules("mensagemContato", "Mensagem", "required");
        // validações acima

        // dá "start" na função de validação
        $sucesso = $this->form_validation->run();

        if($sucesso){

            $this->load->helper("date");
            $this->load->model("anuncio_model");

            $contatoCliente = array(
                // coluna/ tabela                    input
                "anunciante_id" => $this->input->post("anuncio_id"),
                "nomeContato" => $this->input->post("nomeContato"),
                "telefoneContato" => $this->input->post("telefoneContato"),
                "emailContato" => $this->input->post("emailContato"),
                "assuntoContato" => $this->input->post("assuntoContato"),
                "mensagemContato" => $this->input->post("mensagemContato"),
                "dataContato" => dataPtBrParaMysql(date("d/m/Y"))
                //"dataContato"    => date("Y-m-d H:i:s")
            );

            $this->anuncio_model->contato($contatoCliente);

            $this->session->set_flashdata("success", "A mensagem foi enviada com sucesso!");
            redirect('/');
        } else {

        $this->session->set_flashdata("danger", "A mensagem não foi enviada! Por favor verifique os campos e tente novamente!");    
    $this->load->view('classificados/mostra', $data);


        }

Acho que não precisa mostrar nem a view e nem a model pq eu sei que o problema está no else que não retorna valor algum no campo hidden do id do anuncio e acaba enviando a mensagem para o primeiro usuário cadastrado.

5 respostas

Vitor, você se refere a um problema no else. O else do anuncio.php ??

Me pareceu estranho o $data, pois, no código que você envia, não é atribuído conteúdo a esta variável. Você poderia verificar o conteúdo de $data, pode ter uma pista ali...

Fiquei curioso, se puder me avisa ok? (ainda não cheguei neste ponto do curso, tou quase ali)

No caso Sidnei, não sei se você já chegou na parte do curso que o usuário compra um produto e coloca a data de entrega...

Se sim, é essa parte! é que eu já terminei o curso e estou tentando fazer um projeto próprio..

Vou ver verificar se o problema era esse e já respondo aqui!

solução!

Então Sidnei, aquela não era a solução, infelizmente!

Mas eu consegui solucionar. Procurei na internet um tutorial sobre ajax. Aí ao invés dele verificar mudando de página, ele já verifica ali na pagina mesmo e dá o resultado ali se está certo ou não...

Legal que conseguiu, Vitor.

Isto significa que já tenho a quem recorrer, rs

Haha.. verdade.. só é um pouco complicado eu entrar aqui..

só entro mesmo quando tenho duvida em alguma coisa que vou fazer e sei que já teve no curso..rs

Mas enfim, boa sorte leke! :D