Compare commits
2 Commits
83ea06327d
...
c5219cae7b
Author | SHA1 | Date |
---|---|---|
Eirik Th S | c5219cae7b | |
Eirik Th S | 801ea4071d |
1
mal.php
1
mal.php
|
@ -9,6 +9,7 @@
|
|||
<div class="container">
|
||||
<h1><?=title();?></h1>
|
||||
<h4><?=getNavigation();?></h4>
|
||||
<h2></h2>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
define("DB_HOST", "localhost");
|
||||
define("DB_USER", "brukernavn");
|
||||
define("DB_PASS", "passord");
|
||||
define("DB_BASE", "database");
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
require 'database.php';
|
||||
|
||||
$tabellSQL = "
|
||||
CREATE OR REPLACE TABLE Postnummer (
|
||||
postnummer INT(4) NOT NULL PRIMARY KEY,
|
||||
poststed VARCHAR(30) NOT NULL
|
||||
);
|
||||
|
||||
CREATE OR REPLACE TABLE Medlem (
|
||||
medlemId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
fornavn VARCHAR(40) NOT NULL,
|
||||
etternavn VARCHAR(40) NOT NULL,
|
||||
adresse VARCHAR(40) NOT NULL,
|
||||
postnummer INT(4) NOT NULL,
|
||||
epost VARCHAR(100) NOT NULL UNIQUE,
|
||||
dob DATE NOT NULL,
|
||||
kjoenn ENUM('M', 'F', 'O') NOT NULL,
|
||||
kontigentStatus ENUM('BETALT', 'IKKE_BETALT') NOT NULL DEFAULT 'IKKE_BETALT',
|
||||
medlemStart DATE NOT NULL,
|
||||
FOREIGN KEY (postnummer) REFERENCES Postnummer(postnummer)
|
||||
);
|
||||
";
|
||||
|
||||
function getPdoConn(): PDO {
|
||||
$conn = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_BASE . "", DB_USER, DB_PASS);
|
||||
|
||||
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
return $conn;
|
||||
}
|
||||
|
||||
class Medlem {
|
||||
public string $rolle = "Standard";
|
||||
public int $dbid;
|
||||
public string $fornavn = '';
|
||||
public string $etternavn = '';
|
||||
public string $adresse1 = '';
|
||||
public string $adresse2 = '';
|
||||
public int $postnummer;
|
||||
public string $poststed = '';
|
||||
public string $epost = '';
|
||||
public DateTime $dob;
|
||||
public string $kjoenn = '';
|
||||
public string $interesser = '';
|
||||
public string $kursaktiviteter = '';
|
||||
public DateTime $medlem_siden;
|
||||
public string $kontigentstatus = '';
|
||||
|
||||
public function set($felt, $verdi){
|
||||
$this->${$felt} = $verdi;
|
||||
}
|
||||
|
||||
public function get($felt){
|
||||
return $this->${$felt};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Caching av poststed
|
||||
$poststed = array();
|
||||
function hentPoststed($postnummer): string {
|
||||
global $poststed;
|
||||
|
||||
if(!$poststed[ $postnummer ]){
|
||||
$db = getPdoConn();
|
||||
$stmt = $db->prepare("SELECT postnummer, poststed FROM Postnummer WHERE postnummer = ?");
|
||||
$stmt->execute([$postnummer]);
|
||||
|
||||
foreach ($stmt as $row){
|
||||
$poststed[$row['postnummer']] = $row['poststed'];
|
||||
}
|
||||
}
|
||||
|
||||
return $poststed[$postnummer] ?? "Ukjent";
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
../modul1/index.php
|
|
@ -0,0 +1,127 @@
|
|||
<?php
|
||||
include '../common.php';
|
||||
|
||||
include 'forberedelser.php';
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html lang="no">
|
||||
<head>
|
||||
<title><?=title();?></title>
|
||||
<link rel="stylesheet" href="../index.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container">
|
||||
<h1><?=title();?></h1>
|
||||
<h4><?=getNavigation();?></h4>
|
||||
<h2>Medlemsliste</h2>
|
||||
|
||||
<?php
|
||||
$medlemmer = array();
|
||||
|
||||
$perPage = $_GET['size'] ?? 20;
|
||||
$pageStart = $_GET['page']?($_GET['page']-1)*$perPage:0;
|
||||
|
||||
// Åpne databasetilkobling som definert i forberedelser.php
|
||||
$db = null;
|
||||
try {
|
||||
$db = getPdoConn();
|
||||
}
|
||||
catch (PDOException $e){
|
||||
die("Fikk ikke koblet til: <br>\n".$e);
|
||||
}
|
||||
|
||||
|
||||
$hentMedlemmer = "
|
||||
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
|
||||
ORDER BY etternavn, fornavn
|
||||
LIMIT $pageStart,$perPage
|
||||
";
|
||||
|
||||
try {
|
||||
$statement = $db->prepare($hentMedlemmer);
|
||||
$statement->execute();
|
||||
|
||||
$statement->setFetchMode(PDO::FETCH_ASSOC);
|
||||
$resultat = $statement->fetchAll();
|
||||
|
||||
foreach ($resultat as $key => $row){
|
||||
$medlem = new Medlem();
|
||||
$medlem->dbid = $row['medlemId'];
|
||||
$medlem->fornavn = $row['fornavn'];
|
||||
$medlem->etternavn = $row['etternavn'];
|
||||
$medlem->adresse1 = $row['adresse'];
|
||||
$medlem->postnummer = $row['postnummer'];
|
||||
$medlem->poststed = $row['poststed'];
|
||||
$medlem->epost = $row['epost'];
|
||||
$medlem->dob = DateTime::createFromFormat('Y-m-d', $row['dob'] );
|
||||
$medlem->kjoenn = $row['kjoenn'];
|
||||
$medlem->kontigentstatus = $row['kontigentStatus'];
|
||||
$medlem->medlem_siden = DateTime::createFromFormat('Y-m-d', $row['medlemStart'] );
|
||||
|
||||
array_push($medlemmer, $medlem);
|
||||
}
|
||||
}
|
||||
catch (PDOException $e){
|
||||
echo "SQL-feil: <br>\n".$e;
|
||||
} finally {
|
||||
$db = null;
|
||||
}
|
||||
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div style="text-align: center; margin-bottom: 50px;">
|
||||
<?php
|
||||
// Koden er ganske lik den brukt i modul 4 oppgave 3.
|
||||
if(!empty($medlemmer)){
|
||||
?>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Fornavn</th>
|
||||
<th>Etternavn</th>
|
||||
<th>Adresse</th>
|
||||
<th>Postnummer/-sted</th>
|
||||
<th>Mobilnummer</th>
|
||||
<th>E-post</th>
|
||||
<th>Fødselsdato</th>
|
||||
<th>Kjønn</th>
|
||||
<th>Interesser</th>
|
||||
<th>Kursaktiviteter</th>
|
||||
<th>Medlem siden</th>
|
||||
<th>Kontigentstatus</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ($medlemmer as $medlemID => $medlem){
|
||||
echo "<tr>\n";
|
||||
echo " <td>".($medlemID+1)."</td>\n";
|
||||
echo " <td>".($medlem->fornavn ?? '')."</td>\n";
|
||||
echo " <td>".($medlem->etternavn ?? '')."</td>\n";
|
||||
echo " <td>".($medlem->adresse1 ?? '');
|
||||
if(!empty($medlem->adresse2)){ echo "<br>".$medlem->adresse2; } // Skriver inn adresselinje 2 hvis aktuelt
|
||||
echo "</td>\n";
|
||||
echo " <td>{$medlem->postnummer} {$medlem->poststed}</td>\n";
|
||||
echo " <td>".($medlem->mobilnummer ?? '')."</td>\n";
|
||||
echo " <td>".($medlem->epost ?? '')."</td>\n";
|
||||
echo " <td>".($medlem->dob->format('d. M Y') ?? '')."</td>\n";
|
||||
echo " <td>".($medlem->kjoenn ?? '')."</td>\n";
|
||||
echo " <td>".($medlem->interesser ?? '')."</td>\n";
|
||||
echo " <td>".($medlem->kursaktiviteter ?? '')."</td>\n";
|
||||
echo " <td>".($medlem->medlem_siden->format('d. M Y') ?? '')."</td>\n";
|
||||
echo " <td>".($medlem->kontigentstatus ?? '')."</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
include '../common.php';
|
||||
|
||||
include 'forberedelser.php';
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html lang="no">
|
||||
<head>
|
||||
<title><?=title();?></title>
|
||||
<link rel="stylesheet" href="../index.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container">
|
||||
<h1><?=title();?></h1>
|
||||
<h4><?=getNavigation();?></h4>
|
||||
<h2>Medlemsliste</h2>
|
||||
|
||||
<?php
|
||||
|
||||
echo hentPoststed(4614)."<br>\n";
|
||||
echo hentPoststed(4614)."<br>\n";
|
||||
echo hentPoststed(4462)."<br>\n";
|
||||
echo hentPoststed(4614)."<br>\n";
|
||||
echo hentPoststed(4462)."<br>\n";
|
||||
echo hentPoststed(4614)."<br>\n";
|
||||
echo hentPoststed(4615)."<br>\n";
|
||||
|
||||
?>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue