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
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.
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
);
` 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.
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) );
` 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) );
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 () );
` 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 () );
Código HTML
Simples código HTML.
PHP Codigo
Para mostrar o botão Like ou Unlike para a tabela message_like baseada nas IDs das mensagens
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>
<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 ?>">
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>';
} ?>
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
<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'];
}
}
}
?>
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>
<?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 } ?>
$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
$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
0 Comentários:
Observação: somente um membro deste blog pode postar um comentário.