Ir para conteúdo
Cesar Masserati Procopio

Query para retornar Lista de Conversas c/ ultima Msg

Recommended Posts

Boa Tarde Pessoal,

 

Estou enviando duas Imagens para ajudar a ilustrar o que estou tentando fazer.

 

Seguinte estou batendo a minha cabeça com isso e preciso de uma luz para resolver, por favor. 


Estou recriando o WhatsApp Web para fins de aprendizagem, estou tentando fazer uma QUERY que me retorne a lista das pessoas que estou conversando, e também a Última Mensagem da conversa que tive com a pessoa.

EXEMPLO: 
Retornar a lista das Pessoas que conversam com o Cesar

Neste caso teria que me retornar a lista abaixo:

idAmigo NomeAmigo UltimaMsg     DataMsg
8779 Adelita Pereira Machado Couto Msg CINCO - Cesar enviou para Adelita  05/07/2018 17:22
7669 Hellen Sabrina de Brito Msg TRES - Hellen enviou para Cesar  05/07/2018 12:31
63 Sandro Batista Dos Santos Msg UM - Cesar enviou para Sandro 05/07/2018 17:22
1545 Gino Cezar dos Santos Msg UM - Gino enviou para Cesar 05/07/2018 17:20
relacionamento.jpg.36fd73a6d25d06e90fd01ae41f022adf.jpgResultado.thumb.jpg.ad082aef6f300d570bef8bc5b694343d.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por empirerock
      Boa tarde. Preciso de ajuda. Não consigo resolver esta situação.
      Neste código, o retorno está se baseando somente no primeiro item da lista.
      O que preciso é que se em alguma linha, o Volume_Restante for maior que zero e menor que Volume_Total, o status seja 'P'.
      E se todas as linhas de Volume_Restante forem iguais a zero, então status = 'T'.
      E se todas as linhas de Volume_Restante forem iguais a Volume_Total, então status = 'N'.
      Só que nesse caso, ele viu a primeira linha que volume_restante era zero, e jogou no status 'T', ignorando a outra linha que tem valor 1.
      Abaixo print da tela da lista de produtos para entrega.
       
      Script
      include "topop.php"; include "mysql.php"; $ped_venda_id = 13; $sql = mysql_query ("SELECT pvi.ped_venda_id, IF(pvi.volume_restante = 0, 'T', IF(pvi.volume_total = pvi.volume_restante, 'N', 'P')) as 'status' FROM ped_vendas_item as pvi WHERE ped_venda_id = '$ped_venda_id' ") or die(mysql_error()); while($r = mysql_fetch_array($sql)){ $status = $r['status']; } echo $status;  

    • Por artur0407
      Boa noite;
       
      Estou realizando testes com a biblioteca PDO para banco de dados com PHP;
      Logo de inicio estou realizando minha conexão com o banco utilizando um código simples nativo da biblioteca.
      No entanto, mesmo errando o código propositalmente e tendo setado todos os possíveis erros e tratando com o bloco "try catch" o php não me retorna erro de nenhuma forma.
       
      Abaixo ambos os códigos;
       
      Primeiro sem erros:
      <?php ini_set('display_errors',true); ini_set('display_startup_erros',1); error_reporting(E_ALL); $username = 'root'; $password = ''; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_CASE => PDO::CASE_NATURAL, PDO::ATTR_ORACLE_NULLS => PDO::NULL_EMPTY_STRING, PDO::ATTR_PERSISTENT => true ]; try { $conn = new PDO('mysql:host=localhost; dbname=test', $username, $password, $options); $conn->exec("set names utf8"); } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } ?> Posteriormente com erro proposital (na string de conexão da classe PDO)
      <?php ini_set('display_errors',true); ini_set('display_startup_erros',1); error_reporting(E_ALL); $username = 'root'; $password = ''; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_CASE => PDO::CASE_NATURAL, PDO::ATTR_ORACLE_NULLS => PDO::NULL_EMPTY_STRING, PDO::ATTR_PERSISTENT => true ]; try { $conn = new PDO('mysql:hst=localhost; dbname=test', $username, $password, $options); $conn->exec("set names utf8"); } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } ?> Observem que no construtor do pdo, no lugar de host escrevi 'hst' e o php não retorna erros!
       
      Como sou novo aqui, me desculpem algum erro de formatação na mensagem, obrigado!
    • Por hustian
      Alguém poderia me dizer se estão corretos os relacionamentos? Como eu passo isso pro sql server?


    • Por Eliabe Andrade
      Boa noite pessoal, estou iniciando em programação web, e já estou desenvolvendo um projeto pequeno para a empresa que trabalho e a minha dificuldade é a seguinte, possuo um campo SELECT/OPTION, onde o usuário seleciona o produto e  caso ele queira adicionar mais produtos é só clicar no botão adicionar, até tudo ok, a minha dificuldade esta em fazer com que os valores dos produtos se somem em um INPUT, até consegui exibir o valor mas quando adiciono mais um campo e seleciono o produto, ao invés dele somar ele substitui o valor do produto anterior, segue abaixo meu teste que até agora por zilhões de tentativas não obtive exito e agora peço ajuda aos senhores que tem mais experiência.
       
      <?php include_once("../conexao/conexao.php"); $conexao = conexao::getInstance(); $sql = "SELECT * FROM produtos"; $stm = $conexao->prepare($sql); $stm->execute(); $produtos = $stm->fetchAll(PDO::FETCH_OBJ); ?> <!doctype html> <html lang="pt-br"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Cadastro de Cliente</title> <link rel="stylesheet" type="text/css" href="../administrativo/css/bootstrap.min.css" rel="stylesheet" media="screen"> <link href="../administrativo/css/bootstrap-datetimepicker.min.css" rel="stylesheet" media="screen"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="../administrativo/js/jquery.mask.js"></script> <style type="text/css"> body { margin: 0; padding: 0;} .box { margin: 0 auto; width: 800px;} #fieldsHidden{ display:none;} #alvo{padding:10px 5px;} .margens{ margin-left: 2px; margin-right: 2px; } #p{ margin-left: 2px; margin-right: 2px; } </style> <script type="text/javascript"> $(document).ready(function(){ $('body').on('change','.prod_tipo' , function() { var id = $(this).data('id'); $('#' + id).val($(this).find(':selected').data('valor')); }); $('body').on('change','.prod_tipo' , function() { function convertMoeda(n, c, d, t) { c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0; return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); } var id = $(this).data('id'); var soma = 0; $(this).find(':selected').each(function(id, element){ soma = soma + parseFloat($(element).data('somar_valor' + id)) }) $('#valor_total').val(convertMoeda(soma)); }); var contar = 1; $("#add").on('click', function(){ var select = '<div class="form-group"><div class="form-inline row margens">'; select += '<div class="form-group col">'; select += '<label for="vnd_tipo_vendedor" class="label label-small" style="color: black;">TIPO PRODUTO:</label><br><select data-id="' + contar + '" data-conta_campos="' + contar + '" class="form-control custom-select prod_tipo" name="prod_tipo[]" id="prod_tipo" data-error="Por favor, selecione um produto." required><option value="" >PRODUTO: </option><?php foreach($produtos as $produto): ?><option value="<?= $produto->produto ?>" name="id" data-valor="<?= number_format($produto->valor, 2, ',','.') ?>" data-somar_valor0="<?= $produto->valor ?>" ><?= $produto->produto ?></option><?php endforeach;?></select>'; select += '<div class="help-block with-errors"></div></div>'; select += '&nbsp;<div class="form-group col">'; select +='<label for="vnd_tipo_vendedor" class="label label-small" style="color: black;">VALOR:</label><br><div class="input-group"><span class="input-group-addon">R$</span><input id="' + contar + '" class="form-control dinheiro" id="prod_valor" name="prod_valor[]" type="text" value="" size="6" required></div>'; select +='<div class="help-block with-errors"></div></div>'; select +='</div>&nbsp;<button type="button" class="btn btn-danger btn-sm del" id="add"><span class="glyphicon glyphicon-minus"></span>&nbsp;Remover</button></div>'; contar++; $("#produtos").append(select); return false; }); $(document).on('click', '.del', function(){ $(this).parent().remove(); }); }); </script> <script type="text/javascript"> $(document).ready(function(){ //$('#cod_cli').mask('999999999'); //$('#rg').mask('99.999.999', {reverse: true}); //$('.cpf').mask('000.000.000-00', {reverse: true}); //$('#cep').mask('99.999-999'); //$('#telefone').mask('(99) 9999-9999'); //$('#celular').mask('(99) 99999-9999'); //$('#exame').mask('000.000.000.000.000,00', { // reverse: true //}); //$('#armacao').mask('000.000.000.000.000,00', { // reverse: true //}); //$('#prod_valor').mask('000.000.000.000.000,00', { // reverse: true //}); $('.dinheiro').mask('000.000.000.000.000,00', { reverse : true }); }); </script> </head> <body> <div class='container-fluid'> <button type="button" class="btn btn-primary btn-sm" id="add"><span class="glyphicon glyphicon-plus"></span>&nbsp;Adicionar Produto</button><br><br> <form class="form form-inline" action="" method="post"> <fieldset> <div class="form-group"> <div class="form-inline row margens"> <div class="form-group col"> <label for="prod_tipo" class="label label-small" style="color: black;">TIPO DE PRODUTO:</label><br> <select data-id="0" data-conta_campos="0" class="form-control custom-select prod_tipo" name="prod_tipo[]" id="prod_tipo" data-error="Por favor, selecione um produto." required > <option value="" >PRODUTO: </option> <?php foreach($produtos as $produto): ?> <option value="<?= $produto->produto ?>" name="id" data-valor="<?= number_format($produto->valor, 2, ',','.') ?>" data-somar_valor0="<?= $produto->valor ?>" ><?= $produto->produto ?></option> <?php endforeach;?> </select> <div class="help-block with-errors"></div> </div> <div class="form-group col"> <label for="prod_valor" class="label label-small" style="color: black;">VALOR:</label><br> <div class="input-group"> <span class="input-group-addon">R$</span> <input class="form-control dinheiro" id="0" name="prod_valor[]" type="text" value="" size="6" required> </div> <div class="help-block with-errors"></div> </div> </div> </div><br> <div class="form-group"> <div class="form-inline row margens" id="produtos"> <!-- INPUT'S DINAMICOS --> </div> </div><br> <div class="form-group"> <div class="form-inline row margens"> <div class="form-group col"> <label for="prod_valor" class="label label-small" style="color: black;">VALOR TOTAL:</label><br> <div class="input-group"> <span class="input-group-addon">R$</span> <input type="text" name="valor_total" id="valor_total" class='form-control dinheiro'/> </div> <div class="help-block with-errors"></div> </div> </div> </div> </fieldset> </form> </div> </body> <script src="../administrativo/js/bootstrap.min.js"></script> </html>  
    • Por soaresmetal
      Preciso criar um relatório usando T-SQL onde os resultados das colunas sejam preenchidos automaticamente.
       
      Exemplo:
      Cód | Cliente | Venda jan/18 | Venda fev/18 | Venda mar/18 | ...
       
      As linhas representam os clientes e suas vendas mensais as colunas vão sendo criadas a medida que o tempo for passando e novos dados forem surgindo.
       
      Seria interessante possuir também um limitador de período.
      Por exemplo: criar o relatório apenas até agosto/19.
       
      Suponha as tabelas:
      clientes - contendo dados cadastrais dos clientes
      pedidos - contendo informações dos pedidos, datas e totais gerais
      itens - itens do pedido e confirmação de faturamento ou não do item
×

Informação importante

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