Jump to content
  • 0
Jack Oliveira

Contador de Click ao fazer o compartilhamento nas rede social

Question

Boa noite @Omar~  

 

Preciso de um auxilio sua se assim for possível

 

Preciso criar um contador de compartilhamento nas rede social

 

de quantas vezes foi feito o compartilhamento

 

Tenho as seguinte tabela

cliente

id

nome

email

senha

nivel

permissao

status

 

Tabela

catalogo

id

titulo

id_user

etc.....

 

Tabela

listagem

id

id_user

id_categoria

id_destaque

etc.....

 

 

Sei que terei que criar uma tabela para o compartilhamento

 

minha questão aqui seria como poderei fazer esta contagem quando for clicado nos link quando fazem o shared?

 

Exemplo de alguns links:

<p><a class="label label-primary" href="http://www.facebook.com/sharer.php?u=<?php echo ConfigPainel('site_url'); ?>catalogo/<?php echo $dados['slug']; ?>/" target="_blank"><i class="fa fa-facebook" style="color:#fff;"></i><font color="#fff"> Shared Facebook</font></a>
&nbsp;
&nbsp;
&nbsp;
 <a  class="label label-success" href="https://api.whatsapp.com/send?text=*<?php echo trim(ucwords(mb_strtolower($dados['titulo'], 'UTF-8'))); ?>* <?php echo ConfigPainel('site_url'); ?>catalogo/<?php echo $dados['slug']; ?>/" target="_blank"><i class="fa fa-whatsapp" style="color:#fff;"></i><font color="#fff"> Shared WhatsApp</font></a></p>
	

Uso um código de contagem de visitas, porém seja simples

mais ele faz a contagem conforme atualiza a pagina

 

porém já para o que preciso não daria de usa-lo

 segue o código

 


//Usando o MYSQLI direto para contagem
$Query = "Select * FROM catalogo WHERE id = '{$Catalogo['id']}'";
$exe = mysqli_query(DBConnect(), $Query);

$resultado = (mysqli_fetch_array($exe));
$visitas = $resultado['visitas'];


$altera = "UPDATE catalogo SET visitas = visitas+1 WHERE id = '{$Catalogo['id']}'";
$exe = mysqli_query(DBConnect(), $altera);


$exe = mysqli_query(DBConnect(), $Query);
$total = (mysqli_fetch_array($exe));
$visitas = $total['visitas'];

// Dinifir ECHO pra teste --> echo "Visitas: $visitas";
	

 

Se for possível ele só fazer a contagem se realmente o link ter sido publicado na rede social

 

se não apenas contar quando for feito o click já ajudaria....

 

 

Sobre o contador de visita logo acima

se ter como ele contar quando for aberto a página se a pessoa ficar atualizado ele não contar só quando for aberto ou seja seria o mesmo feito do shared, só quando clicar no link para abrir a pagina

 

Espero que tenho sindo bem objetivo na minha pergunta kkk

 

Desde já fico grato pela ajuda que der...

 

 

 

       

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Eu nunca fiz isso, mas de uma coisa é certa.

Se você que somente a contagem se foi publicado o compartilhamento como no facebook por exemplo, você teria que obter algum retorno da plataforma, e de fato não sei se o facebook fornece esse tipo de serviço.

 

Então aqui eu vou supor que clicou em compartilhar já registro que foi compartilhado.

Podemos usar a tabela catalogo para verificar se o usuário já fez esse compartilhamento, desde que adicionemos mais uma coluna para isso, e é até prático pois podemos até saber o que cada usuário compartilhou.

 

A ideia que pensei é executar um ajax em um arquivo, esse arquivo verifica se o usuário já compartilhou, caso não ele registra que foi compartilhado, então acionamos um script que irá abrir uma nova aba e redirecionar para.

Obs.: Usei meu script para executar ajax: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest

 

<a
    data-site="<?= ConfigPainel('site_url') ?>"
    data-slug="<?= $dados['slug'] ?>"
    class="compartilhar"
    >
    Shared Facebook
</a>

<div id="compartilhamento"></div> <!-- Usando esse elemento para gerenciar conteúdo -->

<script>
    document.querySelectorAll('.compartilhar').forEach(definirEvento);

    function definirEvento(e) {
        e.addEventListener('click', compartilharLink, false);
    }

    function compartilharLink(e) {
        var link = e.target;
        compartilharLink.prototype = new AjaxRequest();
        compartilharLink.prototype.open('compartilhamento', 'arquivo.php?site=' + link.dataset.site + '&slug=' + link.dataset.slug);
    }
</script>

Simples, temos o link de compartilhamento, mas quando clicado aciona a função que obtem os dados de compartilhamento dos atributos "data", assim sendo carregando um arquivo e enviado esses valores por GET.

 

Então no arquivos que carrega:

<?php
$usuario = "?????";
$query = "SELECT item, id_user FROM catalogo WHERE item='{$_GET['slug']}' AND id_user='{$usuario}'";

// <<<< execute então a query

if (!$resultado_do_banco) {
    /* Não tem o registro do usuário junto ao registro de compartilhamento
     * Assim sendo aqui registramos que o compartilhamento disso
     * E fazemos o updade conforme você está fazendo
     */
    ?>
    <script>
        window.open('http://www.facebook.com/sharer.php?u=<?= $_GET['site'] ?>catalogo/<?= $_GET['slug']; ?>', '_blank');
    </script>
    <?php
}

Na suposta nova coluna "item" armazeno o valor slug, então comparando o id do usuário mais isso podemos saber se ele já compartilhou determinada coisa.

Share this post


Link to post
Share on other sites
  • 0

Você precisa criar um aplicativo facebook (nesse você tem controle), já para o whatsapp fica mais complicado, pois segundo a empresa, eles usam o esquema P2P um envia a mensagem pro outro e ninguém fica no meio, sem possibilidade de contagem (fora que a API só saiu pra grandes empresas). O bom é você fazer a contagem de dentro do seu site.

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

×

Important Information

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