카카오톡 처럼 채팅방 만들려고 하는데
관련링크
본문
위 사진 2번째 화면에 채팅방 입장 버튼있는곳이 카톡처럼 최신 대화내용 한줄 나오고 최신 대화순서대로 정렬되는 것인데 이거 mysql 뽑기가 어렵네요.
혹시 조언 주시면 감사하겠습니다.
답변시 도움이 될 것 같아 아직 미완성인 저의 mysql 코드 공개합니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>로그인</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="row">
<div class="col-lg-12 text-center">
<img src="mainimage.jpg" style="width: 100%; max-width: 450px;" ><br><br>
</div>
</div>
<div class="container">
<div class="row" style="padding-top: 10px;">
<div class="col-lg-3"></div>
<?php if (!isset($_SESSION['ss_mb_id'])) { ?>
<div class="col-lg-6">
<h1>로그인</h1>
<form action="login_check.php" method="post">
<table border="1">
<tr>
<th>아이디</th>
<td><input type="text" name="mb_id" required></td>
</tr>
<tr>
<th>패스워드</th>
<td><input type="password" name="mb_password" required></td>
</tr>
<tr>
<td colspan="2" class="td_center">
<input type="submit" value='로그인'>
<a href="register.php"> 회원가입 </a>
</td>
</tr>
</table>
</form>
<?php } else { ?>
<div class="col-lg-12 yellowbackgb">
<div class="pricing-header text-center">
<p class="lead" style="font-weight: bold"> 채팅 리스트 </p>
</div>
<table style="width:100%" border="0">
<thead>
<tr>
<th style="width:10%"></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<?php
$mb_id = $_SESSION['ss_mb_id'];
$receiver = isset($_GET['receiver']) ? $_GET['receiver'] : '';
$sender = isset($_GET['sender']) ? $_GET['sender'] : '';
$list = array();
$chatlist = array();
//$sql = "SELECT me_recv_mb_id, COUNT(me_recv_mb_id), me_send_mb_id, COUNT(me_send_mb_id) FROM memo GROUP BY me_recv_mb_id, me_send_mb_id HAVING COUNT(me_recv_mb_id) > 1 and COUNT(me_send_mb_id) > 1";
$sql = "SELECT * FROM memo WHERE (me_send_mb_id = '$mb_id') or (me_recv_mb_id = '$mb_id') GROUP BY me_send_mb_id ORDER BY me_send_datetime DESC";
$result = mysqli_query($conn, $sql);
for ($i=0; $row=mysqli_fetch_assoc($result); $i++) {
$list[$i] = $row;
//print_r($list[$i]); echo '<br><br><br><br><br>';
$chatone = $list[$i]['me_send_mb_id'];
$chat_href = './chat_room.php?receiver='.ucfirst($chatone).'&sender='.ucfirst($mb_id).'#chatbotoom';
$sqll = "SELECT * FROM memo WHERE (me_send_mb_id = '$chatone' AND me_recv_mb_id = '$mb_id') or (me_send_mb_id = '$mb_id' AND me_recv_mb_id = '$chatone') ORDER BY me_id DESC";
$chatresult = mysqli_query($conn, $sqll);
for ($k=0; $k<1; $k++) {
$roww=mysqli_fetch_assoc($chatresult);
$chatlist[$k] = $roww;
//echo 'chatlist------------------------<br>';
//print_r($chatlist[$k]); echo '<br><br><br><br><br>';
?>
<tr>
<th style="vertical-align: top">
<?php if (ucfirst($chatlist[$k]['me_send_mb_id'])!=ucfirst($mb_id)) {
echo ucfirst($chatlist[$k]['me_send_mb_id']);
} else {
echo ucfirst($chatlist[$k]['me_recv_mb_id']);
} ?>
</th>
<td class="chat" style="text-align: left;">
<span><?php echo $chatlist[$k]['me_memo'];?></span><br>
<small><?php echo $chatlist[$k]['me_send_datetime'] ?></small>
</td>
<td style="text-align: right;">
<a href="<?php echo $chat_href; ?>">
<button> 채팅방 입장 </button>
</a>
</td>
</tr>
<tr>
<td colspan="3">
<div style="background-color: gray; height: 1px;">
</div>
</td>
</tr>
<?php
}
}
mysqli_close($conn);
?>
</tbody>
</table>
<?php } ?>
</div>
<div class="col-lg-3"></div>
</div>
</div>
</body>
</html>
답변 2
memo 테이블을 기준으로
group by 채팅방
order by wr_datetime desc
이렇게 하면 마지막 대화 1개씩 가져오지 않을까요?
리스트 가져오실때
order by 채팅시간컬럼 desc
이렇게 한번 더 뿌려주면 되지 않나요?