<?php session_start(); include 'db.php'; $id = $_GET['id'] ?? 0; // Fetch company details $stmt = $pdo->prepare(" SELECT c.*, cat.name AS category_name FROM companies c LEFT JOIN categories cat ON c.category_id = cat.id WHERE c.id = ? "); $stmt->execute([$id]); $company = $stmt->fetch(); if (!$company) { die("Company not found. <a href='index.php'>Back to home</a>"); } // Get total reviews + average rating $stmt = $pdo->prepare("SELECT COUNT(*) AS total_reviews, AVG(rating) AS avg_rating FROM reviews WHERE company_id = ?"); $stmt->execute([$id]); $reviewStats = $stmt->fetch(); // Get top-rated review $stmt = $pdo->prepare(" SELECT r.*, u.username FROM reviews r JOIN users u ON r.user_id = u.id WHERE company_id = ? ORDER BY rating DESC, created_at DESC LIMIT 1 "); $stmt->execute([$id]); $topReview = $stmt->fetch(); // Latest reviews $latestReviews = $pdo->query(" SELECT r.comment, r.rating, u.username, c.name AS company_name FROM reviews r JOIN users u ON r.user_id = u.id JOIN companies c ON r.company_id = c.id ORDER BY r.id DESC LIMIT 5 ")->fetchAll(); // Top rated companies $topCompanies = $pdo->query(" SELECT c.id, c.name, c.image, ROUND(AVG(r.rating),1) AS avg_rating FROM companies c JOIN reviews r ON c.id = r.company_id GROUP BY c.id HAVING COUNT(r.id) >= 1 ORDER BY avg_rating DESC LIMIT 5 ")->fetchAll(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><?= htmlspecialchars($company['name']) ?> - Review Stream</title> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <!-- Sans-serif fonts --> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Open+Sans&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Raleway&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Roboto+Slab&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Noto+Serif&display=swap" rel="stylesheet"> <!-- Favicon --> <link rel="icon" href="/favicon.png" type="image/png" /> <style> body { margin: 0; padding: 0; /* removed huge padding */ font-family: Arial, sans-serif; background: #f5f5f5; padding-bottom: 200px !important; } .container {max-width: 1200px; margin: auto; padding: 20px; } .content-layout { display: flex; gap: 20px; flex-wrap: wrap; } .main-content{ flex: 3; min-width: 250px; background: #fff; padding: 20px; border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); } .main-content p{ font-family: 'Poppins', sans-serif; } .sidebar { flex: 1; min-width: 200px; display: flex; flex-direction: column; gap: 15px; } .sidebar-card { background: #fff; padding: 12px; border-radius: 8px; box-shadow: 0 1px 4px rgba(0,0,0,0.08); } .star-box { display: inline-block; width: 22px; height: 22px; margin-right: 2px; background-color: #d3d3d3; color: white; text-align: center; line-height: 22px; font-size: 14px; border-radius: 3px; } .star-box.filled { background-color: #00b67a; } .about-company { background: #fafafa; margin-top: 25px; padding: 15px; border-left: 4px solid #00b67a; border-radius: 6px; } .about-company h3 { margin-top: 0; color: #333; } .topbar { background: #007BFF; color: white; padding: 10px 20px; display: flex; justify-content: space-between; align-items: center; } .topbar .menu a { color: white; margin-left: 10px; text-decoration: none; } footer { text-align: center; margin-top: 40px; padding: 15px; font-size: 14px; color: #666; } .footer-menu a { margin: 0 8px; color: #666; text-decoration: none; } .review-box { background: #f9f9f9; padding: 10px; margin-bottom: 10px; border-radius: 6px; } .review-box1 p{ font-family: 'Poppins', sans-serif; line-height: 8px !important; font-size: 13px !important; } .fixed-footer { position: fixed; left: 0; bottom: 0; width: 100%; background: #222; text-align: center; padding: 10px 0; color: #fff; z-index: 1000; } .fixed-footer p{ font-family: 'Poppins', sans-serif !important; font-size: 13px !important; } .footer-menu a { margin: 0 10px; text-decoration: none; color: #fff; font-family: 'Poppins', sans-serif !important; font-size: 13px !important; } .footer-menu a:hover { text-decoration: underline; } /* Collapsible menu */ .menu { display: none; flex-direction: column; } .menu.active { display: flex; } .menu a { padding: 8px 0; text-decoration: none; color: #333; } .menu-toggle { font-size: 1.5em; cursor: pointer; } @media(min-width: 768px){ .menu { display: flex !important; flex-direction: row; } .menu a { margin-left: 15px; } .menu-toggle { display: none; } } .topbar { display:flex; justify-content:space-between; align-items:center; padding:10px 20px; background:#007BFF; color:white; } .logo { font-size: 20px; font-weight: bold; display: flex; align-items: center; gap: 10px; } .logo-icon { display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #a2d4f5, #fefb72); /* light blue to lemon */ border-radius: 50%; width: 36px; height: 36px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); margin-right: 8px; } </style> </head> <body> <div class="topbar"> <div class="logo"><div class="logo-icon"><i class="fas fa-shield-alt" style="color: skyblue; font-size: 25px; margin-left: 6px !important; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);"></i> </div> REVIEW STREAM </div> <div class="menu-toggle" onclick="document.querySelector('.menu').classList.toggle('active')"> <i class="fas fa-bars"></i> </div> <div class="menu"> <a href="index.php">Home</a> <a href="companies.php">Companies</a> <a href="blog.php">Newsroom</a> <?php if(isset($_SESSION['user_id'])): ?> <a href="logout.php">Logout</a> <?php else: ?> <a href="login.php">Login</a> <?php endif; ?> <button class="dark-mode-toggle" onclick="document.body.classList.toggle('dark-mode')">🌓</button> </div> </div> <div class="container"> <div class="content-layout"> <div class="main-content"> <div class="card"> <h1><?= htmlspecialchars($company['name']) ?></h1> <img src="images/companies/<?= htmlspecialchars($company['image']) ?>" alt="<?= $company['name'] ?>" style="max-width: 200px; margin-bottom: 15px;"> <p><strong>Category:</strong> <?= htmlspecialchars($company['category_name']) ?></p> <p><strong>Region:</strong> <?= htmlspecialchars($company['region']) ?></p> <p><strong>Website:</strong> <a href="<?= htmlspecialchars($company['website']) ?>" target="_blank"><?= htmlspecialchars($company['website']) ?></a></p> <?php if (!empty($company['description'])): ?> <p style="margin-top: 40px; font-weight:bold; font-size: 27px">About <?= htmlspecialchars($company['name']) ?></p> <p style="font-size: 13px"><?= nl2br(htmlspecialchars($company['description'])) ?></p> <?php endif; ?> <hr> <h3>Review Summary</h3> <p><strong>Total Reviews:</strong> <?= $reviewStats['total_reviews'] ?></p> <p><strong>Average Rating:</strong> <?php $avg = round($reviewStats['avg_rating'], 1); for ($i = 1; $i <= 5; $i++) { echo '<i class="fas fa-star" style="color: ' . ($i <= $avg ? 'gold' : '#ccc') . '"></i>'; } echo " {$avg}/5"; ?> </p> <?php if ($topReview): ?> <div class="top-review" style="margin-top: 20px;"> <h4>Top Review by <?= htmlspecialchars($topReview['username']) ?></h4> <p> <?php for ($i = 1; $i <= 5; $i++): ?> <i class="fas fa-star" style="color: <?= $i <= $topReview['rating'] ? '#f8c01b' : '#ccc' ?>"></i> <?php endfor; ?> (<?= $topReview['rating'] ?>/5) </p> <p><?= nl2br(htmlspecialchars($topReview['comment'])) ?></p> </div> <?php endif; ?> <a href="review.php?id=<?= $company['id'] ?>" class="btn" style="margin-top: 25px; display: inline-block;">Read All Reviews</a> </div> </div> <div class="sidebar"> <div class="sidebar-card"> <h4>Latest Reviews</h4> <?php foreach($latestReviews as $rev): ?> <p><strong><?= htmlspecialchars($rev['username']) ?></strong> on <em><?= htmlspecialchars($rev['company_name']) ?></em>:</p> <div> <?php for($i=1;$i<=5;$i++): ?> <span class="star-box <?= $i<=$rev['rating'] ? 'filled' : '' ?>">★</span> <?php endfor; ?> (<?= $rev['rating'] ?>/5) </div> <p style="margin-top:2px;"><?= htmlspecialchars(substr($rev['comment'],0,50)) ?>...</p> <hr> <?php endforeach; ?> </div> <div class="sidebar-card"> <h4>Top Rated Companies</h4> <?php foreach($topCompanies as $top): ?> <div style="display:flex;align-items:center;gap:8px;margin-bottom:5px;"> <img src="images/companies/<?= htmlspecialchars($top['image']) ?>" alt="<?= htmlspecialchars($top['name']) ?>" style="width:30px;height:30px;object-fit:contain;"> <span><?= htmlspecialchars($top['name']) ?> (<?= $top['avg_rating'] ?>/5)</span> </div> <?php endforeach; ?> </div> </div> </div><!-- end of content layout--> </div><!-- end of container--> <?php include 'footer.php'; ?> </body> </html>