Jump to content
Sign in to follow this  
WagnerFilho

Posicionar Mensagens Chat Codeigniter

Recommended Posts

Olá, Estou a desenvolver um aplicativo de mensagens(chat) e praticamente está concluído e funcionando.

Acontece que as mensagens estão todas alinhadas da esquerda para direita, independente do usuário da mensagem.

Exemplo:

Usuario 1 Mensagem
Usuario 2 Mensagem
Usuario 1 Mensagem
Usuario 2 Mensagem

Pretendo alterar isto e posicionar a mensagem do usuario 1 a esquerda e posicionar a mensagem do usuario 2 a direita. (estilo WhastApp).

Usuario 1 Mensagem
Mensagem Usuario 2
Usuario 1 Mensagem
Mensagem Usuario 2

Abaixo está o código de como estou recuperando a mensagem.

<?php
$this->db->select('tickets_historico.*,usuarios.nome_usuario');
    $this->db->join('usuarios','usuarios.id = tickets_historico.usuario_id', 'left');
    $this->db->where('ticket_id = 1');
    $this->db->order_by('dt_cadastro','desc');
    $historico = $this->db->get('tickets_historico')->result_array()
?>

Abaixo está o código de como estou exibindo a mensagem.

<div class="direct-chat-msg">
  <?php //Se houver comentários, imprime os comentários
  if(count($historico) > 0)
{ foreach ($historico as $row)
  {?>
    <?php $id = $row['usuario_id']; ?>
        <?php $image_url = base_url() . 'upload/imagens_usuarios' . '/' . $id . "_thumbnail" . '.jpg'; ?>
            <div class="direct-chat-info clearfix">
                <span class="direct-chat-name pull-left"><?=$row['nome_usuario']?></span>
                <span class="direct-chat-timestamp pull-right"><?= date('d/m/Y h:i A',strtotime($row['dt_cadastro']))?></span>
            </div>
            <img class="direct-chat-img" src="<?php echo $image_url; ?>" alt="message user image">
            <div class="direct-chat-text">
                <?=$row['mensagem'];?>
            </div><br>
   <?php }
}
else //Quando não há nenhum comentário
{
echo "<p>Atualmente, não há comentários.</p>";
}
?>
</div>

Resumindo o código acima:

