Compare commits

...

26 Commits

Author SHA1 Message Date
rirat-0 830b57d245 anpassung der such funktion 2026-06-02 17:03:06 +02:00
rirat-0 06930644a6 Implementierung von neuem such algorithmus und entsprechenden anpassungen in anderen dateien 2026-06-02 16:58:12 +02:00
niklas.ortmann 8e3642c668 Merge branch 'dev' into ImplementedSearch 2026-06-02 14:48:37 +02:00
rirat-0 87d78b749b Finale Aktualisierung 2026-06-02 14:09:06 +02:00
rirat-0 604dbeca93 Aktualisierung 2026-06-02 14:07:33 +02:00
rirat-0 8e9e7d65d0 noch mehr debugging 2026-06-02 13:59:21 +02:00
rirat-0 e2c317e507 mehr debugging 2026-06-02 13:57:30 +02:00
rirat-0 5a7fa35465 test mit absoluten pfaden 2026-06-02 13:55:58 +02:00
rirat-0 2601a1c1ca naechster debugging versuch 2026-06-02 13:54:04 +02:00
rirat-0 0e26679f24 anpassung beider article manager 2026-06-02 13:48:51 +02:00
rirat-0 d5ab659217 anpassung von article managerdao 2026-06-02 13:44:37 +02:00
rirat-0 2d5919d572 alte aenderung reverted 2026-06-02 13:41:51 +02:00
rirat-0 f56a074a3c search results controller wird ueber die results seite geladen 2026-06-02 13:38:19 +02:00
rirat-0 24dc432f01 entfernung mancher aenderungen 2026-06-02 13:26:11 +02:00
rirat-0 016193de07 weitere anpassung von index.php 2026-06-02 13:24:17 +02:00
rirat-0 f04d8fecd3 Anpassung der index.php damit der richtige controller geladen wird 2026-06-02 13:20:54 +02:00
rirat-0 36276c7c88 debug versuch nr.5 2026-06-02 13:16:53 +02:00
rirat-0 4a2cf0b55b 4. versuch 2026-06-02 13:14:04 +02:00
rirat-0 400436a73f 3. versuch die homepage zu reparieren 2026-06-02 13:13:02 +02:00
rirat-0 4c378dfba6 2. versuch das problem der homepage zu loesen 2026-06-02 13:08:17 +02:00
rirat-0 c3a9de71f4 1. versuch, das problem der homepage zu beheben 2026-06-02 13:06:29 +02:00
rirat-0 ecf2e9ef57 Update von ArticleManagerDAO, damit die search Methode auch genutzt werden kann 2026-06-02 13:00:21 +02:00
rirat-0 45ac70eba2 Weitere Anpassung der search.php 2026-06-02 12:54:15 +02:00
rirat-0 3b66c6aa3a aenderung des such formulars um korrekte action zu nutzen 2026-06-02 12:49:24 +02:00
rirat-0 e37b882481 anpassung von controllern und results
search function implementiert, search controller entsprechend angepasst und die results seite angepasst
2026-06-02 12:43:59 +02:00
rirat-0 b328c2613c search.php form erstellt 2026-06-01 21:04:37 +02:00
6 changed files with 105 additions and 51 deletions
+32 -34
View File
@@ -1,5 +1,17 @@
<?php <?php
session_start(); session_start();
//debugging
echo "<pre style='background:#fff; color:#000; padding:10px; border:2px solid red; position:relative; z-index:9999;'>";
echo "Aktuelle URL-Parameter (GET): "; print_r($_GET);
echo "Aktueller Session-Inhalt (SESSION): "; print_r($_SESSION);
echo "</pre>";
// debugging
$results = $_SESSION["search_results"] ?? [];
$query = $_SESSION["search_query"] ?? "";
$resultCount = count($results);
?> ?>
<!-- <!--
Seite: Suchergebnisse Seite: Suchergebnisse
@@ -48,7 +60,7 @@ session_start();
<div class="s-res-header"> <div class="s-res-header">
<h1 class="s-res-main-title">Suchergebnisse</h1> <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> </div>
<!-- Ergebnisliste --> <!-- Ergebnisliste -->
@@ -56,7 +68,25 @@ session_start();
<?php <?php
if(isset($_SESSION['message']) && $_SESSION['message'] == "new_search_results"): ?> 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="index.php?pfad=showArticle&id=<?php echo $item->id; ?>" class="s-res-link">
<?php echo htmlspecialchars($item->title); ?>
</a>
</h2>
<p class="s-res-author">Von: <span class="s-res-author-name"><?php echo htmlspecialchars($item->author); ?></span></p>
</div>
<div class="s-res-arrow">&rarr;</div>
</div>
<?php endforeach; ?>
<?php endif; ?>
<?php elseif (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?> <?php elseif (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?>
<p> <p>
Bitte überprüfe deine Sucheingabe und versuche es erneut! Bitte überprüfe deine Sucheingabe und versuche es erneut!
@@ -66,38 +96,6 @@ session_start();
unset($_SESSION["message"]); 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">&rarr;</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">&rarr;</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">&rarr;</div>
</div>
</div> </div>
<div class="s-res-pagination-footer"> <div class="s-res-pagination-footer">
+7 -2
View File
@@ -2,5 +2,10 @@
Suchleiste. Wird via PHP später in alle Seiten eingebunden Suchleiste. Wird via PHP später in alle Seiten eingebunden
--> -->
<!--<label for="site-search">Suche</label>--> <!--<label for="site-search">Suche</label>-->
<input type="search" id="site-search" name="q" placeholder="Suchen..." class="nav__search"> <form action="php/controller/search-results-controller.php" method="GET" class="search-form">
<button type="submit" class="nav__search-button">Suchen</button>
<input type="hidden" name="pfad" value="search-results">
<input type="search" id="site-search" name="q" placeholder="Suchen..." class="nav__search" required>
<button type="submit" class="nav__search-button">Suchen</button>
</form>
+17 -14
View File
@@ -1,29 +1,32 @@
<?php <?php
session_start(); session_start();
require_once '../model/LocalArticleManager.php'; require_once '/../model/LocalArticleManager.php';
require_once '../model/ArticleManager.php'; require_once '/../model/ArticleManager.php';
if ($_SERVER["REQUEST_METHOD"] === "POST") {
if(!isset($_POST["search"])){ if ($_SERVER["REQUEST_METHOD"] === "GET" && isset($_GET["q"])) {
$search = trim($_GET["q"]);
if (empty($search)) {
$_SESSION["search_results"] = [];
$_SESSION["search_query"] = "";
$_SESSION["message"] = "missing_parameters"; $_SESSION["message"] = "missing_parameters";
header("location: ../../index.php?pfad=search-results");
} else { } else {
$search = $_POST["search"];
try { try {
$articleManager = ArticleManager::getInstance(); $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){ } catch (Exception $e){
$_SESSION["message"] = "internal_error"; $_SESSION["message"] = "internal_error";
} }
$_SESSION["message"] = "new_search_results"; }
// TODO: Liste mit Artikeln in der Suchreihenfolge übertragen. header("Location: ../../index.php?pfad=search-results");
// Weiterleitung zur Suchergebnisanzeige
header("location: ../../index.php?pfad=search-results");
exit(); exit();
}
} }
?> ?>
+1
View File
@@ -44,4 +44,5 @@ class ArticleManager extends LocalArticleManager
return $articleManager; return $articleManager;
} }
} }
+8
View File
@@ -67,5 +67,13 @@ interface ArticleManagerDAO
*/ */
public function getArticlesByAuthor($author); public function getArticlesByAuthor($author);
/**
* Such-Funktion
*
* $keyword Wort, nach dem gesucht wird als string
*/
public function search(string $keyword): array;
} }
?> ?>
+39
View File
@@ -168,5 +168,44 @@ class LocalArticleManager implements ArticleManagerDAO {
} }
return $filteredArticles; return $filteredArticles;
} }
// getarticlesbyauthor nutzen um auch nach kategorien zu suchen
public function search(string $keyword): array {
$articles = $this->getAllArticles();
$filteredArticles = [];
// Sicherheits-Check: Falls getAllArticles aus irgendeinem Grund kein Array liefert
if (!is_array($articles)) {
return [];
}
// Suchbegriff trimmen und in Kleinbuchstaben umwandeln für besseren Vergleich
$cleanKeyword = mb_strtolower(trim($keyword));
foreach ($articles as $article) {
// Sicherstellen, dass die Felder existieren und Strings sind
$title = isset($article['title']) ? mb_strtolower((string)$article['title']) : '';
$content = isset($article['content']) ? mb_strtolower((string)$article['content']) : '';
// Suche im Titel ODER im Inhalt
if (($cleanKeyword !== '' && strpos($title, $cleanKeyword) !== false) ||
($cleanKeyword !== '' && strpos($content, $cleanKeyword) !== false)) {
// Wir mappen die Daten auf das Article-Objekt (wie in deiner getArticlesByAuthor)
$filteredArticles[] = new Article(
intval($article['id'] ?? 0),
$article['title'] ?? '',
$article['content'] ?? '',
$article['author'] ?? '',
$article['category'] ?? '',
$article['tags'] ?? '',
$article['creationDate'] ?? ''
);
}
}
return $filteredArticles;
}
} }
?> ?>