Visitar na Amazon

segunda-feira, 20 de maio de 2013

Como criar um sistema de curtir igual do Facebook em php, jquery e mysql

Enviado em 19:18 - por Diguinho - Marcadores : , , , , , , , , ,



Senhoras e senhores trago a vocês um sistema muito buscado para amadores de profissionais de programação trata de um sistema muito usado em redes sociais, porém o mais conhecido aquele botão "Curtir" e desfazer, usando PHP,MySql e Jquery

Facebook Like sistema com Jquery, MySQL e PHP.

Demonstração                            Baixar

Explicação do sistema

Database Design
Para construir o sistema de conversa de mensagem, você tem que criar três tabelas, como usuários , conversação e Conversation_Reply . Este seguinte imagem gerada usando a ferramenta Workbench Mysql.
Tabela de usuários
Tabela do usuário contém todos os dados cadastrais de usuários. 
CREATE TABLE ` usuários `( 
uid `int NOT NULL PRIMARY KEY AUTO_INCREMENT , 
nome `varchar ( 25 ) NOT NULL UNIQUE, 
senha `varchar ( 50 ) NOT NULL, 
email `varchar ( 100 ) NOT NULL 
);


Lembrete: As senhas vão ser criptografadas no formato MD5
veja na imagem abaixo.

Facebook Like sistema com Jquery, MySQL e PHP.

Facebook Like sistema com Jquery, MySQL e PHP.

