Ovningar

Ovningar sorterade per kurs och kategori

Listan uppdateras automatiskt genom att PHP laser mapparna i excersises. Klicka pa "Visa kallkod" for att oppna en saker kodvisare for larare.

Ovningslista

Webbserverprogrammering

databas

  • createtable.php

    Webbserverprogrammering/databas/createtable.php

    689 B 2026-03-27 08:33 Visa kallkod
  • dbconnection.php

    Webbserverprogrammering/databas/dbconnection.php

    885 B 2026-03-27 08:33 Visa kallkod
  • deletepost.php

    Webbserverprogrammering/databas/deletepost.php

    1,68 KB 2026-03-27 08:33 Visa kallkod
  • deletetable.php

    Webbserverprogrammering/databas/deletetable.php

    522 B 2026-03-27 08:33 Visa kallkod
  • insertdefaultposts.php

    Webbserverprogrammering/databas/insertdefaultposts.php

    1,26 KB 2026-03-27 08:33 Visa kallkod
  • insertpost.php

    Webbserverprogrammering/databas/insertpost.php

    1,64 KB 2026-03-27 08:33 Visa kallkod
  • createtable.php

    Webbserverprogrammering/databas/ovn_db1/createtable.php

    877 B 2026-03-27 08:33 Visa kallkod
  • deletepost.php

    Webbserverprogrammering/databas/ovn_db1/deletepost.php

    2,12 KB 2026-03-27 08:33 Visa kallkod
  • index.html

    Webbserverprogrammering/databas/ovn_db1/index.html

    787 B 2026-03-27 08:33 Visa kallkod
  • insertpost.php

    Webbserverprogrammering/databas/ovn_db1/insertpost.php

    1,99 KB 2026-03-27 08:33 Visa kallkod
  • selectposts.php

    Webbserverprogrammering/databas/ovn_db1/selectposts.php

    1,81 KB 2026-03-27 08:33 Visa kallkod
  • showtable.php

    Webbserverprogrammering/databas/ovn_db1/showtable.php

    1,32 KB 2026-03-27 08:33 Visa kallkod
  • updatepost.php

    Webbserverprogrammering/databas/ovn_db1/updatepost.php

    4,72 KB 2026-03-27 08:33 Visa kallkod
  • admin.php

    Webbserverprogrammering/databas/ovn_db2/admin.php

    206 B 2026-03-27 08:33 Visa kallkod
  • adduser.php

    Webbserverprogrammering/databas/ovn_db2/admin/adduser.php

    2,47 KB 2026-03-27 08:33 Visa kallkod
  • createtable.php

    Webbserverprogrammering/databas/ovn_db2/admin/createtable.php

    1,08 KB 2026-03-27 08:33 Visa kallkod
  • deleteuser.php

    Webbserverprogrammering/databas/ovn_db2/admin/deleteuser.php

    2,05 KB 2026-03-27 08:33 Visa kallkod
  • edituser.php

    Webbserverprogrammering/databas/ovn_db2/admin/edituser.php

    5,25 KB 2026-03-27 08:33 Visa kallkod
  • home.php

    Webbserverprogrammering/databas/ovn_db2/home.php

    939 B 2026-03-27 08:33 Visa kallkod
  • login.php

    Webbserverprogrammering/databas/ovn_db2/login.php

    2,11 KB 2026-03-27 08:33 Visa kallkod
  • logout.php

    Webbserverprogrammering/databas/ovn_db2/logout.php

    106 B 2026-03-27 08:33 Visa kallkod
  • selectposts.php

    Webbserverprogrammering/databas/selectposts.php

    1,63 KB 2026-03-27 08:33 Visa kallkod
  • updatepost.php

    Webbserverprogrammering/databas/updatepost.php

    4,08 KB 2026-03-27 08:33 Visa kallkod

funktioner

  • ovn_funk1.php

    Webbserverprogrammering/funktioner/ovn_funk1.php

    268 B 2026-03-27 08:33 Visa kallkod
  • ovn_funk2.php

    Webbserverprogrammering/funktioner/ovn_funk2.php

    351 B 2026-03-27 08:33 Visa kallkod
  • ovn_funk3.php

    Webbserverprogrammering/funktioner/ovn_funk3.php

    402 B 2026-03-27 08:33 Visa kallkod
  • ovn_funk4.php

    Webbserverprogrammering/funktioner/ovn_funk4.php

    661 B 2026-03-27 08:33 Visa kallkod
  • ovn_funk5.php

    Webbserverprogrammering/funktioner/ovn_funk5.php

    661 B 2026-03-27 08:33 Visa kallkod

grunder

  • ovn_gr1.php

    Webbserverprogrammering/grunder/ovn_gr1.php

    296 B 2026-03-27 08:33 Visa kallkod
  • ovn_gr2.php

    Webbserverprogrammering/grunder/ovn_gr2.php

    461 B 2026-03-27 08:33 Visa kallkod
  • ovn_gr3.php

    Webbserverprogrammering/grunder/ovn_gr3.php

    409 B 2026-03-27 08:33 Visa kallkod
  • ovn_gr4.php

    Webbserverprogrammering/grunder/ovn_gr4.php

    339 B 2026-03-27 08:33 Visa kallkod
  • ovn_gr5.php

    Webbserverprogrammering/grunder/ovn_gr5.php

    406 B 2026-03-27 08:33 Visa kallkod
  • ovn_gr6.php

    Webbserverprogrammering/grunder/ovn_gr6.php

    599 B 2026-03-27 08:33 Visa kallkod
  • ovn_gr7.php

    Webbserverprogrammering/grunder/ovn_gr7.php

    607 B 2026-03-27 08:33 Visa kallkod

inlamningar

  • formular.php

    Webbserverprogrammering/inlamningar/formular.php

    7,08 KB 2026-03-27 08:33 Visa kallkod

klasser

  • ovn_klass1.php

    Webbserverprogrammering/klasser/ovn_klass1.php

    831 B 2026-03-27 08:33 Visa kallkod
  • ovn_klass2.php

    Webbserverprogrammering/klasser/ovn_klass2.php

    737 B 2026-03-27 08:33 Visa kallkod
  • ovn_klass3.php

    Webbserverprogrammering/klasser/ovn_klass3.php

    1,12 KB 2026-03-27 08:33 Visa kallkod

Kodvisare

