Ir para conteúdo

violin101

Members
  • Total de itens

    44
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre violin101

  1. violin101

    Codeigniter - Relatório apresentando erro

    Olá Ygor Apenas uma dúvida. como faço para passar ou de onde devo informar esta variável $id_cliente ? Observação: se imprimir TODOS os clientes, como vou informar os ID's ? Grato, Cesar
  2. violin101

    Codeigniter - Relatório apresentando erro

    Caros amigos, saudações... Não sei se estou postando na seção correta, se estiver por favor me perdoa. Estou tentando gerar um relatório em codeigniter onde preciso mostrar para cada Cliente cadastrado, quantos usuários tem vinculado, por exemplo: Cliente 1, tem 3 usuários vinculados: user 1 user 2 user 3 Cliente 2, tem 4 usuários vinculados: user 1 user 2 user 3 user 4 e etc. Infelizmente quando gero o Relatório, para cada cliente a QUERY traz todos os usuários cadastrado para os clientes. Na model está assim: <?php class Relatorios_model extends CI_Model { function __construct() { parent::__construct(); $this->load->database(); } //Clientes public function clientesCustom($dataInicial = null,$dataFinal = null){ if($dataInicial == null || $dataFinal == null){ $dataInicial = date('Y-m-01'); $dataFinal = date('Y-m-d'); } $query = "SELECT * FROM clientes WHERE dataCadastro BETWEEN ? AND ? ORDER BY nomeCliente ASC"; $this->db->select('*'); $this->db->from('clientes'); $data = $this->db->query($query, array($dataInicial,$dataFinal)); return $data; } public function clientesRapid(){ $this->db->select('*'); $this->db->from('clientes'); $this->db->order_by('nomeCliente', 'ASC'); $data = $this->db->get(''); return $data; } public function users(){ //Executa a busca no banco de dados USUÁRIOS x CLIENTES $query = "SELECT usuarios.*,clientes.idClientes FROM usuarios INNER JOIN clientes ON usuarios.clientes_idClientes = clientes.idClientes WHERE usuarios.clientes_idClientes = clientes.idClientes "; $data = $this->db->query($query); return $data; } } na Controler está assim: <?php if (!defined('BASEPATH')) { exit('No direct script access allowed'); } class Relatorios extends CI_Controller{ public function __construct() { parent::__construct(); if ((!session_id()) || (!$this->session->userdata('logado'))) { redirect('admin/login'); } $this->load->model('Relatorios_model', '', true); $this->load->model('Usuarios_model', '', true); $this->load->model('Controle_model', '', true); $this->load->library('myfpdf'); $this->data['menuRelatorios'] = 'relatorios'; $this->load->model('controle_model'); $this->data['dados'] = $this->controle_model->getEmitente(); } public function index(){ header('Location: ./'); } //Início de Relatório para Cliente public function clientes(){ if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'rCliente')) { $this->session->set_flashdata('error', 'Você não tem permissão para gerar relatórios de clientes.'); redirect(base_url()); } $this->data['view'] = 'admin/relatorios/rel_clientes'; $this->load->view('admin/tema/topo', $this->data); } public function clientesCustom(){ if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'rCliente')) { $this->session->set_flashdata('error', 'Você não tem permissão para gerar relatórios de clientes.'); redirect(base_url()); } $dataInicial = $this->input->get('dataInicial'); $dataFinal = $this->input->get('dataFinal'); $this->data['clies'] = $this->Relatorios_model->clientesCustom($dataInicial, $dataFinal); $this->load->view('admin/relatorios/imprimir/printClientes', $this->data); } public function clientesRapid(){ if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'rCliente')) { $this->session->set_flashdata('error', 'Você não tem permissão para gerar relatórios de clientes.'); redirect(base_url()); } //Traz os dados dos Clientes $this->data['clies'] = $this->Relatorios_model->clientesRapid(); //Traz os dados de Quantos usuários tem o cliente $this->data['user'] = $this->Relatorios_model->users(); $this->load->view('admin/relatorios/imprimir/printClientes', $this->data); } } Grato, Cesar
  3. violin101

    Atualizar automaticamente COUNT

    Caros amigos, saudações... Por favor, peço desculpa em recorrer novamente a ajuda dos amigos, não persistindo no erro, mas infelizmente não consigo solucionar este problema. Já tentei usar Auto Refresh e dentre outras funções pesquisadas na Internet, mas nenhuma me ajudou a resolver o problema. Conforme imagem anexada, preciso realizar a SOMA de quantas imagens já foram anexadas num limite de 20 imagens no total. Estou usando Codeigniter para desenvolver o sistema, abaixo o Código fonte, do Controller, Model e da View. controller -> imoveis.php <?php function editar($id = null) { if (!is_numeric($id)) { $this->session->set_flashdata('error', 'Item não pode ser encontrado, parâmetro não foi passado corretamente.'); redirect(base_url().'admin/imoveis/'); } if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'eImoveis')) { $this->session->set_flashdata('error', 'Você não tem permissão para editar imóveis.'); redirect(base_url()); } $this->load->library('form_validation'); $this->data['custom_error'] = ''; if ($this->form_validation->run('imoveis') == false) { $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false); } else { $data = array( 'titulo' => $this->input->post('titulo'), ... 'clientes_idClientes' => $this->input->post('clientes_idClientes'), 'categorias_idCategorias' => $this->input->post('categorias_idCategorias'), 'transacao_idTransacao' => $this->input->post('transacao_idTransacao'), 'cidades_idCidades' => $this->input->post('cidadesId'), 'usuarios_idUsuarios' => $this->session->userdata('id') //pega o ID do usuário logado ); if ($this->imoveis_model->edit('imoveis', $data, 'idImoveis', $this->input->post('idImoveis')) == true) { $this->session->set_flashdata('success', 'Imóvel editado com sucesso, você pode continuar incluindo mais detalhes a esse imóvel!'); redirect(base_url().'admin/imoveis'); //Linha abaixo temporariamente ignorada. //.'admin/imoveis/editar/'.$this->input->post('idImoveis')); } else { $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro</p></div>'; } } $this->data['result'] = $this->imoveis_model->getById($id); $this->data['servicos'] = $this->imoveis_model->getServicos($id); $this->data['destaques'] = $this->imoveis_model->getDestaque($id); $this->data['anexos'] = $this->imoveis_model->getAnexos($id); //Traz a quantidade de Imagens por Imóvel da MODEL $this->data['qtdimg'] = $this->imoveis_model->count_anexos($id); $this->load->model('cidades_model'); $this->data['cidade'] = $this->cidades_model->getActive('cidades','cidades.idCidades,cidades.nomeCidade,cidades.estadoCidade'); $this->data['view'] = 'admin/imoveis/editarImoveis'; $this->load->view('admin/tema/topo', $this->data); } ?> model -> Imoveis_model.php <?php //Faz a SOMA da quantidade de imagem por imóvel public function count_anexos($id){ $sql = "SELECT an.idAnexos, an.imoveis_idImoveis, im.idImoveis, COUNT(an.imoveis_idImoveis) AS total FROM imoveis im INNER JOIN anexos an ON an.imoveis_idImoveis = im.idImoveis WHERE an.imoveis_idImoveis = '$id' "; $result = $this->db->query($sql); return $result->row()->total; } ?> view -> editarImoveis.php <!--Anexar Imagens do Imóvel--> <div class="tab-pane" id="tab4"> <div class="span12" style="padding: 1%; margin-left: 0;"> <div class="span12 well" style="padding: 1%; margin-left: 0" id="form-anexos"> <form id="formAnexos" enctype="multipart/form-data" action="javascript:;" accept-charset="utf-8" method="post"> <div class="span10"> <input type="hidden" name="idOsServico" id="idOsServico" value="<?php echo $result->idImoveis?>" /> <label style="font-size:14px; font-weight:bold; color:#3F3F3F;">Imagens</label> <input type="file" class="span12" name="userfile[]" id="userfile[]" multiple="multiple" size="20" /> </div> <div class="span2"> <label for="">&nbsp;</label> <button class="btn btn-success span12"> <i class="icon-white icon-plus"></i> Anexar</button> </div> </form> &nbsp; </div> <div class="span12" style="background:#DAECF2; height:30px; margin-top:-28px; margin-left: 0; border: 1px solid #D8D8D8;"> <!-- Mostro a quantidade de imagens anexadas --> <p>Anexou: <b><?php echo $qtdimg; ?></b> de 20 imagens.</p> <p style="font-size:13px; margin:5px 0 0 10px;"><strong>Aviso!</strong> Extensões permitidas: <strong>jpg|jpeg|JPG|JPEG</strong>. Tamanho máximo: <strong>750x500</strong> para a Imagem. </p> </div> <div class="span12" id="divAnexos" style="margin-left: 0; margin-top:10px; margin-bottom:30px;"> <?php $link = ""; $max = '20'; //define a quantidade de linha na tabela $regLinha = '5';//quantidade de registro por linha $i = ceil($max / $regLinha); $j = 1; $z = 0; echo "<table class='table' id='tblAnexos'>"; echo "<tr>"; foreach ($anexos as $a) { if ($a->thumb == null){ $thumb = base_url().'assets/img/icon-file.png'; $link = base_url().'assets/img/icon-file.png'; } else { $thumb = base_url().'assets/anexos/thumbs/'.$a->thumb; $link = $a->url.$a->anexo; } echo '<td width="10%"> <a href="#modal-anexo" imagem="'.$a->idAnexos.'" link="'.$link.'" role="button" class="btn anexo" data-toggle="modal"><img src="'.$thumb.'" alt=""><p align="center">'. $a->anexo .'</p> </a> </td>'; $z++; if($z == $regLinha and $j < $i){ echo "</tr>"; echo "<tr>"; $z = 0; $j++; } if($z == $regLinha and $j == $i){ echo "</tr>"; } } //Fim do foreach echo "</table>"; ?> </div> </div> </div><!--Fim da div:tab4 --> <script type="text/javascript"> //Adicionar Anexos - Imagens $("#formAnexos").validate({ submitHandler: function( form ){ var dados = $( form ).serialize(); var dados = new FormData(form); $("#form-anexos").hide('1000'); $("#divAnexos").html("<div class='progress progress-info progress-striped active'><div class='bar' style='width: 100%'></div></div>"); $.ajax({ type: "POST", url: "<?php echo base_url();?>admin/imoveis/anexar", data: dados, mimeType:"multipart/form-data", contentType: false, cache: false, processData:false, dataType: 'json', success: function(data) { if(data.result == true){ $("#divAnexos" ).load("<?php echo current_url();?> #divAnexos" ); $('input[type=file]').val(null); } else{ $("#divAnexos").html('<div class="alert fade in"><a href="<?php echo base_url()?>admin/imoveis" class="close">x</a><strong>Atenção!</strong> '+data.mensagem+'</div>'); $('input[type=file]').val(null); } }, error : function() { $("#divAnexos").html('<div class="alert alert-danger fade in"><a href="<?php echo base_url()?>admin/imoveis" class="close">x</a><strong>Atenção!</strong> Ocorreu um erro. Verifique se você anexou o(s) arquivo(s).</div>'); } }); $("#form-anexos").show('1000'); return false; } }); //Excluir Anexos - Imagens $(document).on('click', '.anexo', function(event) { event.preventDefault(); var link = $(this).attr('link'); var id = $(this).attr('imagem'); var url = '<?php echo base_url(); ?>admin/imoveis/excluirAnexo/'; $("#div-visualizar-anexo").html('<img src="'+link+'" alt="">'); $("#excluir-anexo").attr('link', url+id); }); $(document).on('click', '#excluir-anexo', function(event) { event.preventDefault(); var link = $(this).attr('link'); $('#modal-anexo').modal('hide'); $("#divAnexos").html("<div class='progress progress-info progress-striped active'><div class='bar' style='width: 100%'></div></div>"); $.ajax({ type: "POST", url: link, dataType: 'json', success: function(data) { if(data.result == true){ $("#divAnexos" ).load("<?php echo current_url();?> #divAnexos" ); } else{ alert(data.mensagem); } } }); }); </script> Grato, Cesar
  4. violin101

    Codeiginter - Não atualiza automaticamente a quantidade de registro

    Amigos, Alguém pode me ajudar ?
  5. violin101

    Cálculo de horas (subtração) acima de 24h

    Caro amigo, Renato Segue um pequeno exemplo para cálculo de horas e data. <?php //Pega o Horário Atual date_default_timezone_set('America/Sao_Paulo'); //Calcula a Data Final com a Data Atual $data_atual = date("Y-m-d"); $data_atual = strtotime($data_atual); $dataFim = strtotime($cotaDtFim); $diferenca = $data_atual - $dataFim; $dias = floor($diferenca / 86400); $faltaDias = "{$dias}"; //Calcula a Hora Final com a Hora Atual $hora_atual = date("H:i:s"); $hora_atual = strtotime($hora_atual); $horaFim = strtotime($cotaHrsFim); $diferenca = $hora_atual - $horaFim; $hora = floor($diferenca / 3600); $minutos = floor(($diferenca / 60) % 60); $segundos = floor($diferenca % 60); $faltaHora = "{$hora}:{$minutos}:{$segundos}"; ?> Cesar
  6. violin101

    Erro ao tentar incluir

    Caro Jefferson, saudações... Segue um exemplo simples mas bem explicativo, para que possa entender o procedimento de INSERT. Este exemplo usa PDO. <!DOCTYPE html> <html> <head> <?php //Faz a Conexão com o Banco de Dados include"config.php"; ?> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>PDO Insert</title> <link rel="stylesheet" href=""> </head> <body> <?php if(isset($_POST['enviar'])){ //Funcão strip_tags - elimina qual extensão (html, php e etc) //Função trim - elimina qualquer espaço em branco $campo1 = strip_tags(trim($_POST['campo1'])); $teste = strip_tags(trim($_POST['teste'])); //Define a tabela $sql_teste = 'INSERT INTO teste (campo1, campo2)'; $sql_teste .= 'VALUES (:campo1, :campo2)'; //Função [ .= ] - concatenar try{ //Antes de executar qualquer tarefa, verifica no Bco Dados Login e Senha $query_teste = $conecta->prepare($sql_teste); $query_teste->bindValue(':campo1',$campo1, PDO::PARAM_STR); $query_teste->bindValue(':campo2',$teste, PDO::PARAM_STR); //Executa a ação $query_teste->execute(); echo 'Cadastro com sucesso'; } catch (PDOException $error_insert) { echo 'Erro ao cadastrar '.$error_insert->getMessage(); } } ?> <form name="testando" action="" method="post" enctype="multipart/form-data"> <input type="text" name="campo1" /><br/> <input type="text" name="teste" /><br/> <input type="submit" name="enviar" value="Enviar" /><br/> </body> </html> Espero ter ajudado. Cesar
  7. Caros amigos do grupo, saudações... Peço mil desculpa por recorrer novamente a ajuda dos amigos. Preciso resolver um problema de limite de anexos(imagens), mas não estou conseguindo. Criei uma função na model, onde a SQL + INNER JOIN, faz a busca e a contagem de registro por chave estrangeira corretamente. O problema é que não consigo atualizar(dar um refresh) na view, sempre precisa pressionar F5. Preciso colocar um limite por exemplo:--->[ anexou 5 de 20 imagens. ] Os código fonte. models <?php //Soma a quantidade de imagens por código de imóvel(chave estrangeira) public function count_anexos($id){ $sql = "SELECT an.idAnexos, an.imoveis_idImoveis, im.idImoveis, COUNT(an.imoveis_idImoveis) AS total FROM imoveis im INNER JOIN anexos an ON an.imoveis_idImoveis = im.idImoveis WHERE an.imoveis_idImoveis = '$id' "; $result = $this->db->query($sql); return $result->row()->total; } ?> na controllers <?php function editar($id = null) { if (!is_numeric($id)) { $this->session->set_flashdata('error', 'Item não pode ser encontrado, parâmetro não foi passado corretamente.'); redirect(base_url().'admin/imoveis/'); } if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'eImoveis')) { $this->session->set_flashdata('error', 'Você não tem permissão para editar imóveis.'); redirect(base_url()); } $this->load->library('form_validation'); $this->data['custom_error'] = ''; if ($this->form_validation->run('imoveis') == false) { $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false); } else { $data = array( 'titulo' => $this->input->post('titulo'), ... 'clientes_idClientes' => $this->input->post('clientes_idClientes'), 'categorias_idCategorias' => $this->input->post('categorias_idCategorias'), 'transacao_idTransacao' => $this->input->post('transacao_idTransacao'), 'cidades_idCidades' => $this->input->post('cidadesId'), 'usuarios_idUsuarios' => $this->session->userdata('id') //pega o ID do usuário logado ); if ($this->imoveis_model->edit('imoveis', $data, 'idImoveis', $this->input->post('idImoveis')) == true) { $this->session->set_flashdata('success', 'Imóvel editado com sucesso, você pode continuar incluindo mais detalhes a esse imóvel!'); redirect(base_url().'admin/imoveis'); } else { $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro</p></div>'; } } $this->data['result'] = $this->imoveis_model->getById($id); $this->data['servicos'] = $this->imoveis_model->getServicos($id); $this->data['destaques'] = $this->imoveis_model->getDestaque($id); $this->data['anexos'] = $this->imoveis_model->getAnexos($id); //---[ Traz a quantidade de Imagens por Imóvel ]--- $this->data['qtdimg'] = $this->imoveis_model->count_anexos($id); $this->load->model('cidades_model'); $this->data['cidade'] = $this->cidades_model->getActive('cidades','cidades.idCidades,cidades.nomeCidade,cidades.estadoCidade'); $this->data['view'] = 'admin/imoveis/editarImoveis'; $this->load->view('admin/tema/topo', $this->data); } ?> Grato Cesar
  8. violin101

    PHP função COUNT usando Codeiginter

    Caros amigos, saudações... Desculpa mais uma vez recorrer a ajuda dos amigos, pois ainda não consegui solucionar o meu problema de COUNT. Gostaria de fazer uma contagem de quantas imagens já foi anexada na tabela. Na view criei esta função abaixo para anexar e excluir imagens. Gostaria de adaptar nessa função um COUNT e mostrar na view quantas imagens já consta cadastrada. <?php //Adicionar Anexos - Imagens $("#formAnexos").validate({ submitHandler: function( form ){ var dados = $( form ).serialize(); var dados = new FormData(form); $("#form-anexos").hide('1000'); $("#divAnexos").html("<div class='progress progress-info progress-striped active'><div class='bar' style='width: 100%'></div></div>"); $.ajax({ type: "POST", url: "<?php echo base_url();?>admin/imoveis/anexar", data: dados, mimeType:"multipart/form-data", contentType: false, cache: false, processData:false, dataType: 'json', success: function(data) { if(data.result == true){ $("#divAnexos" ).load("<?php echo current_url();?> #divAnexos" ); $('input[type=file]').val(null); } else{ $("#divAnexos").html('<div class="alert fade in"><a href="<?php echo base_url()?>admin/imoveis" class="close">x</a><strong>Atenção!</strong> '+data.mensagem+'</div>'); $('input[type=file]').val(null); } }, error : function() { $("#divAnexos").html('<div class="alert alert-danger fade in"><a href="<?php echo base_url()?>admin/imoveis" class="close">x</a><strong>Atenção!</strong> Ocorreu um erro. Verifique se você anexou o(s) arquivo(s).</div>'); } }); $("#form-anexos").show('1000'); return false; } }); //Excluir Anexos - Imagens $(document).on('click', '.anexo', function(event) { event.preventDefault(); var link = $(this).attr('link'); var id = $(this).attr('imagem'); var url = '<?php echo base_url(); ?>admin/imoveis/excluirAnexo/'; $("#div-visualizar-anexo").html('<img src="'+link+'" alt="">'); $("#excluir-anexo").attr('link', url+id); }); $(document).on('click', '#excluir-anexo', function(event) { event.preventDefault(); var link = $(this).attr('link'); $('#modal-anexo').modal('hide'); $("#divAnexos").html("<div class='progress progress-info progress-striped active'><div class='bar' style='width: 100%'></div></div>"); $.ajax({ type: "POST", url: link, dataType: 'json', success: function(data) { if(data.result == true){ $("#divAnexos" ).load("<?php echo current_url();?> #divAnexos" ); } else{ alert(data.mensagem); } } }); }); ?> Grato, Cesar
  9. violin101

    PHP função COUNT usando Codeiginter

    Amigos, saudações... Gostaria de fazer um contador de registro no banco de dados, por chave estrangeira, estou usando Codeigniter. Por exemplo: idProduto descricao categoria_idCategoria --> chave estrangeira Preciso sabe a quantidade de Produto que Cada Categoria tem cadastrado. Para contar quantos registro tenho na tabela produto uso a seguinte função na MODEL. <?php function count($table){ //mostra o total geral de registro gravado na tabela return $this->db->count_all($table); } ?> Grato, Cesar
  10. Caros amigos, saudações... Com ajuda de um amigo, o problema postado foi solucionado, da seguinte forma: Solução: function editar($id = null) { if (!is_numeric($id)) { $this->session->set_flashdata('error', 'Item não pode ser encontrado, parâmetro não foi passado corretamente.'); redirect(base_url().'admin/usuarios/'); } $this->load->library('form_validation'); $this->data['custom_error'] = ''; //Desativa o is_unique no form_validation $this->form_validation->set_rules('nome', 'Nome', 'trim|required'); $this->form_validation->set_rules('rg', 'RG', 'trim|required'); $this->form_validation->set_rules('cpf', 'CPF', 'trim|required'); $this->form_validation->set_rules('endereco', 'Endereço', 'trim|required'); $this->form_validation->set_rules('numero', 'Número', 'trim|required'); $this->form_validation->set_rules('bairro', 'Bairro', 'trim|required'); $this->form_validation->set_rules('cidade', 'Cidade', 'trim|required'); $this->form_validation->set_rules('estado', 'Estado', 'trim|required'); $this->form_validation->set_rules('email', 'Email', 'trim|required'); $this->form_validation->set_rules('telefone', 'Telefone', 'trim|required'); $this->form_validation->set_rules('situacao', 'Situação', 'trim|required'); $this->form_validation->set_rules('permissoesId', 'Permissão', 'trim|required'); if ($this->form_validation->run() == false) { $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">'.validation_errors().'</div>' : false); } else { if ($this->input->post('idUsuarios') == 1 && $this->input->post('situacao') == 0) { $this->session->set_flashdata('error', 'O usuário super admin não pode ser desativado!'); redirect(base_url().'admin/usuarios/editar/'.$this->input->post('idUsuarios')); } $senha = $this->input->post('senha'); if ($senha != null) { $senha = password_hash($senha, PASSWORD_DEFAULT); $data = array( 'nome' => $this->input->post('nome'), 'rg' => $this->input->post('rg'), 'cpf' => $this->input->post('cpf'), 'endereco' => $this->input->post('endereco'), 'numero' => $this->input->post('numero'), 'bairro' => $this->input->post('bairro'), 'cidade' => $this->input->post('cidade'), 'estado' => $this->input->post('estado'), 'email' => $this->input->post('email'), 'senha' => $senha, 'telefone' => $this->input->post('telefone'), 'celular' => $this->input->post('celular'), 'situacao' => $this->input->post('situacao'), 'permissoes_idPermissao' => $this->input->post('permissoesId') ); } else { $data = array( 'nome' => $this->input->post('nome'), 'rg' => $this->input->post('rg'), 'cpf' => $this->input->post('cpf'), 'endereco' => $this->input->post('endereco'), 'numero' => $this->input->post('numero'), 'bairro' => $this->input->post('bairro'), 'cidade' => $this->input->post('cidade'), 'estado' => $this->input->post('estado'), 'email' => $this->input->post('email'), 'telefone' => $this->input->post('telefone'), 'celular' => $this->input->post('celular'), 'situacao' => $this->input->post('situacao'), 'permissoes_idPermissao' => $this->input->post('permissoesId') ); } if ($this->usuarios_model->edit('usuarios', $data, 'idUsuarios', $this->input->post('idUsuarios')) == true) { $this->session->set_flashdata('success', 'Usuário editado com sucesso!'); redirect(base_url().'admin/usuarios/editar/'.$this->input->post('idUsuarios')); } else { $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro</p></div>'; } } $this->data['result'] = $this->usuarios_model->getById($id); $this->load->model('permissoes_model'); $this->data['permissoes'] = $this->permissoes_model->getActive('permissoes', 'permissoes.idPermissao,permissoes.nome'); $this->data['view'] = 'admin/usuarios/editarUsuario'; $this->load->view('admin/tema/topo', $this->data); } Grato, Cesar
  11. Caros amigos, saudações... Estou com um problema em Codeiginter para Editar Registro. Na pasta Controllers, divide da seguinte forma: Administrador = admin Site Loja......... = lojavirtual Para Adicionar está tudo certo, sem erro. Quando quero EDITAR algum REGISTRO, não estou conseguindo passar o parâmetro, não entendo. Abaixo o Código Fonte - Controller Usuarios.php <?php class Usuarios extends CI_Controller { function __construct() { parent::__construct(); if ((!session_id()) || (!$this->session->userdata('logado'))) { redirect('admin/login'); } if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'cUsuario')) { $this->session->set_flashdata('error', 'Você não tem permissão para configurar os usuários.'); redirect(base_url()); } $this->load->helper(array('form', 'codegen_helper')); $this->load->model('usuarios_model', '', true); $this->data['menuUsuarios'] = 'Usuários'; $this->data['menuConfiguracoes'] = 'Configurações'; } function index() { $this->gerenciar(); } function gerenciar() { $this->load->library('pagination'); $config['base_url'] = base_url().'admin/usuarios/gerenciar/'; $config['total_rows'] = $this->usuarios_model->count('usuarios'); $config['per_page'] = 10; $config['next_link'] = 'Próxima'; $config['prev_link'] = 'Anterior'; $config['full_tag_open'] = '<div class="pagination alternate"><ul>'; $config['full_tag_close'] = '</ul></div>'; $config['num_tag_open'] = '<li>'; $config['num_tag_close'] = '</li>'; $config['cur_tag_open'] = '<li><a style="color: #2D335B"><b>'; $config['cur_tag_close'] = '</b></a></li>'; $config['prev_tag_open'] = '<li>'; $config['prev_tag_close'] = '</li>'; $config['next_tag_open'] = '<li>'; $config['next_tag_close'] = '</li>'; $config['first_link'] = 'Primeira'; $config['last_link'] = 'Última'; $config['first_tag_open'] = '<li>'; $config['first_tag_close'] = '</li>'; $config['last_tag_open'] = '<li>'; $config['last_tag_close'] = '</li>'; $this->pagination->initialize($config); $this->data['results'] = $this->usuarios_model->get($config['per_page'], $this->uri->segment(3)); $this->data['view'] = 'admin/usuarios/usuarios'; $this->load->view('admin/tema/topo', $this->data); } function adicionar() { $this->load->library('form_validation'); $this->data['custom_error'] = ''; if ($this->form_validation->run('usuarios') == false) { $this->data['custom_error'] = (validation_errors() ? '<div class="alert alert-danger">'.validation_errors().'</div>' : false); } else { $data = array( 'nome' => set_value('nome'), 'rg' => set_value('rg'), 'cpf' => set_value('cpf'), 'endereco' => set_value('endereco'), 'numero' => set_value('numero'), 'bairro' => set_value('bairro'), 'cidade' => set_value('cidade'), 'estado' => set_value('estado'), 'email' => set_value('email'), 'senha' => password_hash($this->input->post('senha'), PASSWORD_DEFAULT), 'telefone' => set_value('telefone'), 'celular' => set_value('celular'), 'situacao' => set_value('situacao'), 'dataCadastro' => date('Y-m-d'), 'permissoes_idPermissao' => $this->input->post('permissoesId') ); if ($this->usuarios_model->add('usuarios', $data) == true) { $this->session->set_flashdata('success', 'Usuário cadastrado com sucesso!'); redirect(base_url().'admin/usuarios/adicionar/'); } else { $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro.</p></div>'; } } $this->load->model('permissoes_model'); $this->data['permissoes'] = $this->permissoes_model->getActive('permissoes', 'permissoes.idPermissao,permissoes.nome'); $this->data['view'] = 'admin/usuarios/adicionarUsuario'; $this->load->view('admin/tema/topo', $this->data); } function editar() { //Quando edito, sempre cai nesta parte e não continua. if (!$this->uri->segment(3) || !is_numeric($this->uri->segment(3))) { $this->session->set_flashdata('error', 'Item não pode ser encontrado, parâmetro não foi passado corretamente.'); redirect('admin/usuarios'); } $this->load->library('form_validation'); $this->data['custom_error'] = ''; //Desativa o is_unique no form_validation $this->form_validation->set_rules('nome', 'Nome', 'trim|required'); $this->form_validation->set_rules('rg', 'RG', 'trim|required'); $this->form_validation->set_rules('cpf', 'CPF', 'trim|required'); $this->form_validation->set_rules('endereco', 'Endereço', 'trim|required'); $this->form_validation->set_rules('numero', 'Número', 'trim|required'); $this->form_validation->set_rules('bairro', 'Bairro', 'trim|required'); $this->form_validation->set_rules('cidade', 'Cidade', 'trim|required'); $this->form_validation->set_rules('estado', 'Estado', 'trim|required'); $this->form_validation->set_rules('email', 'Email', 'trim|required'); $this->form_validation->set_rules('telefone', 'Telefone', 'trim|required'); $this->form_validation->set_rules('situacao', 'Situação', 'trim|required'); $this->form_validation->set_rules('permissoesId', 'Permissão', 'trim|required'); if ($this->form_validation->run() == false) { $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">'.validation_errors().'</div>' : false); } else { if ($this->input->post('idUsuarios') == 1 && $this->input->post('situacao') == 0) { $this->session->set_flashdata('error', 'O usuário super admin não pode ser desativado!'); redirect(base_url().'admin/usuarios/editar/'.$this->input->post('idUsuarios')); } $senha = $this->input->post('senha'); if ($senha != null) { $senha = password_hash($senha, PASSWORD_DEFAULT); $data = array( 'nome' => $this->input->post('nome'), 'rg' => $this->input->post('rg'), 'cpf' => $this->input->post('cpf'), 'endereco' => $this->input->post('endereco'), 'numero' => $this->input->post('numero'), 'bairro' => $this->input->post('bairro'), 'cidade' => $this->input->post('cidade'), 'estado' => $this->input->post('estado'), 'email' => $this->input->post('email'), 'senha' => $senha, 'telefone' => $this->input->post('telefone'), 'celular' => $this->input->post('celular'), 'situacao' => $this->input->post('situacao'), 'permissoes_idPermissao' => $this->input->post('permissoesId') ); } else { $data = array( 'nome' => $this->input->post('nome'), 'rg' => $this->input->post('rg'), 'cpf' => $this->input->post('cpf'), 'endereco' => $this->input->post('endereco'), 'numero' => $this->input->post('numero'), 'bairro' => $this->input->post('bairro'), 'cidade' => $this->input->post('cidade'), 'estado' => $this->input->post('estado'), 'email' => $this->input->post('email'), 'telefone' => $this->input->post('telefone'), 'celular' => $this->input->post('celular'), 'situacao' => $this->input->post('situacao'), 'permissoes_idPermissao' => $this->input->post('permissoesId') ); } if ($this->usuarios_model->edit('usuarios', $data, 'idUsuarios', $this->input->post('idUsuarios')) == true) { $this->session->set_flashdata('success', 'Usuário editado com sucesso!'); redirect(base_url().'admin/usuarios/editar/'.$this->input->post('idUsuarios')); } else { $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro</p></div>'; } } $this->data['result'] = $this->usuarios_model->getById($this->uri->segment(3)); $this->load->model('permissoes_model'); $this->data['permissoes'] = $this->permissoes_model->getActive('permissoes', 'permissoes.idPermissao,permissoes.nome'); $this->data['view'] = 'admin/usuarios/editarUsuario'; $this->load->view('admin/tema/topo', $this->data); } public function excluir() { $ID = $this->uri->segment(3); $this->usuarios_model->delete('usuarios', 'idUsuarios', $ID); redirect(base_url().'admin/usuarios/gerenciar/'); } } Pasta View/Admin: Usuarios.php <a href="<?php echo base_url()?>admin/usuarios/adicionar" class="btn btn-success"><i class="icon-plus icon-white"></i> Adicionar Usuário</a> <?php if (!$results) {?> <div class="widget-box"> <div class="widget-title"> <span class="icon"> <i class="icon-user"></i> </span> <h5>Usuários</h5> </div> <div class="widget-content nopadding"> <table class="table table-bordered "> <thead> <tr style="backgroud-color: #2D335B"> <th>#</th> <th>Nome</th> <th>CPF</th> <th>Telefone</th> <th>Nível</th> <th>Ação</th> </tr> </thead> <tbody> <tr> <td colspan="5">Nenhum Usuário Cadastrado</td> </tr> </tbody> </table> </div> </div> <?php } else {?> <div class="widget-box"> <div class="widget-title"> <span class="icon"> <i class="icon-user"></i> </span> <h5>Usuários</h5> </div> <div class="widget-content nopadding"> <table class="table table-bordered "> <thead> <tr style="backgroud-color: #2D335B"> <th>#</th> <th>Nome</th> <th>CPF</th> <th>Telefone</th> <th>Nível</th> <th>Ação</th> </tr> </thead> <tbody> <?php foreach ($results as $r) { echo '<tr>'; echo '<td width="50" height="10">'.$r->idUsuarios.'</td>'; echo '<td width="250" height="10">'.$r->nome.'</td>'; echo '<td style="text-align:center;">'.$r->cpf.'</td>'; echo '<td style="text-align:center;">'.$r->telefone.'</td>'; echo '<td>'.$r->permissao.'</td>'; //Aqui passo o Código do USUÁRIO a ser alterado, mas quando clico em ALTERAR, não passa o parâmetro echo '<td style="text-align:center;"> <a href="'.base_url().'admin/usuarios/editar/'.$r->idUsuarios.'" class="btn btn-info tip-top" title="Editar Usuário"><i class="icon-pencil icon-white"></i></a> </td>'; echo '</tr>'; } ?> <tr> </tr> </tbody> </table> </div> </div> <?php echo $this->pagination->create_links(); }?> Grato, Cesar
  12. violin101

    Habilitar ou Desabilitar determinada função.

    Olá rcamu Saudações... Partindo do princípio que acredito que na sua Base de Dados deve ter um campo na sua tabela para STATUS, por exemplo: Tabela -> produto campos - id campos - nome campos - status Você deve fazer uma busca em sua tabela e filtrar pelo o Campo STATUS no caso, um exemplo usando PDO: <?php //Paginação da página $pag = isset($_GET['pag']) ? (int)$_GET['pag'] : 1; $maximo = '10'; //RESULTADOS POR PÁGINA $inicio = ($pag * $maximo) - $maximo; $sql_pegaAtivos = "SELECT * FROM cotacao WHERE clientes_clienteId = '$user_clienteId' ORDER BY cotaNumero DESC LIMIT ".$inicio.','.$maximo; try{ $query_pegaAtivos = $conecta->prepare($sql_pegaAtivos); $query_pegaAtivos->bindValue(':clientes_clienteId',$user_clienteId,PDO::PARAM_STR); $query_pegaAtivos->execute(); $resultado_pegaAtivos = $query_pegaAtivos->fetchAll(PDO::FETCH_ASSOC); $count_pegaAtivos = $query_pegaAtivos->rowCount(PDO::FETCH_ASSOC); }catch(PDOexception $error_pegaAtivos){ echo 'Erro ao pegar ativos'; } foreach($resultado_pegaAtivos as $resAtivos){ $cotaId = $resAtivos['cotaId']; $cotaNumero = $resAtivos['cotaNumero']; $cotaDtInicio = $resAtivos['cotaDtInicio']; $cotaHrsInicio = $resAtivos['cotaHrsInicio']; $cotaDtFim = $resAtivos['cotaDtFim']; $cotaHrsFim = $resAtivos['cotaHrsFim']; $cotaTitulo = $resAtivos['cotaTitulo']; $cotaObserva = $resAtivos['cotaObserva']; $cotaStatus = $resAtivos['cotaStatus']; $clientes_clienteId = $resAtivos['clientes_clienteId']; $desc_categ = $resAtivos['desc_categ']; $desc_pgto = $resAtivos['desc_pgto']; } ?> Depois faço uma validação através do campo STATUS <td align="center" width="70"> <?php //O Sistema faz uma pesquisa do campo cotaStatus do resultado que veio do MySql switch ($cotaStatus){ case 0: ?> <!-- Editar a Cotação para Alteração --> <form name="analisar" action="painel.php?exe=admin-cliente/cotacao/cotacao_itens&cotacao=<?php echo $cotaId;?>" enctype="multipart/form-data" method="post" > <input type="hidden" name="cotaId" value="<?php echo $cotaId;?>" /> <input type="hidden" name="cotaNumero" value="<?php echo $cotaNumero;?>" /> <input class="btn btn-primary btn-xs" type="submit" name="executar" id="executar" style="font-size: 14px;" value="Editar" /> </form> <?php break; case 1: ?> <!-- Anilisar a Cotação para poder Alteração --> <form name="analisar" action="painel.php?exe=admin-cliente/cotacao/cotacao_itensCota&cotacao=<?php echo $cotaId;?>" enctype="multipart/form-data" method="post" > <input type="hidden" name="cotaId" value="<?php echo $cotaId;?>" /> <input type="hidden" name="cotaNumero" value="<?php echo $cotaNumero;?>" /> <input class="btn btn-success btn-xs" type="submit" name="executar" id="executar" style="font-size: 14px;" value="Editar" /> </form> <?php break; case 2: ?> <!-- Visualizar a Cotação para Analisar --> <form name="analisar" action="painel.php?exe=admin-cliente/cotacao/cotacao_tela&cotacao=<?php echo $cotaId;?>" enctype="multipart/form-data" method="post" > <input type="hidden" name="cotaId" value="<?php echo $cotaId;?>" /> <input type="hidden" name="cotaNumero" value="<?php echo $cotaNumero;?>" /> <input class="btn btn-success btn-xs" type="submit" name="executar" id="executar" style="font-size: 14px;" value="Editar" /> </form> <?php break; case 3: ?> <!-- Visualizar a Cotação para Enviar aos Fornecedores --> <form name="analisar" action="painel.php?exe=admin-cliente/cotacao/cotacao_telaDisp&cotacao=<?php echo $cotaId;?>" enctype="multipart/form-data" method="post" > <input type="hidden" name="cotaId" value="<?php echo $cotaId;?>" /> <input type="hidden" name="cotaNumero" value="<?php echo $cotaNumero;?>" /> <input class="btn btn-success btn-xs" type="submit" name="executar" id="executar" style="font-size: 14px;" value="Editar" /> </form> <?php break; case 4: ?> <!-- Visualizar a Cotação para Encerrar --> <form name="analisar" action="painel.php?exe=admin-cliente/cotacao/cotacao_telaFim&cotacao=<?php echo $cotaId;?>" enctype="multipart/form-data" method="post" > <input type="hidden" name="cotaId" value="<?php echo $cotaId;?>" /> <input type="hidden" name="cotaNumero" value="<?php echo $cotaNumero;?>" /> <input class="btn btn-success btn-xs" type="submit" name="executar" id="executar" style="font-size: 14px;" value="Editar" /> </form> <?php break; }//fim do switch/case ?> </td> Espero poder ter ajudado. Cesar
  13. violin101

    PHP - Criar Editor Texto com textarea

    Grato, vou verificar e estudar.
  14. violin101

    PHP - Editor de Texto, não mostra o Campo do MySql

    Caros amigos Saudações... Primeiramente peço mil desculpas por recorrer a ajuda dos amigos do grupo. Estou montando uma rotina de Editor de Texto em PHP+Codeiginter. A princípio criei uma rotina simples, sem muitos recursos, mas funcional. O Editor de Texto faz todas as funções: Negrito, Itálico, Fontes e etc. Estou com o seguinte problema: tenho um campo no mysql, que chama: quemsomos. Após criar o Editor de Texto e todas a rotina de Busca do campo acima, não consigo mostrar dentro do Editor os dados cadastrado pelo usuário. Abaixo o código fonte: script.js /* JavaScript funções para o Comando do Editor de Texto. */ var Editor = null; document.addEventListener("DOMContentLoaded", function(){ Editor = new myEditor(); Editor.Start(); setInterval(function(){ var valor = document.getElementById('Editor').contentWindow.document.body.innerHTML document.getElementById("txtEditor").value = valor; }, 1000); }); function myEditor() { this.getEditor = function() { return document.getElementById("Editor").contentWindow.document; }; this.Start = function() { //Inicia o modo Design this.getEditor().designMode = 'on'; //Desativa a formatação padrão em CSS try { this.getEditor().execCommand("styleCss", 0, false); } catch (e) { try { this.getEditor().execCommand("useCSS", 0, true); } catch (e) { } } }; //Alterar para Negrito document.getElementById("btn_bold").addEventListener("click", function(){ Editor.getEditor().execCommand("styleCss", true, null); Editor.getEditor().execCommand("bold", false, null); return false; }); //Alterar para Itálico document.getElementById("btn_italic").addEventListener("click", function(){ Editor.getEditor().execCommand("styleCss", true, null); Editor.getEditor().execCommand("italic", false, null); return false; }); //Alterar para Underline document.getElementById("btn_underline").addEventListener("click", function(){ Editor.getEditor().execCommand("styleCss", true, null); Editor.getEditor().execCommand("underline", false, null); return false; }); //Alterar Fonte document.getElementById("slFonte").addEventListener("change", function(){ var fonteName = document.getElementById("slFonte").value; Editor.getEditor().execCommand('fontName', false, fonteName); return false; }); //Alterar Tamanho Fonte document.getElementById("slSize").addEventListener("change", function(){ var fontSize = document.getElementById("slSize").value; Editor.getEditor().execCommand('fontSize', false, fontSize); return false; }); document.getElementById("slColor").addEventListener("change", function(){ var fontCor = document.getElementById("slColor").value; Editor.getEditor().execCommand('foreColor', false, fontCor); return false; }); //Alinhar a esquerda document.getElementById("btn_left").addEventListener("click", function(){ Editor.getEditor().execCommand('justifyLeft', false, null); return false; }); //Centralizar document.getElementById("btn_center").addEventListener("click", function(){ Editor.getEditor().execCommand('justifyCenter', false, null); return false; }); //Alinhar a direita document.getElementById("btn_right").addEventListener("click", function(){ Editor.getEditor().execCommand('justifyright', false, null); return false; }); //Justificar document.getElementById("btn_justify").addEventListener("click", function(){ Editor.getEditor().execCommand('justifyFull', false, null); return false; }); //Lista ordenada document.getElementById("btn_ordered").addEventListener("click", function(){ Editor.getEditor().execCommand('insertOrderedList', false, null); return false; }); //Lista não ordenada document.getElementById("btn_unordered").addEventListener("click", function(){ Editor.getEditor().execCommand('insertUnorderedList', false, null); return false; }); } Model view: <link rel="stylesheet" href="<?php echo base_url();?>assets/zzz/css/editorwys.css" type="text/css" media="all" /> <script type="text/javascript" src="<?php echo base_url();?>assets/zzz/js/script.js"></script> <div class="row-fluid" style="margin-top:0"> <div class="span12"> <div class="widget-box"> <div class="widget-title" style="height:45px; background:#fff;" > <span class="icon"> <img src="<?php echo $dados[0]->url_logo; ?>" alt="" style="width:60px; height:30px;"> </span> <h5 style="font-size:18px; margin-top:5px; font-weight:bold; color:#3F3F3F;">Editar Dados do Emitente </h5> </div> <div id="dvCenterEditor"> <div id="bar"> <select id="slFonte" class="margin" style="width:130px;"> <option value="courier">Courier</option> <option value="Verdana">Verdana</option> <option value="Arial">Arial</option> <option value="Segoe">Segoe</option> <option value="Calibri">Calibri</option> </select> <select id="slSize" class="margin" style="width:70px;"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> </select> <button id="btn_bold" class="btn margin"><i class="icon-bold"></i></button> <button id="btn_italic" class="btn"><i class="icon-italic"></i></button> <button id="btn_underline" class="btn"><i class="icon-text-width"></i></button> <!-- <button id="btn_color" class="btn margin"></button> --> <select id="slColor" class="margin" style="width:130px;"> <option value="#000066">Azul</option> <option value="#006600">Verde</option> <option value="#000000">Preto</option> <option value="#ff0000">Vermelho</option> <option value="#5E045E">Roxo</option> </select> <button id="btn_left" class="btn"><i class="icon-align-left"></i></button> <button id="btn_center" class="btn"><i class="icon-align-center"></i></button> <button id="btn_right" class="btn"><i class="icon-align-right"></i></button> <button id="btn_justify" class="btn"><i class="icon-align-justify"></i></button> <button id="btn_unordered" class="btn"><i class="icon-th-list"></i></button> <button id="btn_ordered" class="btn"><i class="icon-list-alt"></i></button> </div> <form action="<?php echo base_url(); ?>index.php/seular/textoEmitente" id="formTexto" enctype="multipart/form-data" method="post" class="form-horizontal" > <!-- Não consigo mostrar o campo vindo do MySql dentro do editor --> <iframe id="Editor" name="Editor"></iframe> <textarea id="txtEditor" style="display:none;"></textarea> <div class="form-actions"> <div class="span6 offset3" style="text-align: center"> <a href="<?php echo base_url() ?>index.php/seular/emitente" id="" class="btn btn-danger">Cancelar</a> &nbsp;&nbsp; <button class="btn btn-primary">Alterar</button> </div> </div> </form> </div> </div> </div> </div> Como faço para mostrar todo o campo com suas informações dentro do Editor ? Grato, Cesar
  15. violin101

    PHP - Criar Editor Texto com textarea

    Caros amigos, saudações... Por favor me desculpa por recorrer ao auxílio dos amigos nesta parte. Mas acredito que muitos tem essa dúvida e muitas das vezes nem todos entenderam essa parte. Gostaria de criar um editor de texto, com as seguintes finalidades: GRAVAR / EDITAR / EXCLUIR. Observações: Já fiz várias pesquisas na Internet, mas sem exito. Gostaria de Criar um Editor parecido com esse do Forum, que usamos para expor nossas dúvidas. Alguém teria algum exemplo ou alguma leitura referente a esse tema ? Grato, Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.