From 746b5b32782af6d084ae56c4f46a237b6682bba1 Mon Sep 17 00:00:00 2001 From: Eirik Th S Date: Sun, 21 Nov 2021 00:48:35 +0100 Subject: [PATCH] Modul 6 - oppgave 4 og 5 --- index.css | 13 ++++++++ modul6/forberedelser.php | 68 ++++++++++++++++++++++++++++++++++++---- modul6/index6_4.php | 2 +- modul6/index6_5.php | 40 +++++++++++++++++++++++ 4 files changed, 116 insertions(+), 7 deletions(-) create mode 100644 modul6/index6_5.php diff --git a/index.css b/index.css index 86d3402..cf03281 100644 --- a/index.css +++ b/index.css @@ -76,4 +76,17 @@ pre { } .table tr:nth-child(2n) { background-color: #0002; +} + +.interesse-wrapper { + margin: auto; + width: 80vw; + min-width: 200px; +} + +.interesse { + border: 1px dashed white; + width: 100px; + margin: 8px; + float: left; } \ No newline at end of file diff --git a/modul6/forberedelser.php b/modul6/forberedelser.php index c8be9e4..bfb34ff 100644 --- a/modul6/forberedelser.php +++ b/modul6/forberedelser.php @@ -49,7 +49,7 @@ class Medlem { public string $epost = ''; public DateTime $dob; public string $kjoenn = ''; - public string $interesser = ''; + public array $interesser = array(); public string $kursaktiviteter = ''; public DateTime $medlem_siden; public string $kontigentstatus = ''; @@ -169,9 +169,10 @@ function hentMedlem($dbid){ function hentMedlemmer($perSide = 20, $side = 1, $medlemId = 0){ $sideStart = $side?($side-1)*$perSide:0; $medlemmer = array(); + $order = array(); $hentMedlemmerSQL = " - SELECT medlemId, fornavn, etternavn, adresse, m.postnummer, p.poststed, epost, dob, kjoenn, kontigentStatus, medlemStart + SELECT medlemId, fornavn, etternavn, adresse, m.postnummer, p.poststed, epost, dob, kjoenn, kontigentStatus, medlemStart FROM Medlem m INNER JOIN Postnummer p ON m.postnummer = p.postnummer "; @@ -179,7 +180,9 @@ function hentMedlemmer($perSide = 20, $side = 1, $medlemId = 0){ $hentMedlemmerSQL .= " WHERE `medlemId` = ?"; } else { - $hentMedlemmerSQL .= "ORDER BY etternavn, fornavn LIMIT $sideStart,$perSide"; + $order[] = "etternavn"; + $order[] = "fornavn"; + $hentMedlemmerSQL .= "ORDER BY ".implode(', ', $order)." LIMIT $sideStart,$perSide"; } try { @@ -242,12 +245,20 @@ class Aktivitet { } } -function hentAktivitet($id = false){ +function hentAktivitet($id = false, $all = false){ $aktiviteter = array(); + $where = array(); - $sql = "SELECT * FROM Aktivitet;"; if($id){ - $sql = "SELECT * FROM Aktivitet WHERE aktivitetId = ?"; + $where[] = "aktivitetId = ?"; + } + if(!$all){ + $where[] = "slutt > now()"; + } + $sql = "SELECT * FROM Aktivitet"; + + if(!empty($where)){ + $sql .= " WHERE ".implode(' AND ', $where); } try { @@ -283,4 +294,49 @@ function hentAktivitet($id = false){ return $aktiviteter[0]; } return $aktiviteter; +} + +class Interesse { + public string $navn; + public array $medlemmer; + public function __construct($navn){ + $this->navn = $navn; + } +} + +function hentInteresser(){ + $interesser = array(); + $hentInteresseSQL = " + SELECT i.interesseId, i.navn, ir.medlemId + FROM Interesse i + LEFT OUTER JOIN Interesse_register ir on ir.interesseId = i.interesseId + ORDER BY i.navn + "; + + try { + $db = getPdoConn(); + $stmt = $db->prepare($hentInteresseSQL); + $stmt->execute(); + + $stmt->setFetchMode(PDO::FETCH_ASSOC); + + foreach($stmt->fetchAll() as $row){ + if(!isset($interesser[$row['interesseId']])){ + $interesser[$row['interesseId']] = new Interesse($row['navn']); + } + if(!isset($interesser[ $row['interesseId'] ]->medlemmer)){ + $interesser[ $row['interesseId'] ]->medlemmer = array(); + } + if($row['medlemId']){ + $interesser[$row['interesseId']]->medlemmer[] = $row['medlemId']; + } + } + } + catch (PDOException $e){ + echo "SQL-feil: ".$e; + } + finally { + $db = null; + } + return $interesser; } \ No newline at end of file diff --git a/modul6/index6_4.php b/modul6/index6_4.php index f0bc2e7..93431ce 100644 --- a/modul6/index6_4.php +++ b/modul6/index6_4.php @@ -45,7 +45,7 @@ if(!empty($aktiviteter)){ ?> echo " ".$aktivitet->beskrivelse."\n"; echo " ".$aktivitet->ansvarligId."\n"; echo " ".(($temp=$aktivitet->start)?$temp->format('d. M Y H:i'):'')."\n"; - echo " ".(($temp=$aktivitet->stopp)?$temp->format('d. M Y H:i'):'')."\n"; + echo " ".(($temp=$aktivitet->slutt)?$temp->format('d. M Y H:i'):'')."\n"; echo "\n"; } ?> diff --git a/modul6/index6_5.php b/modul6/index6_5.php new file mode 100644 index 0000000..c9e37cc --- /dev/null +++ b/modul6/index6_5.php @@ -0,0 +1,40 @@ + + + + <?=title();?> + + + + +
+

+

+

Interesser

+ + +"; + foreach ($interesser as $i){ + echo "
"; + echo "

".$i->navn."

"; + $medlemmer = array(); + foreach ($i->medlemmer as $m){ + $me = ($medlemmer[$m] ?? $medlemmer[$m] = hentMedlem($m)); + echo $me->fornavn."
"; + } + echo "
"; + echo "
"; + } + echo "
"; +} +?> + + + + \ No newline at end of file