Modul 6 WIP

master
Eirik Th S 2021-11-18 20:49:17 +01:00
parent 1a9d4cf194
commit 7e8252f3a5
9 changed files with 786 additions and 63 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@
modul0 modul0
*.zip *.zip
index*_6* index*_6*
pma/

View File

@ -1,6 +1,7 @@
<?php <?php
require 'database.php'; require 'database.php';
DEFINE('SELECTED', 'selected');
$tabellSQL = " $tabellSQL = "
CREATE OR REPLACE TABLE Postnummer ( CREATE OR REPLACE TABLE Postnummer (
postnummer INT(4) NOT NULL PRIMARY KEY, postnummer INT(4) NOT NULL PRIMARY KEY,
@ -13,6 +14,7 @@ CREATE OR REPLACE TABLE Medlem (
etternavn VARCHAR(40) NOT NULL, etternavn VARCHAR(40) NOT NULL,
adresse VARCHAR(40) NOT NULL, adresse VARCHAR(40) NOT NULL,
postnummer INT(4) NOT NULL, postnummer INT(4) NOT NULL,
mobilnummer VARCHAR(12),
epost VARCHAR(100) NOT NULL UNIQUE, epost VARCHAR(100) NOT NULL UNIQUE,
dob DATE NOT NULL, dob DATE NOT NULL,
kjoenn ENUM('M', 'F', 'O') NOT NULL, kjoenn ENUM('M', 'F', 'O') NOT NULL,
@ -31,7 +33,11 @@ function getPdoConn(): PDO {
} }
class Medlem { class Medlem {
public string $rolle = "Standard"; public static $stringNames = array("fornavn", "etternavn", "adresse1", "adresse2", "poststed", "mobilnummer", "epost", "kjoenn", "interesser", "kursaktiviteter", "kontigentstatus");
public static $intFields = array("postnummer");
public static $dateFields = array("dob", "medlem_siden");
public string $rolle = "Standard"; //TODO: Implementer roller
public int $dbid; public int $dbid;
public string $fornavn = ''; public string $fornavn = '';
public string $etternavn = ''; public string $etternavn = '';
@ -39,6 +45,7 @@ class Medlem {
public string $adresse2 = ''; public string $adresse2 = '';
public int $postnummer; public int $postnummer;
public string $poststed = ''; public string $poststed = '';
public string $mobilnummer = '';
public string $epost = ''; public string $epost = '';
public DateTime $dob; public DateTime $dob;
public string $kjoenn = ''; public string $kjoenn = '';
@ -46,20 +53,101 @@ class Medlem {
public string $kursaktiviteter = ''; public string $kursaktiviteter = '';
public DateTime $medlem_siden; public DateTime $medlem_siden;
public string $kontigentstatus = ''; public string $kontigentstatus = '';
public $endret = array();
public static function getFromId($dbid): Medlem {
return hentMedlem($dbid);
}
public function set($felt, $verdi){ public function set($felt, $verdi){
$this->${$felt} = $verdi; if($this->{$felt} != $verdi){
$this->{$felt} = $verdi;
$this->endret[] = $felt;
return true;
}
return false;
} }
public function get($felt){ public function get($felt){
return $this->${$felt}; return $this->${$felt};
} }
public function verifyMember():bool{
return
!empty($this->fornavn) &&
!empty($this->etternavn) &&
!empty($this->adresse1) &&
!empty($this->postnummer) &&
!empty($this->epost) &&
!empty($this->dob) &&
!empty($this->kjoenn) &&
!empty($this->medlem_siden) &&
!empty($this->kontigentstatus);
}
public function persistMember(){
if($this->verifyMember()){
$db = getPdoConn();
if(hentPoststed($this->postnummer) === false){
if(empty($this->poststed)){
throw new InvalidArgumentException("Kan ikke lage et poststed som ikke finnes. Sjekk at medlemmet har et oppgitt poststed.");
}
$kommuneStmt = $db->prepare("INSERT INTO Postnummer VALUES (?,?)");
$kommuneStmt->bindValue(1, $this->postnummer);
$kommuneStmt->bindValue(2, $this->poststed);
$kommuneStmt->execute();
}
$insertSQL = "INSERT INTO Medlem (fornavn, etternavn, adresse, postnummer, mobilnummer, epost, dob, kjoenn, kontigentStatus, medlemStart) VALUES (?,?,?,?,?,?,?,?,?,?);";
$statement = $db->prepare($insertSQL);
$statement->bindValue(1, $this->fornavn);
$statement->bindValue(2, $this->etternavn);
$statement->bindValue(3, $this->adresse1 . "\n" . $this->adresse2);
$statement->bindValue(4, $this->postnummer);
$statement->bindValue(5, $this->mobilnummer);
$statement->bindValue(6, $this->epost);
$statement->bindValue(7, $this->dob->format("Y-m-d"));
$statement->bindValue(8, $this->kjoenn);
$statement->bindValue(9, $this->kontigentstatus);
$statement->bindValue(10, $this->medlem_siden->format("Y-m-d"));
echo $statement->queryString;
$statement->execute();
// var_dump($statement);
}
// '{$this->fornavn}', '{$this->etternavn}', '{$this->adresse1}\n{$this->adresse2}'
}
public function updateMemberRow(){
$db = getPdoConn();
$updateSQLValues = array();
foreach ($this->endret as $key => $value){
$updateSQLValues[] = "$value = ?";
}
$sql = "UPDATE Medlem SET ".implode(', ', $updateSQLValues);
$sql .= " WHERE medlemId = ?";
// $statement = $db->prepare($sql);
// LOOP
// $statement->bindParam()
}
} }
// Caching av poststed
$poststed = array(); function hentPoststed($postnummer) {
function hentPoststed($postnummer): string {
global $poststed; global $poststed;
if(!$poststed[ $postnummer ]){ if(!$poststed[ $postnummer ]){
@ -72,5 +160,127 @@ function hentPoststed($postnummer): string {
} }
} }
return $poststed[$postnummer] ?? "Ukjent"; return $poststed[$postnummer] ?? false;
}
function hentMedlem($dbid){
return hentMedlemmer(null, null, $dbid)[$dbid];
}
function hentMedlemmer($perSide = 20, $side = 1, $medlemId = 0){
$sideStart = $side?($side-1)*$perSide:0;
$medlemmer = array();
$hentMedlemmerSQL = "
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
";
if($medlemId > 0){
$hentMedlemmerSQL .= " WHERE `medlemId` = ?";
}
else {
$hentMedlemmerSQL .= "ORDER BY etternavn, fornavn LIMIT $sideStart,$perSide";
}
try {
// Åpne databasetilkobling som definert
$db = getPdoConn();
// Prepare and execute statement
$statement = $db->prepare($hentMedlemmerSQL);
if($medlemId > 0){
$statement->bindValue(1,$medlemId);
}
$statement->execute();
// Fetchmode FETCH_ASSOC for å få med keys-verdiene
$statement->setFetchMode(PDO::FETCH_ASSOC);
$resultat = $statement->fetchAll();
foreach ($resultat as $row){
$medlem = new Medlem();
$medlem->dbid = $row['medlemId'];
$medlem->fornavn = $row['fornavn'];
$medlem->etternavn = $row['etternavn'];
$adresser = explode('\n', $row['adresse']);
$medlem->adresse1 = $adresser[0];
$medlem->adresse2 = $adresser[1] ?? '';
$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'] );
$medlemmer[$medlem->dbid] = $medlem;
}
}
catch (PDOException $e){
echo "SQL-feil: <br>\n".$e;
} finally {
$db = null;
return $medlemmer;
}
}
class Aktivitet {
public int $dbid;
public string $navn;
public string $beskrivelse;
public int $ansvarlig;
public ?DateTime $start = null;
public ?DateTime $slutt = null;
public function __construct($dbid, $navn, $beskrivelse, $ansvarlig, $start, $slutt){
$this->dbid = $dbid ?? 0;
$this->navn = $navn;
$this->beskrivelse = $beskrivelse;
$this->ansvarlig = $ansvarlig;
$this->start = $start ?? null;
$this->slutt = $slutt ?? null;
}
}
function hentAktivitet($id = false){
$aktiviteter = array();
$sql = "SELECT * FROM Aktivitet;";
if($id){
$sql = "SELECT * FROM Aktivitet WHERE aktivitetId = ?";
}
try {
$db = getPdoConn();
$stmt = $db->prepare($sql);
if($id){
$stmt->bindValue(1, $id);
}
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$res = $stmt->fetchAll();
foreach ($res as $row){
$start = DateTime::createFromFormat('Y-m-d H:i:s', $row['start']) ?? null;
$slutt = DateTime::createFromFormat('Y-m-d H:i:s', $row['slutt']) ?? null;
$aktiviteter[] = new Aktivitet(
$row['aktivitetId'],
$row['navn'],
$row['beskrivelse'],
$row['ansvarligId'],
$start,
$slutt
);
}
}
catch (PDOException $e){
echo "SQL-feil: <br>\n".$e;
}
finally {
$db = null;
}
if($id && count($aktiviteter) == 1){
return $aktiviteter[0];
}
return $aktiviteter;
} }

View File

@ -17,58 +17,15 @@ include 'forberedelser.php';
<h2>Medlemsliste</h2> <h2>Medlemsliste</h2>
<?php <?php
// Tom matrise som skal holde Medlem-objekter.
$medlemmer = array(); $medlemmer = array();
// Sidetall, i tilfelle det er kjempemange medlemmer. (Standard 20 per side, side 1)
$perPage = $_GET['size'] ?? 20; $perPage = $_GET['size'] ?? 20;
$pageStart = $_GET['page']?($_GET['page']-1)*$perPage:0; $pageStart = $_GET['page']?($_GET['page']-1)*$perPage:0;
// Åpne databasetilkobling som definert i forberedelser.php // Se funkjson i forberedelser.php
$db = null; $medlemmer = hentMedlemmer($_GET['size'] ?? 20, $_GET['page'] ?? 1);
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>

View File

@ -1,8 +1,79 @@
<?php <?php
include '../common.php';
include '../common.php';
include 'forberedelser.php'; include 'forberedelser.php';
ini_set('error_reporting', 1);
ini_set('display_errors',1);
$err = array();
$msg = array();
// Hent matrise med medlemmer fra forberedelser.php
$medlemmer = hentMedlemmer($_GET['size'] ?? 20, $_GET['page'] ?? 1);
if(isset($_GET['memberid'])){
$mid = $_GET['memberid'];
if(hentMedlem($mid) == 0){
$err[] = "Medlem ikke funnet.";
}
}
// Sjekker om det er et innsendt skjema (Redigert skjema)
if(!empty($_POST)){
if(!isset($_POST['bruker_id'])){
// NYTT MEDLEM
$medlem = new Medlem();
foreach ( Medlem::$stringNames as $name){
$medlem->{$name} = $_POST[$name];
}
$medlem->postnummer = (int) $_POST['postnummer'];
$medlem->dob = DateTime::createFromFormat('Y-m-d', $_POST['dob']);
$medlem->medlem_siden = DateTime::createFromFormat('Y-m-d', $_POST['medlem_siden']);
echo "Verified? ".($medlem->verifyMember()?"yes":"no")."<br>\n";
try {
echo "<pre>";
$medlem->persistMember();
echo "</pre>";
}
catch (InvalidArgumentException $e){
echo $e;
}
}
else {
$medlem = Medlem::getFromId($_POST['bruker_id']);
echo $medlem->fornavn." ".$medlem->etternavn."<br>\n";
foreach (Medlem::$stringNames as $felt){
echo "Oppdater $felt fra ".$medlem->{$felt};
if($medlem->set($felt, $_POST[$felt])){
echo " til ".$_POST[$felt];
}
echo "<br>\n";
}
foreach (Medlem::$intFields as $felt){
$medlem->set($felt, (int) $_POST[$felt]);
}
foreach (Medlem::$dateFields as $felt){
$medlem->set($felt, DateTime::createFromFormat('Y-m-d', $_POST[$felt]));
}
echo $medlem->fornavn." ".$medlem->etternavn."<br>\n";
echo "Medlem er ".($medlem->verifyMember()?"gyldig":"ugyldig")."<br>\n";
echo "Endrede verdier: ".implode(', ', $medlem->endret)."<br>\n";
echo "<br>\n";
echo "Medlem ikke oppdatert..<br>\n";
die();
}
}
?><!DOCTYPE html> ?><!DOCTYPE html>
<html lang="no"> <html lang="no">
<head> <head>
@ -14,19 +85,86 @@ include 'forberedelser.php';
<div class="container"> <div class="container">
<h1><?=title();?></h1> <h1><?=title();?></h1>
<h4><?=getNavigation();?></h4> <h4><?=getNavigation();?></h4>
<h2>Medlemsliste</h2> <h2>Registrering av nytt medlem</h2>
<?php </div>
echo hentPoststed(4614)."<br>\n"; <div class="container">
echo hentPoststed(4614)."<br>\n"; <?php
echo hentPoststed(4462)."<br>\n";
echo hentPoststed(4614)."<br>\n"; if(!empty($err)){
echo hentPoststed(4462)."<br>\n"; foreach ($err as $e){
echo hentPoststed(4614)."<br>\n"; echo "<p class='error'>".$e."</p>\n";
echo hentPoststed(4615)."<br>\n"; }
}
if(!empty($msg)){
foreach ($msg as $m){
echo "<p class='suksess'>".$m."</p>\n";
}
}
?> ?>
<form method="POST" action="index6_2.php">
<?php
// HVIS VI REDIGERER EN BRUKER ... (WIP)
if(isset($mid) && empty($err)){
foreach (array("fornavn", "etternavn", "adresse1", "adresse2", "postnummer", "poststed", "mobilnummer", "epost", "kjoenn", "interesser", "kursaktiviteter", "kontigentstatus") as $nkl){
$_POST[$nkl] = $_POST[$nkl] ?? $medlemmer[$mid]->{$nkl};
}
$_POST['dob'] = $_POST['dob'] ?? $medlemmer[$mid]->dob->format('Y-m-d');
$_POST['medlem_siden'] = $_POST['medlem_siden'] ?? $medlemmer[$mid]->medlem_siden->format("Y-m-d");
echo "<input type='hidden' name='bruker_id' value='$mid'>";
}
?>
<p>
<label>Fornavn:* <input type="text" name="fornavn" value="<?=$_POST['fornavn'] ?? '';?>"></label>
<label>Etternavn:* <input type="text" name="etternavn" value="<?=$_POST['etternavn'] ?? '';?>"></label>
</p>
<p>
<label>Adresselinje 1:* <input type="text" name="adresse1" value="<?=$_POST['adresse1'] ?? '';?>"></label><br>
<label>Adresselinje 2: <input type="text" name="adresse2" value="<?=$_POST['adresse2'] ?? '';?>"></label><br>
<label>Postnummer/Poststed:*
<input type="number" name="postnummer" min="0001" max="9999" value="<?=$_POST['postnummer'] ?? '';?>"><input type="text" name="poststed" value="<?=$_POST['poststed'] ?? '';?>">
</label>
</p>
<p>
<label>Mobilnummer: <input type="text" name="mobilnummer" value="<?=$_POST['mobilnummer'] ?? '';?>"></label><br>
<label>E-post:* <input type="text" name="epost" value="<?=$_POST['epost'] ?? '';?>"></label><br>
<label>Fødselsdato:* <input type="date" name="dob" value="<?=$_POST['dob'] ?? date('Y-m-d');?>"></label><br>
<label>
Kjønn:*
<select name="kjoenn">
<option value="0">-- Velg --</option>
<option <?=(@$_POST['kjoenn'] == "M"?SELECTED:'');?> value="M">Mann</option>
<option <?=(@$_POST['kjoenn'] == "F"?SELECTED:'');?> value="F">Kvinne</option>
<option <?=(@$_POST['kjoenn'] == "O"?SELECTED:'');?> value="O">Annet</option>
</select>
</label>
</p>
<p>
<label>Interesser:<br><textarea name="interesser"><?=$_POST['interesser'] ?? '';?></textarea></label>
</p>
<p>
<label>Kursaktiviteter:<br><textarea name="kursaktiviteter"><?=$_POST['kursaktiviteter'] ?? '';?></textarea></label>
</p>
<p>
<label>Medlem siden:* <input type="date" name="medlem_siden" value="<?=$_POST['medlem_siden'] ?? date('Y-m-d');?>"></label><br>
<label>
Kontigentstatus:*
<select name="kontigentstatus">
<option value="0">-- Velg --</option>
<option <?=(@$_POST['kontigentstatus'] == "BETALT"?SELECTED:'');?> value="BETALT">Betalt</option>
<option <?=(@$_POST['kontigentstatus'] == "IKKE_BETALT"?SELECTED:'');?> value="IKKE_BETALT">Ikke betalt</option>
</select>
</label>
</p>
<p>
<input type="submit" value="<?=(isset($mid)?"Rediger...":"Send inn...");?>">
</p>
</form>
</div> </div>
</body> </body>

BIN
modul6/index6_3-tom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

26
modul6/index6_3.php Normal file
View File

@ -0,0 +1,26 @@
<?php include '../common.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>Sikkerhetskopi</h2>
<p>I denne oppgaven skal det lagres en sikkerhetskopi av databasen. Denne sikkerhetskopien har jeg da tatt av alle tabellene vi har satt opp til prosjektet dette tidspunktet.</p>
<img src="index6_3.png" alt="ER-diagram" style="">
<p>Sikkerhetskopien er laget i phpMyAdmin.</p>
<p>Sikkerhetskopien er lagret i <a href="medlemsprosjekt.sql">medlemsprosjekt.sql</a></p>
<p>Deretter ble databasen tømt via DROP-spørringer.</p>
<img src="index6_3-tom.png" alt="Tom database" style="">
<p>Importen av databasen gikk fint igjen gjennom PMAs Import funksjon.</p>
<br><br><br>
</div>
</body>
</html>

BIN
modul6/index6_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

60
modul6/index6_4.php Normal file
View File

@ -0,0 +1,60 @@
<?php
include '../common.php';
include 'forberedelser.php';
ini_set('error_reporting', 1);
ini_set('display_errors',1);
?><!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>Aktiviteter</h2>
</div>
<?php
$aktiviteter = hentAktivitet();
if(!empty($aktiviteter)){ ?>
<div>
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Navn</th>
<th>Beskrivelse</th>
<th>Ansvarlig</th>
<th>Aktivitetens start</th>
<th>Aktivitetens slutt</th>
</tr>
</thead>
<tbody>
<?php
foreach($aktiviteter as $aktivitet){
echo "<tr>\n";
echo " <td>".$aktivitet->dbid."</td>\n";
echo " <td>".$aktivitet->navn."</td>\n";
echo " <td>".$aktivitet->beskrivelse."</td>\n";
echo " <td>".$aktivitet->ansvarligId."</td>\n";
echo " <td>".(($temp=$aktivitet->start)?$temp->format('d. M Y H:i'):'')."</td>\n";
echo " <td>".(($temp=$aktivitet->stopp)?$temp->format('d. M Y H:i'):'')."</td>\n";
echo "</tr>\n";
}
?>
</tbody>
</table>
</div>
<?php } else { ?>
<?php } ?>
</body>
</html>

331
modul6/medlemsprosjekt.sql Normal file
View File

@ -0,0 +1,331 @@
-- phpMyAdmin SQL Dump
-- version 5.1.1
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Nov 17, 2021 at 01:24 PM
-- Server version: 10.6.5-MariaDB
-- PHP Version: 7.4.25
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `medlemsprosjekt`
--
-- --------------------------------------------------------
--
-- Table structure for table `Aktivitet`
--
CREATE TABLE `Aktivitet` (
`aktivitetId` int(11) NOT NULL,
`navn` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL,
`beskrivelse` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT ' ',
`ansvarligId` int(11) NOT NULL,
`start` datetime NOT NULL,
`slutt` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `Aktivitet`
--
INSERT INTO `Aktivitet` (`aktivitetId`, `navn`, `beskrivelse`, `ansvarligId`, `start`, `slutt`) VALUES
(1, 'Kino', 'Kinodag i kristiansand woho', 1, '2020-07-07 19:00:00', '2020-07-07 21:00:00'),
(2, 'Tur', 'Tur til kina', 1, '2021-12-07 19:00:00', '2021-07-07 21:00:00'),
(3, 'Turnering', 'Fotball Turnering', 1, '2022-07-07 19:00:00', '2022-07-07 21:00:00');
-- --------------------------------------------------------
--
-- Table structure for table `Bruker`
--
CREATE TABLE `Bruker` (
`brukerId` int(11) NOT NULL,
`epost` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`passord` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL,
`ckey` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ',
`ctime` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' '
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `Bruker`
--
INSERT INTO `Bruker` (`brukerId`, `epost`, `passord`, `ckey`, `ctime`) VALUES
(1, 'johbirk00@gmail.com', '$2y$10$btZKVjCywJL0v5vky/r8yeYf/H5zWkfzyGghygHZr0i4nZBGrc88i', '', '');
-- --------------------------------------------------------
--
-- Table structure for table `Interesse`
--
CREATE TABLE `Interesse` (
`interesseId` int(11) NOT NULL,
`navn` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `Interesse`
--
INSERT INTO `Interesse` (`interesseId`, `navn`) VALUES
(2, 'Bading'),
(3, 'Dansing'),
(1, 'Fotball'),
(4, 'Grilling');
-- --------------------------------------------------------
--
-- Table structure for table `Interesse_register`
--
CREATE TABLE `Interesse_register` (
`medlemId` int(11) NOT NULL,
`interesseId` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `Interesse_register`
--
INSERT INTO `Interesse_register` (`medlemId`, `interesseId`) VALUES
(1, 1),
(1, 2),
(2, 1),
(2, 3),
(3, 1),
(3, 3);
-- --------------------------------------------------------
--
-- Table structure for table `Medlem`
--
CREATE TABLE `Medlem` (
`medlemId` int(11) NOT NULL,
`fornavn` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL,
`etternavn` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL,
`adresse` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL,
`postnummer` int(4) NOT NULL,
`mobilnummer` varchar(12) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`epost` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`dob` date NOT NULL,
`kjoenn` enum('M','F','O') COLLATE utf8mb4_unicode_ci NOT NULL,
`kontigentStatus` enum('BETALT','IKKE_BETALT') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'IKKE_BETALT',
`medlemStart` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `Medlem`
--
INSERT INTO `Medlem` (`medlemId`, `fornavn`, `etternavn`, `adresse`, `postnummer`, `mobilnummer`, `epost`, `dob`, `kjoenn`, `kontigentStatus`, `medlemStart`) VALUES
(1, 'Johannes', 'Birkeland', 'Teian 6', 4462, NULL, 'johannesbi@uia.no', '2000-11-19', 'M', 'BETALT', '2019-11-11'),
(2, 'Per', 'Persen', 'Per Gaten', 4462, NULL, 'perper@uia.no', '2000-11-19', 'O', 'BETALT', '2019-11-11'),
(3, 'Lina', 'Ridley', 'En gate i krs', 4614, NULL, 'linaridley@uia.no', '2002-07-26', 'F', 'BETALT', '2019-11-11'),
(7, 'Eirik', 'Svag', 'Fergefjell\n', 4614, NULL, 'hei@padeg.no', '1996-01-18', 'M', 'BETALT', '2021-11-09'),
(8, 'Kai', 'Havn', 'Havnegata 1\n', 4606, NULL, 'kai@havn.no', '1905-01-01', 'O', 'BETALT', '2021-09-10');
-- --------------------------------------------------------
--
-- Table structure for table `Postnummer`
--
CREATE TABLE `Postnummer` (
`postnummer` int(4) NOT NULL,
`poststed` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `Postnummer`
--
INSERT INTO `Postnummer` (`postnummer`, `poststed`) VALUES
(1337, 'Sandvika'),
(4462, 'Hovsherad'),
(4606, 'Kristiansand'),
(4614, 'Kristiansand');
-- --------------------------------------------------------
--
-- Table structure for table `Rolle`
--
CREATE TABLE `Rolle` (
`rolleId` int(11) NOT NULL,
`rolleNavn` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `Rolle`
--
INSERT INTO `Rolle` (`rolleId`, `rolleNavn`) VALUES
(2, 'KURSANSVARLIG'),
(1, 'LEDER');
-- --------------------------------------------------------
--
-- Table structure for table `Rolle_register`
--
CREATE TABLE `Rolle_register` (
`medlemId` int(11) NOT NULL,
`rolleId` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `Rolle_register`
--
INSERT INTO `Rolle_register` (`medlemId`, `rolleId`) VALUES
(1, 1),
(1, 2),
(2, 2);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `Aktivitet`
--
ALTER TABLE `Aktivitet`
ADD PRIMARY KEY (`aktivitetId`),
ADD KEY `ansvarligId` (`ansvarligId`);
--
-- Indexes for table `Bruker`
--
ALTER TABLE `Bruker`
ADD PRIMARY KEY (`brukerId`),
ADD UNIQUE KEY `epost` (`epost`);
--
-- Indexes for table `Interesse`
--
ALTER TABLE `Interesse`
ADD PRIMARY KEY (`interesseId`),
ADD UNIQUE KEY `navn` (`navn`);
--
-- Indexes for table `Interesse_register`
--
ALTER TABLE `Interesse_register`
ADD PRIMARY KEY (`medlemId`,`interesseId`),
ADD KEY `interesseId` (`interesseId`);
--
-- Indexes for table `Medlem`
--
ALTER TABLE `Medlem`
ADD PRIMARY KEY (`medlemId`),
ADD UNIQUE KEY `epost` (`epost`),
ADD KEY `postnummer` (`postnummer`);
--
-- Indexes for table `Postnummer`
--
ALTER TABLE `Postnummer`
ADD PRIMARY KEY (`postnummer`);
--
-- Indexes for table `Rolle`
--
ALTER TABLE `Rolle`
ADD PRIMARY KEY (`rolleId`),
ADD UNIQUE KEY `rolleNavn` (`rolleNavn`);
--
-- Indexes for table `Rolle_register`
--
ALTER TABLE `Rolle_register`
ADD PRIMARY KEY (`medlemId`,`rolleId`),
ADD KEY `rolleId` (`rolleId`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `Aktivitet`
--
ALTER TABLE `Aktivitet`
MODIFY `aktivitetId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT for table `Bruker`
--
ALTER TABLE `Bruker`
MODIFY `brukerId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT for table `Interesse`
--
ALTER TABLE `Interesse`
MODIFY `interesseId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
--
-- AUTO_INCREMENT for table `Medlem`
--
ALTER TABLE `Medlem`
MODIFY `medlemId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
--
-- AUTO_INCREMENT for table `Rolle`
--
ALTER TABLE `Rolle`
MODIFY `rolleId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- Constraints for dumped tables
--
--
-- Constraints for table `Aktivitet`
--
ALTER TABLE `Aktivitet`
ADD CONSTRAINT `Aktivitet_ibfk_1` FOREIGN KEY (`ansvarligId`) REFERENCES `Medlem` (`medlemId`);
--
-- Constraints for table `Interesse_register`
--
ALTER TABLE `Interesse_register`
ADD CONSTRAINT `Interesse_register_ibfk_1` FOREIGN KEY (`medlemId`) REFERENCES `Medlem` (`medlemId`),
ADD CONSTRAINT `Interesse_register_ibfk_2` FOREIGN KEY (`interesseId`) REFERENCES `Interesse` (`interesseId`);
--
-- Constraints for table `Medlem`
--
ALTER TABLE `Medlem`
ADD CONSTRAINT `Medlem_ibfk_1` FOREIGN KEY (`postnummer`) REFERENCES `Postnummer` (`postnummer`);
--
-- Constraints for table `Rolle_register`
--
ALTER TABLE `Rolle_register`
ADD CONSTRAINT `Rolle_register_ibfk_1` FOREIGN KEY (`medlemId`) REFERENCES `Medlem` (`medlemId`),
ADD CONSTRAINT `Rolle_register_ibfk_2` FOREIGN KEY (`rolleId`) REFERENCES `Rolle` (`rolleId`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;