Modul 6 oppgave 1
parent
83ea06327d
commit
801ea4071d
|
@ -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