if(count($historico) > 0)
    { foreach ($historico as $row)
{?>
    <p><strong><?=$row['nome_usuario']?></strong> Disse em <?= date('d/m/Y h:i A',strtotime($row['dt_cadastro']))?><br>
    <?=$row['mensagem'];?></p><hr>
<?php   }
}
    else //Quando não há nenhum comentário
{
    echo "<p>Atualmente, não há comentários.</p>";
}
?>

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
Sign in to follow this  

  • Similar Content

    • By RafaelScharf
      Olá, sou inciante em desenvolvimento e estou trabalhando em um sistema de ponto de venda.
       
      Quando faço a busca para vincular o cliente na venda ele da erro na requisição Ajax.
       
      Quando faço a busca retorna o seguinte erro no console:
      GET http://localhost/aroeira/distribuidora/emporium/customers/suggestions?term=R&limit=10&_=1569833733307 404 (Not Found) [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/. Veja o código da view/default/pos/add.php
      <?php if ($this->input->get('customer')) {?> if (!localStorage.getItem('positems')) { localStorage.setItem('poscustomer', <?=$this->input->get('customer');?>); } else if (!localStorage.getItem('poscustomer')) { localStorage.setItem('poscustomer', <?=$customer->id;?>); } <?php } else {?> if (!localStorage.getItem('poscustomer')) { localStorage.setItem('poscustomer', <?=$customer->id;?>); } <?php } ?> if (!localStorage.getItem('postax2')) { localStorage.setItem('postax2', <?=$Settings->default_tax_rate2;?>); } $('.select').select2({minimumResultsForSearch: 7}); var cutomers = [{ id: <?=$customer->id;?>, text: '<?=$customer->company == '-' ? $customer->name : $customer->company;?>' }]; $('#poscustomer').val(localStorage.getItem('poscustomer')).select2({ minimumInputLength: 1, data: [], initSelection: function (element, callback) { $.ajax({ type: "get", async: false, url: "<?=site_url('customers/getCustomer')?>/" + $(element).val(), dataType: "json", success: function (data) { callback(data[0]); } }); }, ajax: { url: site.base_url + "customers/suggestions", dataType: 'json', quietMillis: 15, data: function (term, page) { return { term: term, limit: 10 }; }, results: function (data, page) { if (data.results != null) { return {results: data.results}; } else { return {results: [{id: '', text: 'No Match Found'}]}; } } } }); if (KB) { display_keyboards(); var result = false, sct = ''; $('#poscustomer').on('select2-opening', function () { sct = ''; $('.select2-input').addClass('kb-text'); display_keyboards(); $('.select2-input').bind('change.keyboard', function (e, keyboard, el) { if (el && el.value != '' && el.value.length > 0 && sct != el.value) { sct = el.value; } if(!el && sct.length > 0) { $('.select2-input').addClass('select2-active'); $.ajax({ type: "get", async: false, url: "<?=site_url('customers/suggestions')?>/" + sct, dataType: "json", success: function (res) { if (res.results != null) { $('#poscustomer').select2({data: res}).select2('open'); $('.select2-input').removeClass('select2-active'); } else { bootbox.alert('no_match_found'); $('#poscustomer').select2('close'); $('#test').click(); } } }); } }); }); $('#poscustomer').on('select2-close', function () { $('.select2-input').removeClass('kb-text'); $('#test').click(); $('select, .select').select2('destroy'); $('select, .select').select2({minimumResultsForSearch: 7}); }); $(document).bind('click', '#test', function () { var kb = $('#test').keyboard().getkeyboard(); kb.close(); //kb.destroy(); $('#add-item').focus(); }); } Veja o código do controller Costumer/suggestion
      function suggestions($term = NULL, $limit = NULL) { // $this->sma->checkPermissions('index'); if ($this->input->get('term')) { $term = $this->input->get('term', TRUE); } if (strlen($term) < 1) { return FALSE; } $limit = $this->input->get('limit', TRUE); $rows['results'] = $this->companies_model->getCustomerSuggestions($term, $limit); return $this->sma->send_json($rows); } veja agora a model company_model.php
      public function getCustomerSuggestions($term, $limit = 10) { $this->db->select("id, (CASE WHEN company = '-' THEN name ELSE CONCAT(company, ' (', name, ')') END) as text", FALSE); $this->db->where(" (id LIKE '%" . $term . "%' OR name LIKE '%" . $term . "%' OR company LIKE '%" . $term . "%' OR email LIKE '%" . $term . "%' OR phone LIKE '%" . $term . "%') "); $q = $this->db->get_where('companies', array('group_name' => 'customer'), $limit); if ($q->num_rows() > 0) { foreach (($q->result()) as $row) { $data[] = $row; } return $data; } } Ja tentei alterar o async: false para async: true e não funcionou. 
    • By Felipe Torres
      Galera,
      Estou tendo um warning no Codeigniter e não estou sabendo resolver. 
      Já atualizei o Codeigniter para a versão 3.1.10
      Procurei espaços em branco nas tags
       
      O Erro é esse:
      A PHP Error was encountered Severity: Warning Message: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? Filename: libraries/Grocery_CRUD.php Line Number: 2836 Backtrace: File: /opt/lampp/htdocs/tiana/application/controllers/Admin.php Line: 6 Function: __construct File: /opt/lampp/htdocs/tiana/index.php Line: 315 Function: require_once Meu Controller Admin.php
       
      <?php class Admin extends CI_Controller { public function __construct() { parent::__construct(); if($this->session->userdata("logado")) { if(!$this->uri->segment(2) == "sair") { redirect('admin/login'); } } } public function entrar(){ $alerta = null; if($this->input->post('entrar') === 'entrar') { if($this->input->post('captcha')) redirect('admin/login'); //Define as regras de validação $this->form_validation->set_rules('email','EMAIL', 'required|valid_email'); $this->form_validation->set_rules('senha','SENHA', 'required|min_length[6]|max_length[20]'); //Executa as regras de validação if ($this->form_validation->run() === TRUE) { //Carrega o model usuarios_model $this->load->model('usuarios_model'); //Armazena os dados do formulário em variáveis $email = $this->input->post('email'); $senha = $this->input->post('senha'); //Executando o método check_login do model $login_existe = $this->usuarios_model->check_login($email, $senha); //verifica se os dados digitados estão corretos if($login_existe){ //login atorizado $usuario = $login_existe; // Configurar os dados da sessão $session = array( 'email' => $usuario["email"], 'created' => $usuario["created"], 'logado' => TRUE ); // inicia a sessão $this->session->set_userdata($session); redirect('painel'); //iniciar a sessão e redirecionar para algum lugar restrito }else{ $alerta = array( "class" => "danger", "mensagem" => "Atenção! Login inválido, senha ou email incorrentos." ); } }else{ $alerta = array( "class" => "danger", "mensagem" => "Atenção! Falha na validação do formulário". validation_errors() ); } } $dados = array( "alerta" => $alerta ); $this->load->view('admin/login', $dados); } public function sair(){ $this->session->sess_destroy(); redirect ('admin/entrar'); } }  
    • By Simioni
      Olá, estou com um dificuldade, estou bolando um calendário de reserva, eu tenho as datas fixas, por exemplo, 07/09/2019, 14/09/2019, 15/09/2019 e cada dia tem 30 vagas disponíveis, o que estou apanhado é em mostrar somente um vez no calendário.
      Eu tenho as tabelas:
      beneficios_calendario

       
      e a beneficios_reserva:

       
      Meu model:
       
      public function vagas_disponiveis() { $this->db->select('*'); $this->db->from('beneficios_calendario'); $query = $this->db->get(); $dias = $query->result_array(); $this->db->select('count(*) as cnt, data_reserva'); $this->db->from('beneficios_reserva'); $this->db->group_by('data_reserva'); $query = $this->db->get(); $reservas = $query->result_array(); $data = array(); foreach ($dias as $dia) { foreach ($reservas as $reserva) { if ($reserva['data_reserva'] == $dia['start']) { $vagas = $dia['title'] - $reserva['cnt']; $data[] = array( 'title' => $vagas, 'start' => $dia['start'], 'color' => $dia['color'], ); } } $data[] = array( 'title' => $dia['title'], 'start' => $dia['start'], 'color' => $dia['color'], ); } echo json_encode($data); }
       
       
      Obrigado.
    • By Pellegrini3834
      Olá amigos do fórum estou com um problema e não consigo resolver.
      Tenho um menu que chama um controle chamado  ctlPessoa  na classe controller e dentro um método index() e outro metodo cadastrarPessoa().
      O problema e quando eu chamo esse controle ele emitiu um erro:
       
       
      A PHP Error was encountered
       
       
      Severity: Notice
       
       
      Message: Undefined variable: confirma
       
       
      Filename: visaoPessoa/cadastrar_pessoa.php
       
       
      Line Number: 2
       
       
      Backtrace:
       
       
      File: C:\wamp64\www\CodeIgniter_Crud_01_07_2019\application\views\visaoPessoa\cadastrar_pessoa.php
      Line: 2
      Function: _error_handler
       
       
      File: C:\wamp64\www\CodeIgniter_Crud_01_07_2019\application\controllers\ctlPessoa.php
      Line: 18
      Function: view
       
       
      File: C:\wamp64\www\CodeIgniter_Crud_01_07_2019\index.php
      Line: 315
      Function: require_once
       
      Explicando o erro:
      E pq o método cadastro possui uma variavel array que é chamada  pela view e serve para logo após a ação do método exibir a seguinte mensagem - " PESSOA CADASTRADA COM SUCESSO":
                  $this->load->view('visaoPessoa/cadastrar_pessoa',$mensagem); <---- passando array de mensagem de confirmação que a pessoa foi cadastrada com sucesso
      Mas ele da erro pq chama o método index() no ctlPessoa que somente carrega as views ao invés de chamar ctlPessoa/cadastrarPessoa.
       
      public function index() { $this->load->view('includes/cabecalho'); $this->load->view('includes/conteudo'); $this->load->view('includes/rodape'); $this->load->view("menuPrincipal/menu_principal"); $this->load->view("visaoPessoa/cadastrar_pessoa"); } Como faço para realizar o carregamento da view e fazer o carregamento do metodo ctlPessoa/cadastrarPessoa.
       
       
       
       
       
       
    • By tatysouzac
      Minha view:
      <div>                            
                                          <form method="post" action="http://localhost/integradorcode/index.php/welcome/validar">
                                          EMAIL: <input type="text" name="email"  /> <br><br>
                                          SENHA:  <input type="password" name="senha"/> <br><br><br><br>
                                          <input class="myButton" type="submit" value="Entrar"/> <br><br>
                                          </form>
                                          <a href="Cadastro.php" class="myButton">Cadastrar</a><br><br>
                                          <a href="#" class="myButton">Esqueceu sua senha?</a>
               </div>
       
       
       
      Controller:
       
          public function validar(){
              //var_dump($_POST);
              $this->load->model("Cadastro_model");
              $result = $this->Cadastro_model->validar($_POST["email"],md5($_POST["senha"]));
              var_dump($result);
          }
       
       
      Model:
       
          function validar($email, $senha){
              return $this->db->query("SELECT * FROM `cadastro_clientes` WHERE email_cliente = '{$email}'  AND senha_cliente = '{$senha}' AND status = 1 LIMIT 1")->result_array();
          }
       
       
      Não da nenhuma mensagem de erro mas coloco senha e login certos do meu bd e o return não retorna nada array 0 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.