Gần đây tôi đã hỏi một câu hỏi tương tự về vấn đề này khoảng hai tuần trước, nhưng tôi đã không tìm cách giải quyết vấn đề của mình theo cách tôi cần.Tại sao truy vấn của tôi trả lại kết quả không chính xác?
Tôi có truy vấn đang chọn từ 2 bảng; vé và trả lời. Tôi đang chọn thông tin từ bảng vé, và tôi đang chọn thông tin từ bảng trả lời có id vé được lưu trữ trong đó. Mà bây giờ nói đến vấn đề của tôi.
Truy vấn của tôi chỉ hiển thị các vé có nhiều hơn 0 trả lời, nhưng tôi cần nó để hiển thị thông tin vé ngay cả khi nó không có bất kỳ câu trả lời nào.
Tôi muốn biết (nếu có thể) nếu có cách nào để khắc phục sự cố của tôi và nếu có cách làm đơn giản hơn tôi hiện có.
Hiện tại có một chút lộn xộn, nhưng đây là mã của tôi để truy vấn và hiển thị vé và trả lời.
if(isset($_GET['id']) && is_numeric($_GET['id'])) {
$id = trim($_GET['id']);
$i = "";
$ticket = $db->conn->query("
SELECT * FROM tickets
INNER JOIN replies ON tickets.id = '$id'") or die(mysqli_error($db->conn));
while($rows = $ticket->fetch_assoc()) {
$i++;
if($_SESSION['ticket_username'] == $rows['client']) {
if($i <= 1) {
$status = $rows['status'];
echo '
<h3>'.$rows['subject'].'</h3><hr>
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title"><small>Created by '.$rows['client'].', '.$timeAgo->inWords($rows['created_at']).'</small></h3>
</div>
<div class="panel-body">'.nl2br($rows['message']).'</div>
</div>
';
}
echo '
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title"><small>Reply from '.$rows['reply_username'].', '.$timeAgo->inWords($rows['reply_time']).'</small></h3>
</div>
<div class="panel-body">'.nl2br($rows['reply_message']).'</div>
</div>
';
} else {
header("Location: index");
}
}
} else {
header("Location: index");
}
Bạn có thể giải quyết đơn giản bằng cách chia các truy vấn. Đầu tiên lấy tất cả các vé. Vòng qua vé và tìm tất cả các trả lời cho mỗi vé. – Peter
Tôi đã làm một cái gì đó tương tự như trên một dự án trước đó, nhưng tôi muốn kết hợp nó thành một truy vấn lần này. – Jon