Visar fil: Webbserverprogrammering/inlamningar/formular.php

   1 | <!DOCTYPE html>
   2 | <html lang="en">
   3 | <head>
   4 |     <meta charset="UTF-8">
   5 |     <meta name="viewport" content="width=device-width, initial-scale=1.0">
   6 |     <title>Formulär</title>
   7 | 	<style>
   8 | 		.correct { background-color: #c8e6c9; padding:4px; }
   9 | 		.wrong { background-color: #ffcdd2; padding:4px; }
  10 | 		.option { padding:4px; }
  11 | 	</style>
  12 | </head>
  13 | <body>
  14 | 	<?php
  15 | 	error_reporting(-1); // Report all type of errors
  16 | 	ini_set('display_errors', 1); // Display all errors
  17 | 	ini_set('output_buffering', 0); // Do not buffer outputs, write directly
  18 | 	?>
  19 | 
  20 | 	<h1>Formulär</h1>
  21 | 	<?php
  22 | 	mb_language("uni");
  23 | 	mb_internal_encoding("UTF-8");
  24 | 	$logged_in = false;
  25 | 	$password = "Password123";
  26 | 	$entered_password = "";
  27 | 	$name = "";
  28 | 	$curr_question = 1;
  29 | 	$answers_csv = ""; // kommaseparerade val (index per fråga)
  30 | 	if (isset($_POST["curr_question"])) {
  31 | 		$curr_question = intval($_POST["curr_question"]);
  32 | 	}
  33 | 	if (isset($_POST["answers"])) {
  34 | 		$answers_csv = trim($_POST["answers"]);
  35 | 	}
  36 | 	if (isset($_POST["password"]) && !empty($_POST["password"])) {
  37 | 		if ($_POST["password"] === $password) {
  38 | 			$logged_in = true;
  39 | 			$entered_password = $_POST["password"];
  40 | 		} else {
  41 | 			echo "<p>Fel lösenord!</p>";
  42 | 		}
  43 | 	} elseif (isset($_POST["password"]) && empty($_POST["password"])) {
  44 | 		echo "<p>Vänligen ange ett lösenord.</p>";
  45 | 	}
  46 | 
  47 | 	// Frågor: text, alternativ, korrekt index (0-baserat)
  48 | 	$questions = [
  49 | 		[
  50 | 			'q' => 'Vad är 2+2?',
  51 | 			'options' => ['0','2','4','22'],
  52 | 			'correct' => 2
  53 | 		],
  54 | 		[
  55 | 			'q' => 'Var ligger VGY?',
  56 | 			'options' => ['Gullmars','Varmdo','Lulea','Manen'],
  57 | 			'correct' => 0
  58 | 		],
  59 | 		[
  60 | 			'q' => 'Vem är Tobias?',
  61 | 			'options' => ['Reinkarnation av Olof Palme','Rektor','Webblarare','Popstjarna'],
  62 | 			'correct' => 2
  63 | 		],
  64 | 		[
  65 | 			'q' => 'Vem grundade IKEA?',
  66 | 			'options' => ['Nicklas','Ingvar Kamprad','Folke Lundin','Rektor Kajsa'],
  67 | 			'correct' => 1
  68 | 		]
  69 | 	];
  70 | 	$total_questions = count($questions);
  71 | 
  72 | 	// Hantera inskickat svar (när en fråga besvaras)
  73 | 	if ($logged_in) {
  74 | 		if (!empty($_POST["name"])) {
  75 | 			$name = $_POST["name"];
  76 | 		} elseif (isset($_POST["name"])) {
  77 | 			$name = $_POST["name"]; // även om tomt (sällsynt)
  78 | 		}
  79 | 
  80 | 		// Om ett svar för aktuell fråga skickats med
  81 | 		if (isset($_POST["answer"]) && $_POST["answer"] !== "") {
  82 | 			// append chosen index till answers_csv
  83 | 			$chosen = intval($_POST["answer"]);
  84 | 			if ($answers_csv === "") {
  85 | 				$answers_csv = $chosen;
  86 | 			} else {
  87 | 				$answers_csv .= "," . $chosen;
  88 | 			}
  89 | 			$curr_question++; // gå vidare till nästa fråga (oavsett rätt/fel)
  90 | 		}
  91 | 
  92 | 		echo "<p>Du är inloggad!</p>";
  93 | 		if ($name === "") {
  94 | 			// Fråga efter namn först
  95 | 			echo "<form method='post' action=''>";
  96 | 			echo "<label for='name'>Ange ditt namn: </label>";
  97 | 			echo "<input type='text' id='name' name='name' required><br><br>";
  98 | 			echo "<input type='submit' value='Skicka'><br><br>";
  99 | 			echo "<input type='hidden' name='password'  value='".htmlspecialchars($entered_password, ENT_QUOTES)."'>";
 100 | 			echo "</form>";
 101 | 		} else {
 102 | 			echo "<p>Hej " . htmlspecialchars($name, ENT_QUOTES) . "!</p>";
 103 | 
 104 | 			// Om vi är klara med alla frågor -> visa resultat och skicka mail
 105 | 			if ($curr_question > $total_questions) {
 106 | 				// Räkna ut resultat
 107 | 				$answers_arr = array_filter(array_map('intval', explode(',', $answers_csv)), function($v){ return $v !== null; });
 108 | 				$score = 0;
 109 | 				$result_lines = [];
 110 | 				for ($i = 0; $i < $total_questions; $i++) {
 111 | 					$correct_index = $questions[$i]['correct'];
 112 | 					$chosen_index = isset($answers_arr[$i]) ? $answers_arr[$i] : null;
 113 | 					$is_correct = ($chosen_index !== null && $chosen_index === $correct_index);
 114 | 					if ($is_correct) $score++;
 115 | 					$result_lines[] = [
 116 | 						'question' => $questions[$i]['q'],
 117 | 						'options' => $questions[$i]['options'],
 118 | 						'correct' => $correct_index,
 119 | 						'chosen' => $chosen_index
 120 | 					];
 121 | 				}
 122 | 
 123 | 				// Visa resultatöversikt
 124 | 				echo "<h2>Tack för dina svar!</h2>";
 125 | 				echo "<p>Du fick $score av $total_questions rätt.</p>";
 126 | 
 127 | 				// Visa varje fråga med markerade alternativ
 128 | 				foreach ($result_lines as $idx => $rl) {
 129 | 					echo "<div style='margin-bottom:12px;'>";
 130 | 					echo "<h3>Fråga " . ($idx+1) . ": " . htmlspecialchars($rl['question'], ENT_QUOTES) . "</h3>";
 131 | 					foreach ($rl['options'] as $opt_idx => $opt_text) {
 132 | 						$clas = 'option';
 133 | 						if ($opt_idx === $rl['correct']) $clas = 'correct';
 134 | 						if ($rl['chosen'] !== null && $opt_idx === $rl['chosen'] && $opt_idx !== $rl['correct']) $clas = 'wrong';
 135 | 						echo "<div class='". $clas ."'>" . htmlspecialchars($opt_text, ENT_QUOTES) . "</div>";
 136 | 					}
 137 | 					echo "</div>";
 138 | 				}
 139 | 
 140 | 				// Skicka mail med resultat (ändra mottagaradress efter behov)
 141 | 				$result_email = 'lovhol23@varmdogymnasium.se'; // <-- byt till riktig adress på servern
 142 | 				$subject = "Quizresultat: " . $name;
 143 | 				$body = "Namn: " . $name . "\n";
 144 | 				$body .= "Resultat: $score / $total_questions\n\n";
 145 | 				foreach ($result_lines as $i => $rl) {
 146 | 					$body .= "Fraga " . ($i+1) . ": " . $rl['question'] . "\n";
 147 | 					foreach ($rl['options'] as $o_idx => $o_text) {
 148 | 						$mark = ($o_idx === $rl['correct']) ? "(RATT)" : "";
 149 | 						$chosenMark = ($rl['chosen'] !== null && $o_idx === $rl['chosen'] && $o_idx !== $rl['correct']) ? "(DITT VAL - FEL)" : "";
 150 | 						$body .= "- " . $o_text . " $mark $chosenMark\n";
 151 | 					}
 152 | 					$body .= "\n";
 153 | 				}
 154 | 				// mail kan misslyckas på vissa testmiljöer; vi försöker skicka men visar inget fel till användaren
 155 | 				if (mb_send_mail('lovhol23@varmdogymnasium.se', $subject, $body)) {
 156 | 					echo "Meddelandet skickades!";
 157 | 				} else {
 158 | 					echo "Misslyckades att skicka meddelandet.";
 159 | 				}
 160 | 
 161 | 				// Möjlighet att starta om
 162 | 				echo "<form method='get' action=''>";
 163 | 				echo "<input type='submit' value='Gör om quizet'>";
 164 | 				echo "</form>";
 165 | 
 166 | 			} else {
 167 | 				// Visa aktuell fråga
 168 | 				$qindex = $curr_question - 1;
 169 | 				$question = $questions[$qindex];
 170 | 				echo "<h2>" . htmlspecialchars($question['q'], ENT_QUOTES) . "</h2>";
 171 | 				echo "<form method='post' action=''>";
 172 | 				echo "<label for='answer'>Välj svar: </label>";
 173 | 				echo "<select name='answer' id='answer'>";
 174 | 				foreach ($question['options'] as $opt_idx => $opt_text) {
 175 | 					echo "<option value='$opt_idx'>" . htmlspecialchars($opt_text, ENT_QUOTES) . "</option>";
 176 | 				}
 177 | 				echo "</select>";
 178 | 				echo "<input type='submit' value='Skicka'><br><br>";
 179 | 				// Skicka med sparade värden
 180 | 				echo "<input type='hidden' name='password'  value='".htmlspecialchars($entered_password, ENT_QUOTES)."'>";
 181 | 				echo "<input type='hidden' name='name'  value='".htmlspecialchars($name, ENT_QUOTES)."'>";
 182 | 				echo "<input type='hidden' name='curr_question' value='".htmlspecialchars($curr_question, ENT_QUOTES)."'>";
 183 | 				echo "<input type='hidden' name='answers' value='".htmlspecialchars($answers_csv, ENT_QUOTES)."'>";
 184 | 				echo "</form>";
 185 | 			}
 186 | 		}
 187 | 	} else {
 188 | 		// Inloggningsformulär
 189 | 		echo "<form method='post' action=''>";
 190 | 		echo "<label for='password'>Lösenord: </label>";
 191 | 		echo "<input type='password' id='password' name='password' required>";
 192 | 		echo "<input type='submit' value='Logga in'>";
 193 | 		echo "</form>";
 194 | 	}
 195 | 	?>
 196 | </body>
 197 | </html>