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.