Modul 6 WIP
parent
1a9d4cf194
commit
7e8252f3a5
|
@ -3,3 +3,4 @@
|
|||
modul0
|
||||
*.zip
|
||||
index*_6*
|
||||
pma/
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
require 'database.php';
|
||||
|
||||
DEFINE('SELECTED', 'selected');
|
||||
$tabellSQL = "
|
||||
CREATE OR REPLACE TABLE Postnummer (
|
||||
postnummer INT(4) NOT NULL PRIMARY KEY,
|
||||
|
@ -13,6 +14,7 @@ CREATE OR REPLACE TABLE Medlem (
|
|||
etternavn VARCHAR(40) NOT NULL,
|
||||
adresse VARCHAR(40) NOT NULL,
|
||||
postnummer INT(4) NOT NULL,
|
||||
mobilnummer VARCHAR(12),
|
||||
epost VARCHAR(100) NOT NULL UNIQUE,
|
||||
dob DATE NOT NULL,
|
||||
kjoenn ENUM('M', 'F', 'O') NOT NULL,
|
||||
|
@ -31,7 +33,11 @@ function getPdoConn(): PDO {
|
|||
}
|
||||
|
||||
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 string $fornavn = '';
|
||||
public string $etternavn = '';
|
||||
|
@ -39,6 +45,7 @@ class Medlem {
|
|||
public string $adresse2 = '';
|
||||
public int $postnummer;
|
||||
public string $poststed = '';
|
||||
public string $mobilnummer = '';
|
||||
public string $epost = '';
|
||||
public DateTime $dob;
|
||||
public string $kjoenn = '';
|
||||
|
@ -46,20 +53,101 @@ class Medlem {
|
|||
public string $kursaktiviteter = '';
|
||||
public DateTime $medlem_siden;
|
||||
public string $kontigentstatus = '';
|
||||
public $endret = array();
|
||||
|
||||
public static function getFromId($dbid): Medlem {
|
||||
return hentMedlem($dbid);
|
||||
}
|
||||
|
||||
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){
|
||||
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): string {
|
||||
|
||||
function hentPoststed($postnummer) {
|
||||
global $poststed;
|
||||
|
||||
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;
|
||||
}
|
|
@ -17,58 +17,15 @@ include 'forberedelser.php';
|
|||
<h2>Medlemsliste</h2>
|
||||
|
||||
<?php
|
||||
// Tom matrise som skal holde Medlem-objekter.
|
||||
$medlemmer = array();
|
||||
|
||||
// Sidetall, i tilfelle det er kjempemange medlemmer. (Standard 20 per side, side 1)
|
||||
$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;
|
||||
}
|
||||
// Se funkjson i forberedelser.php
|
||||
$medlemmer = hentMedlemmer($_GET['size'] ?? 20, $_GET['page'] ?? 1);
|
||||
|
||||
?>
|
||||
</div>
|
||||
|
|
|
@ -1,8 +1,79 @@
|
|||
<?php
|
||||
include '../common.php';
|
||||
|
||||
include '../common.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>
|
||||
<html lang="no">
|
||||
<head>
|
||||
|
@ -14,19 +85,86 @@ include 'forberedelser.php';
|
|||
<div class="container">
|
||||
<h1><?=title();?></h1>
|
||||
<h4><?=getNavigation();?></h4>
|
||||
<h2>Medlemsliste</h2>
|
||||
<h2>Registrering av nytt medlem</h2>
|
||||
|
||||
<?php
|
||||
</div>
|
||||
|
||||
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 class="container">
|
||||
<?php
|
||||
|
||||
if(!empty($err)){
|
||||
foreach ($err as $e){
|
||||
echo "<p class='error'>".$e."</p>\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>
|
||||
|
||||
</body>
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
|
@ -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 på 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>
|
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
|
@ -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>
|
|
@ -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 */;
|
Loading…
Reference in New Issue