01 | Sesja letnia 2022
Arkusz
Operacje na bazie danych
Jeżeli nie wiesz jak utworzyć i zaimportować bazę danych, przejdź tutaj.
UWAGA: Informacje o bazie danych
Zwróć uwagę na informacje zamieszczone powyżej schematu bazy danych, dowiesz się tam co oznaczają wartości pól numerycznych w danych polach.
kw1: SELECT id, nazwa, wystepowanie FROM Ryby WHERE styl_zycia = 1;
kw2: SELECT Ryby_id, wymiar_ochronny FROM Okres_ochronny WHERE wymiar_ochronny < 30;
kw3: SELECT nazwa, akwen, wojewodztwo FROM Ryby INNER JOIN Lowisko ON Ryby.id = Lowisko.Ryby_id WHERE rodzaj = 3;
kw4: ALTER TABLE Ryby ADD dobowy_limit TINYINT UNSIGNED;
WSKAZÓWKA: Typy numeryczne w MySQL
W języku SQL wyróżnia się wiele numerycznych typów danych. Jednym z nich jest TINYINT
, mogący przyjąć tylko 256 wartości. Dodanie atrybutu UNSIGNED
pozwala przyjmować tylko wartości nieujemne (0-255).
Witryna internetowa
WSKAZÓWKA: Emmety w VS Code
Edytor kodu Visual Studio Code ma wbudowane wiele przydatnych funkcji takich jak IntelliSense czy Emmet, które ułatwiają pracę z kodem. Edytując plik HTML mamy możliwość wygenerowania wstępnego szablonu strony poprzez wpisanie znaku !
.
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wędkowanie</title>
<link rel="stylesheet" href="styl_1.css">
</head>
<body>
<header> <!-- Blok banera -->
<h1>Portal dla wędkarzy</h1>
</header>
<main> <!-- Kontener na bloki lewe i prawy-->
<section> <!-- Kontener na dwa bloki lewe -->
<div> <!-- Blok lewy 1. -->
<h3>Ryby zamieszkujące rzeki</h3>
<ol>
<!-- <?php
Miejsce na skrypt 1.
?> -->
</ol>
</div>
<div> <!-- Blok lewy 2. -->
<h3>Ryby drapieżne naszych wód</h3>
<table>
<tr>
<th>L.p.</th>
<th>Gatunek</th>
<th>Występowanie</th>
</tr>
<!-- <?php
Miejsce na skrypt 2.
?> -->
</table>
</div>
</section>
<section> <!-- Blok prawy -->
<img src="ryba1.jpg" alt="Sum">
<a href="kwerendy.txt">Pobierz kwerendy</a>
</section>
</main>
<footer>
<p>Stronę wykonał: Wojciech Chrzan Worshox</p>
</footer>
</body>
</html>
/* Formatowanie z egzaminu */
* {
font-family: Helvetica;
}
header, footer {
background-color: #008387;
color: white;
padding: 5px;
font-size: 130%;
text-align: center;
}
section div {
background-color: #EFEFEF;
width: 55%;
}
section div:first-child {
height: 150px;
}
section div:last-child {
height: 300px;
}
section:last-child {
background-color: #4FB3BF;
width: 45%;
height: 450px;
text-align: center;
}
img {
box-shadow: 10px 10px 7px DimGray;
margin: 20px;
}
table, th, td {
border: 1px solid #4FB3BF;
border-collapse: collapse;
}
table {
margin: auto;
width: 80%;
}
th, td {
padding: 4px;
}
tr:hover {
background-color: #4FB3BF;
}
/* Dodatkowe formatowanie do poprawnego układu bloków */
main {
display: flex;
}
section:first-child {
width: 55%;
}
section div {
width: 100%;
}
h3 {
margin-block: 0;
}
Skrypt połączenia z bazą
UWAGA: Lokalizacja skryptu
Zawsze zwracaj uwagę na to, w którym miejscu kodu strony ma się znajdować skrypt PHP, a także na to, w jakiej formie ma zwracać wyniki, np. element listy lub wiersz tabeli.
$pdo = new PDO('mysql:host=localhost;dbname=wedkowanie', 'root', '');
$sql = 'SELECT nazwa, akwen, wojewodztwo FROM Ryby INNER JOIN Lowisko ON Ryby.id = Lowisko.Ryby_id WHERE rodzaj = 3;';
$stmt = $pdo->prepare($sql);
$stmt->execute();
while($rekord = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<li>{$rekord['nazwa']} pływa w rzece {$rekord['akwen']}, {$rekord['wojewodztwo']}</li>";
}
$sql = 'SELECT id, nazwa, wystepowanie FROM Ryby WHERE styl_zycia = 1;';
$stmt = $pdo->prepare($sql);
$stmt->execute();
while($rekord = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<tr> <td>{$rekord['id']}</td> <td>{$rekord['nazwa']}</td> <td>{$rekord[wystepowanie]}</td> </tr>";
}
unset($pdo);
Opracował: Wojciech Chrzan aka Worshox