Tabela mensagens
Esta tabela contém dados de mensagens de status do usuário. Aqui uid_fk   é a chave estrangeira para Referências users.uid
CREATE TABLE ` mensagens `( 
msg_id `int ( 11 ) NOT NULL PRIMARY KEY AUTO_INCREMENT , 
mensagem `varchar ( 200 ) NOT NULL, 
uid_fk `int ( 11 ) NOT NULL, 
like_count `int ( 11 ) Padrão NULL, 
criado `int (11) DEFAULT NULL, FOREIGN KEY (uid_fk) Referênciasusuários (UID) );


Facebook Like sistema com Jquery, MySQL e PHP.

Facebook Like sistema com Jquery, MySQL e PHP.

Mensagem como Tabela
Contém todas as mensagens do usuário dos dados curti "LIKE". Aqui uid_fk é FOREIGN KEY para Referências users.uid e msg_id_fk é FOREIGN KEY para Referências messages.msg_id
CREATE TABLE ` message_like `( 
like_id `int ( 11 ) NOT NULL PRIMARY KEY AUTO_INCREMENT , 
msg_id_fk `int ( 11 ), 
uid_fk `int ( 11 ) NOT NULL, 
criou `int ( 11 ) NOT NULL, FOREIGN KEY ( uid_fk) REFERÊNCIASusuários (UID), FOREIGN KEY (msg_id_fk) Referências mensagens msg_id () );


Facebook Like sistema com Jquery, MySQL e PHP.

Facebook Like sistema com Jquery, MySQL e PHP.

Código HTML
Simples código HTML.
<div class="stbody">
<div class="stimg"><img src="userprofile.jpg"/></div>
<div class="sttext">
<b>Webzoon.blogspot.com</b>: Status Message
<div class="sttime">48 seconds ago</div>

<div><a href="#" class="like" id="like103" title="Like" rel="Like">Like</a>
</div>

<div class='likeUsers' id="likes103"><span id="you103"><a href="#">You</a>,</span> <a href="#">webzoon</a>, <a href="#">Harsha</a> and 20 other friends like this.
</div>

</div>
</div>

PHP Codigo
Para mostrar o botão Like ou Unlike para a tabela  message_like baseada nas IDs das mensagens
<div>
<?php
$msg_id='103'; //Message id
$uid='1'; //Message user id. 
$q=mysql_query("SELECT like_id FROM message_like WHERE uid_fk='$uid' and msg_id_fk='$msg_id");
if(mysql_num_rows($q)==0)
{
echo '<a href="#" class="like'" id="like'.$msg_id.'" title="Unlike" rel="Unlike">Unlike</a>';
 }
else

echo '<a href="#" class="like" id="like'.$msg_id.'" title="Like" rel="Like">Like</a>';
} ?>
</div>

PHP Codigo
Este código mostrara na tela o botão likes e detalhes dos users e a tabela message_like baseada nas  IDs das mensagens. 
<?php
if($like_count>0)

$query=mysql_query("SELECT U.username,U.uid FROM message_like M, users U WHERE U.uid=M.uid_fk AND M.msg_id_fk='$msg_id' LIMIT 3");
?>
<div class='likeUsers' id="likes<?php echo $msg_id ?>">
<?php
$new_like_count=$like_count-3
while($row=mysql_fetch_array($query))
{
$like_uid=$row['uid']; 
$likeusername=$row['username']; 
if($like_uid==$uid)
{
echo '<span id="you'.$msg_id.'"><a href="'.$likeusername.'">You</a>,</span>';
}
else

echo '<a href="'.$likeusername.'">'.$likeusername.'</a>';
}  
}
echo 'and '.$new_like_count.' other friends like this'; 
?> 
</div>
<?php }
else { 
echo '<div class="likeUsers" id="elikes'.$msg_id.'"></div>';
?>

JavaScript
Contem codigo javascript. $(".like").click(function(){}- like é a classe para nome da ancora like/unlike . Use $(this).attr("id") chamando a id da ancora tag.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
$('.like').die('click').live("click",function() 
{
var ID = $(this).attr("id");
var sid=ID.split("like"); 
var New_ID=sid[1];
var REL = $(this).attr("rel");
var URL='message_like_ajax.php';
var dataString = 'msg_id=' + New_ID +'&rel='+ REL;
$.ajax({
type: "POST",
url: URL,
data: dataString,
cache: false,
success: function(html){

if(REL=='Like')
{
$("#youlike"+New_ID).slideDown('slow').prepend("<span id='you"+New_ID+"'><a href='#'>You</a> like this.</span>.");
$("#likes"+New_ID).prepend("<span id='you"+New_ID+"'><a href='#'>You</a>, </span>");
$('#'+ID).html('Unlike').attr('rel', 'Unlike').attr('title', 'Unlike');
}
else
{
$("#youlike"+New_ID).slideUp('slow');
$("#you"+New_ID).remove();
$('#'+ID).attr('rel', 'Like').attr('title', 'Like').html('Like');
}

}
});
</script>

message_like_ajax.php
Contém codigo PHP para update da data do Like ou Unlike . 
<?php
include 'db.php';
if(isSet($_POST['msg_id']) && isSet($_POST['rel']))
{
$msg_id=mysql_real_escape_string($_POST['msg_id']);
$rel=mysql_real_escape_string($_POST['rel']);
$uid=$session_uid; // User login session id
if($rel=='Like')
{
//---Like----
$q=mysql_query("SELECT like_id FROM message_like WHERE uid_fk='$uid' and msg_id_fk='$msg_id' ");
if(mysql_num_rows($q)==0)
{
$query=mysql_query("INSERT INTO message_like (msg_id_fk,uid_fk) VALUES('$msg_id','$uid')");
$q=mysql_query("UPDATE messages SET like_count=like_count+1 WHERE msg_id='$msg_id'") ;
$g=mysql_query("SELECT like_count FROM messages WHERE msg_id='$msg_id'");
$d=mysql_fetch_array($g);
echo $d['like_count'];
}
}
else
{
//---Unlike----
$q=mysql_query("SELECT like_id FROM message_like WHERE uid_fk='$uid' and msg_id_fk='$msg_id' ");
if(mysql_num_rows($q)>0)
{
$query=mysql_query("DELETE FROM message_like WHERE msg_id_fk='$msg_id' and uid_fk='$uid'");
$q=mysql_query("UPDATE messages SET like_count=like_count-1 WHERE msg_id='$msg_id'");
$g=mysql_query("SELECT like_count FROM messages WHERE msg_id='$msg_id'");
$d=mysql_fetch_array($g);
echo $d['like_count'];
}
}
}
?>

 Código PHP Final
Aqui o sistema completo Like/Unlike. 
<?php 
$query=mysql_query("SELECT U.username, U.uid, M.msg_id, M.message FROM users U, messages M WHERE U.uid=M.uid_fk and U.uid='$sessions_uid'");
while($row=mysql_fetch_array($query))
{
$msg_id=$row['msg_id'];
$message=$row['message'];
$username=$row['username'];
$uid=$row['uid'];
?>

<div class="stbody">
<div class="stimg"><img src="userprofile.jpg"/></div>
<div class="sttext">
<b>Srinivas Tamada</b>: Status Message
<div class="sttime">48 seconds ago</div>
<div>
<?php
$q=mysql_query("SELECT like_id FROM message_like WHERE uid_fk='$uid' and msg_id_fk='$msg_id' ");
if(mysql_num_rows($q)==0)
{
echo '<a href="#" class="like'" id="like.$msg_id.'" title="Unlike" rel="Unlike">Unlike</a>';
 } else { 
echo '<a href="#" class="like" id="like.$msg_id.'" title="Like" rel="Like">Like</a>';
} ?>
</div>

<?php if($like_count>0) { 
$query=mysql_query("SELECT U.username,U.uid FROM message_like M, users U WHERE U.uid=M.uid_fk AND M.msg_id_fk='$msg_id' LIMIT 3");
?>
<div class='likeUsers' id="likes<?php echo $msg_id ?>">
<?php
$new_like_count=$like_count-3; 
while($row=mysql_fetch_array($query))
{
$like_uid=$row['uid']; 
$likeusername=$row['username']; 
if($like_uid==$uid)
{
echo '<span id="you'.$msg_id.'"><a href="'.$likeusername.'">You</a></span>';
}
else

echo '<a href="'.$likeusername.'">'.$likeusername.'</a>';
}  
}
echo 'and '.$new_like_count.' other friends like this';
?> 
</div>
<?php }
else { 
echo '<div class="likeUsers" id="elikes'.$msg_id.'"></div>';
} ?>
</div>
</div>
<php } ?>

db.php
Arquivo de configuração do banco de dados.
<?php
$mysql_hostname = "hostname";
$mysql_user = "username";
$mysql_password = "password";
$mysql_database = "database";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) 
or die("Opps some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Opps têm alguma coisa errada.");
?>
Dica: Substitua "Like" e "Unlike" para o nome que achar melhor.
Fonte: 9lessons
Boa Sorte! e curta Webzoon no Facebook



Sobre o autor
Gabriel Medina é o autor deste blog, atualmente estuda eng. elétrica, ama jogar damas, assistir desenhos, filmes e séries, além de praticar esportes saudaveis.
Inscrever-se neste Blog via Email :

0 Comentários:

Observação: somente um membro deste blog pode postar um comentário.

© 2017 Webzoon. Designed by Bloggertheme9
Powered by Blogger.
back to top