WIP Suche implementiert, sowie Sortieren der Ergebnisse #19
+23
-34
@@ -1,5 +1,10 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
$results = $_SESSION["search_results"] ?? [];
|
||||
$query = $_SESSION["search_query"] ?? "";
|
||||
$resultCount = count($results);
|
||||
|
||||
?>
|
||||
<!--
|
||||
Seite: Suchergebnisse
|
||||
@@ -48,7 +53,7 @@ session_start();
|
||||
|
||||
<div class="s-res-header">
|
||||
<h1 class="s-res-main-title">Suchergebnisse</h1>
|
||||
<p class="s-res-meta">3 Treffer für Ihre Suchanfrage</p>
|
||||
<p class="s-res-meta"><?php echo $resultCount; ?> Treffer für Ihre Suchanfrage "<?php echo htmlspecialchars($query); ?>"</p>
|
||||
</div>
|
||||
|
||||
<!-- Ergebnisliste -->
|
||||
@@ -56,7 +61,23 @@ session_start();
|
||||
|
||||
<?php
|
||||
if(isset($_SESSION['message']) && $_SESSION['message'] == "new_search_results"): ?>
|
||||
<!-- TODO: Hier die Beiträge ausgeben. -->
|
||||
|
||||
<?php if ($resultCount === 0): ?>
|
||||
<p>Keine Beiträge zu diesem Suchbegriff gefunden.</p>
|
||||
<?php else: ?>
|
||||
<?php foreach ($results as $item): ?>
|
||||
<div class="s-res-item">
|
||||
<div class="s-res-content">
|
||||
<h2 class="s-res-item-title">
|
||||
<a href="<?php echo $item['link']; ?>" class="s-res-link"><?php echo $item['title']; ?></a>
|
||||
</h2>
|
||||
<p class="s-res-author">Kategorie: <span class="s-res-author-name">Beitrag</span></p>
|
||||
</div>
|
||||
<div class="s-res-arrow">→</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php elseif (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?>
|
||||
<p>
|
||||
Bitte überprüfe deine Sucheingabe und versuche es erneut!
|
||||
@@ -66,38 +87,6 @@ session_start();
|
||||
unset($_SESSION["message"]);
|
||||
?>
|
||||
|
||||
<!-- Beispielbeitrag -->
|
||||
<div class="s-res-item">
|
||||
<div class="s-res-content">
|
||||
<h2 class="s-res-item-title">
|
||||
<a href="#" class="s-res-link">Pythagoras</a>
|
||||
</h2>
|
||||
<p class="s-res-author">Von: <span class="s-res-author-name">Max Mustermann</span></p>
|
||||
</div>
|
||||
<div class="s-res-arrow">→</div>
|
||||
</div>
|
||||
|
||||
<!-- Beispielbeitrag -->
|
||||
<div class="s-res-item">
|
||||
<div class="s-res-content">
|
||||
<h2 class="s-res-item-title">
|
||||
<a href="#" class="s-res-link">Pythagoras</a>
|
||||
</h2>
|
||||
<p class="s-res-author">Von: <span class="s-res-author-name">Max Mustermann</span></p>
|
||||
</div>
|
||||
<div class="s-res-arrow">→</div>
|
||||
</div>
|
||||
|
||||
<!-- Beispielbeitrag -->
|
||||
<div class="s-res-item">
|
||||
<div class="s-res-content">
|
||||
<h2 class="s-res-item-title">
|
||||
<a href="#" class="s-res-link">Pythagoras</a>
|
||||
</h2>
|
||||
<p class="s-res-author">Von: <span class="s-res-author-name">Max Mustermann</span></p>
|
||||
</div>
|
||||
<div class="s-res-arrow">→</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="s-res-pagination-footer">
|
||||
|
||||
@@ -3,22 +3,25 @@ session_start();
|
||||
require_once '../model/LocalArticleManager.php';
|
||||
require_once '../model/ArticleManager.php';
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
if(!isset($_POST["search"])){
|
||||
if ($_SERVER["REQUEST_METHOD"] === "GET") {
|
||||
if(!isset($_GET["q"])){
|
||||
$_SESSION["message"] = "missing_parameters";
|
||||
header("location: ../../index.php?pfad=search-results");
|
||||
} else {
|
||||
|
||||
$search = $_POST["search"];
|
||||
$search = trim($_GET["q"]);
|
||||
|
||||
try {
|
||||
$articleManager = ArticleManager::getInstance();
|
||||
$articleManager->search($search); // TODO: Methode implementieren.
|
||||
$results = $articleManager->search($search);
|
||||
|
||||
$_SESSION["search_results"] = $results;
|
||||
$_SESSION["search_query"] = $search;
|
||||
$_SESSION["message"] = "new_search_results";
|
||||
} catch (Exception $e){
|
||||
$_SESSION["message"] = "internal_error";
|
||||
}
|
||||
$_SESSION["message"] = "new_search_results";
|
||||
// TODO: Liste mit Artikeln in der Suchreihenfolge übertragen.
|
||||
// Weiterleitung zur Suchergebnisanzeige
|
||||
header("location: ../../index.php?pfad=search-results");
|
||||
exit();
|
||||
|
||||
@@ -44,4 +44,25 @@ class ArticleManager extends LocalArticleManager
|
||||
|
||||
return $articleManager;
|
||||
}
|
||||
|
||||
|
||||
public function search(string $keyword): array
|
||||
{
|
||||
$results = [];
|
||||
$contentFolder = __DIR__ . '/../content/';
|
||||
$files = glob($contentFolder . "*.php");
|
||||
|
||||
foreach ($files as $file) {
|
||||
$content = file_get_contents($file);
|
||||
if (stripos($content, $keyword) !== false) {
|
||||
$filename = basename($file, ".php");
|
||||
$results[] = [
|
||||
'title' => ucfirst($filename),
|
||||
'link' => "index.php?pfad=" . $filename
|
||||
];
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user