diff --git a/CSS/Element/filter_box.css b/CSS/Element/filter_box.css index b9fea33..2489d61 100644 --- a/CSS/Element/filter_box.css +++ b/CSS/Element/filter_box.css @@ -29,4 +29,4 @@ font-weight: bold; cursor: pointer; border-radius: 4px; -} +} \ No newline at end of file diff --git a/Model/UserModel.php b/Model/UserModel.php index a5ac67e..2c7548a 100644 --- a/Model/UserModel.php +++ b/Model/UserModel.php @@ -190,6 +190,23 @@ class UserModel extends Database die; } } + public function getAllCourses() { + $pdo = $this->linkDB(); + + $sql = "SELECT k.id, k.name, k.preis, k.dauer, k.rabatt, k.kategorie, k.beschreibung, k.ort_id, + o.stadt, o.strasse, o.plz, b.note, b.kommentar + FROM kurs AS k + JOIN ort AS o ON o.id = k.ort_id + LEFT JOIN bewertungen AS b ON b.kurs_id = k.id"; + try { + $sth = $pdo->prepare($sql); + $sth->execute(); + return $sth->fetchAll(\PDO::FETCH_ASSOC); + } catch (PDOException $e) { + new \Blog\Library\ErrorMsg("Fehler beim Lesen der Daten.", $e); + die; + } + } public function updateCourse($course) { diff --git a/Views/Welcome/showWelcome.phtml b/Views/Welcome/showWelcome.phtml index b867129..58c50fc 100644 --- a/Views/Welcome/showWelcome.phtml +++ b/Views/Welcome/showWelcome.phtml @@ -1,9 +1,8 @@ @@ -36,89 +35,81 @@ $location = $_GET['location'] ?? ''; -
- -
- 5, - 'titel' => 'Marketing Pro', - 'adresse' => 'Bulu ulu Straße 17', - 'preis' => '59,99€', - 'ort' => '33333 Frankfurt', - 'leiter' => 'Max Mustermann' - ], - [ - 'bewertung' => 4, - 'titel' => 'Design Basics', - 'adresse' => 'Musterstraße 10', - 'preis' => '39,99€', - 'ort' => '10115 Berlin', - 'leiter' => 'Lisa Beispiel' - ], - [ - 'bewertung' => 5, - 'titel' => 'Excel Masterclass', - 'adresse' => 'Tabellenweg 5', - 'preis' => '49,99€', - 'ort' => '20457 Hamburg', - 'leiter' => 'Thomas Tabelle' - ], - [ - 'bewertung' => 5, - 'titel' => 'Excel Masterclass', - 'adresse' => 'Tabellenweg 5', - 'preis' => '49,99€', - 'ort' => '20457 Hamburg', - 'leiter' => 'Thomas Tabelle' - ], - [ - 'bewertung' => 5, - 'titel' => 'Excel Masterclass', - 'adresse' => 'Tabellenweg 5', - 'preis' => '49,99€', - 'ort' => '20457 Hamburg', - 'leiter' => 'Thomas Tabelle' - ], - ]; +
+
+ getAllCourses(); - // Filter anwenden - $filteredKurse = array_filter($kurse, function ($kurs) use ($rating, $location) { - if ($rating && $kurs['bewertung'] < $rating) return false; - if ($location && stripos($kurs['ort'], $location) === false) return false; - return true; + $filteredKurse = array_filter($kurse, function($kurs) use ($rating, $location) { + if ($rating && $kurs['note'] < $rating) return false; + if ($location && stripos($kurs['ort'], $location) === false) return false; + return true; + }); + + if ($price) { + usort($filteredKurse, function($a, $b) use ($price) { + $priceA = floatval(str_replace(',', '.', str_replace('€', '', $a['preis']))); + $priceB = floatval(str_replace(',', '.', str_replace('€', '', $b['preis']))); + return $price === 'asc' ? $priceA <=> $priceB : $priceB <=> $priceA; }); + } - // Preise in Float umwandeln für Sortierung - if ($price) { - usort($filteredKurse, function ($a, $b) use ($price) { - $priceA = floatval(str_replace(',', '.', str_replace('€', '', $a['preis']))); - $priceB = floatval(str_replace(',', '.', str_replace('€', '', $b['preis']))); - return $price === 'asc' ? $priceA <=> $priceB : $priceB <=> $priceA; - }); + $doc = new DOMDocument('1.0', 'UTF-8'); + + if (!empty($filteredKurse)) { + echo '
'; + foreach ($filteredKurse as $kurs) { + $courseCard = $doc->createElement('div'); + $courseCard->setAttribute('class', 'course-card'); + + $courseImage = $doc->createElement('div'); + $courseImage->setAttribute('class', 'course-image'); + $courseCard->appendChild($courseImage); + + $courseContent = $doc->createElement('div'); + $courseContent->setAttribute('class', 'course-content'); + $courseCard->appendChild($courseContent); + + $courseLeft = $doc->createElement('div'); + $courseLeft->setAttribute('class', 'course-left'); + $courseContent->appendChild($courseLeft); + + $note = $doc->createElement('div', htmlspecialchars($kurs['note'] ?? 'Keine Bewertung') . ' ★'); + $courseLeft->appendChild($note); + + $name = $doc->createElement('div', htmlspecialchars($kurs['name'])); + $courseLeft->appendChild($name); + + $address = $doc->createElement('div', htmlspecialchars($kurs['strasse'] . ', ' . $kurs['stadt'] . ' ' . $kurs['plz'])); + $courseLeft->appendChild($address); + + $courseRight = $doc->createElement('div'); + $courseRight->setAttribute('class', 'course-right'); + $courseContent->appendChild($courseRight); + + $price = $doc->createElement('div', htmlspecialchars($kurs['preis']) . ' €'); + $courseRight->appendChild($price); + + $category = $doc->createElement('div', htmlspecialchars($kurs['kategorie'] ?? 'Keine Kategorie')); + $courseRight->appendChild($category); + + $editLink = $doc->createElement('a', "Bearbeiten"); + $editLink->setAttribute('href', '?controller=User&do=showUserAccountPage&id=' . $kurs['id']); + $editLink->setAttribute('class', 'course-card-link'); + $courseRight->appendChild($editLink); + + echo $doc->saveHTML($courseCard); } + echo '
'; + } else { + echo '

Keine Kurse gefunden.

'; + } - foreach ($filteredKurse as $kurs): ?> - -
-
-
-
-
-
Kursleiter:
-
-
-
-
-
-
-
-
- -
+ ?>
+