Rozwiązanie - Egzamin Praktyczny INF.03
Arkusz INF.03-03-24.06-SG - Czerwiec 2024 - Wersja #03
Skrypt: PHP
Baza Danych:
Powiązana zawartość
Plik rzeki.sql
-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Paź 11, 2024 at 06:12 PM
-- Wersja serwera: 10.4.32-MariaDB
-- Wersja PHP: 8.2.12
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: `rzeki`
--
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `pomiary`
--
CREATE TABLE `pomiary` (
`id` int(10) UNSIGNED NOT NULL,
`wodowskazy_id` int(10) UNSIGNED NOT NULL,
`dataPomiaru` date DEFAULT NULL,
`stanWody` int(10) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Dumping data for table `pomiary`
--
INSERT INTO `pomiary` (`id`, `wodowskazy_id`, `dataPomiaru`, `stanWody`) VALUES
(1, 1, '2022-05-05', 100),
(2, 1, '2022-05-06', 120),
(3, 2, '2022-05-05', 240),
(4, 2, '2022-05-06', 240),
(5, 3, '2022-05-05', 300),
(6, 3, '2022-05-06', 300),
(7, 4, '2022-05-05', 120),
(8, 4, '2022-05-06', 130),
(9, 5, '2022-05-05', 100),
(10, 5, '2022-05-06', 100),
(11, 6, '2022-05-05', 200),
(12, 6, '2022-05-06', 250),
(13, 7, '2022-05-05', 90),
(14, 7, '2022-05-06', 93),
(15, 8, '2022-05-05', 100),
(16, 8, '2022-05-06', 60),
(17, 9, '2022-05-05', 170),
(18, 9, '2022-05-06', 200),
(19, 10, '2022-05-05', 100),
(20, 10, '2022-05-06', 100),
(21, 11, '2022-05-05', 200),
(22, 11, '2022-05-06', 250),
(23, 12, '2022-05-05', 340),
(24, 12, '2022-05-06', 360),
(25, 13, '2022-05-05', 200),
(26, 13, '2022-05-06', 230),
(27, 14, '2022-05-05', 100),
(28, 14, '2022-05-06', 90),
(29, 15, '2022-05-05', 100),
(30, 15, '2022-05-06', 150),
(31, 16, '2022-05-05', 190),
(32, 16, '2022-05-06', 190),
(33, 17, '2022-05-05', 200),
(34, 17, '2022-05-06', 190);
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `wodowskazy`
--
CREATE TABLE `wodowskazy` (
`id` int(10) UNSIGNED NOT NULL,
`nazwa` varchar(100) DEFAULT NULL,
`rzeka` varchar(30) DEFAULT NULL,
`stanOstrzegawczy` int(10) UNSIGNED DEFAULT NULL,
`stanAlarmowy` int(10) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Dumping data for table `wodowskazy`
--
INSERT INTO `wodowskazy` (`id`, `nazwa`, `rzeka`, `stanOstrzegawczy`, `stanAlarmowy`) VALUES
(1, 'Lubachów', 'Bystrzyca', 190, 210),
(2, 'Jarnołtów', 'Bystrzyca', 230, 270),
(3, 'Łazany', 'Strzegomka', 200, 240),
(4, 'Krzyżanowice', 'Widawa', 150, 200),
(5, 'Świerzawa', 'Kaczawa', 150, 200),
(6, 'Piątnica', 'Kaczawa', 300, 370),
(7, 'Jawor', 'Nysa Szalona', 100, 150),
(8, 'Osetno', 'Barycz', 260, 330),
(9, 'Jelenia Góra', 'Bóbr', 160, 220),
(10, 'Dąbrowa Bolesławicka', 'Bóbr', 300, 350),
(11, 'Mirsk', 'Kwisa', 420, 470),
(12, 'Nowogrodziec', 'Kwisa', 330, 380),
(13, 'Zgorzelec', 'Nysa Łużycka', 340, 400),
(14, 'Trestno', 'Odra', 380, 450),
(15, 'Głogów', 'Odra', 400, 450),
(16, 'Bardo', 'Nysa Kłodzka', 180, 250),
(17, 'Ślęza', 'Ślęza', 270, 300);
--
-- Indeksy dla zrzutów tabel
--
--
-- Indeksy dla tabeli `pomiary`
--
ALTER TABLE `pomiary`
ADD PRIMARY KEY (`id`);
--
-- Indeksy dla tabeli `wodowskazy`
--
ALTER TABLE `wodowskazy`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `pomiary`
--
ALTER TABLE `pomiary`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=35;
--
-- AUTO_INCREMENT for table `wodowskazy`
--
ALTER TABLE `wodowskazy`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=18;
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 */;
Plik kwerendy.txt
Zapytanie 1: SELECT nazwa, rzeka, stanAlarmowy FROM wodowskazy;
Zapytanie 2: SELECT nazwa, rzeka, stanOstrzegawczy, stanAlarmowy, stanWody FROM wodowskazy JOIN pomiary ON wodowskazy.id = wodowskazy_id WHERE dataPomiaru='2022-05-05';
Zapytanie 3: SELECT nazwa, rzeka, stanOstrzegawczy, stanAlarmowy, stanWody FROM wodowskazy JOIN pomiary ON wodowskazy.id = wodowskazy_id WHERE dataPomiaru='2022-05-05' AND stanWody > stanOstrzegawczy;
Zapytanie 4: SELECT dataPomiaru, AVG(stanWody) FROM pomiary GROUP BY dataPomiaru;
Plik poziomRzek.php
<?php
$conn = new mysqli(hostname: "localhost",username: "root",password: "",database: "rzeki");
?>
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Poziomy rzek</title>
<link rel="stylesheet" href="styl.css">
</head>
<body>
<div id="header1">
<img src="obraz1.png" alt="Mapa Polski">
</div>
<div id="header2">
<h1>Rzeki w województwie dolnośląskim</h1>
</div>
<nav>
<form action="poziomRzek.php" method="post">
<input type="radio" name="stan" id="wszystkie" value="wszystkie">
<label for="wszystkie">Wszystkie</label>
<input type="radio" name="stan" id="ostrzegawczy" value="ostrzegawczy">
<label for="ostrzegawczy">Ponad stan ostrzegawczy</label>
<input type="radio" name="stan" id="alarmowy" value="alarmowy">
<label for="alarmowy">Ponad stan alarmowy</label>
<button type="submit" name="pokaz">Pokaż</button>
</form>
</nav>
<div id="lewy">
<h3>Stany na dzień 2022-05-05</h3>
<table>
<tr>
<th>Wodomierz</th>
<th>Rzeka</th>
<th>ostrzegawczy</th>
<th>Alarmowy</th>
<th>Aktualny</th>
</tr>
<?php
// Skrypt #1
if(isset($_POST['stan'])) {
$stan = $_POST['stan'];
if($stan == 'wszystkie') {
$sql = "SELECT nazwa, rzeka, stanOstrzegawczy, stanAlarmowy, stanWody FROM wodowskazy JOIN pomiary ON wodowskazy.id = wodowskazy_id WHERE dataPomiaru='2022-05-05';";
}
else if($stan == 'ostrzegawczy') {
$sql = "SELECT nazwa, rzeka, stanOstrzegawczy, stanAlarmowy, stanWody FROM wodowskazy JOIN pomiary ON wodowskazy.id = wodowskazy_id WHERE dataPomiaru='2022-05-05' AND stanWody > stanOstrzegawczy;";
}
else if($stan == 'alarmowy') {
$sql = "SELECT nazwa, rzeka, stanOstrzegawczy, stanAlarmowy, stanWody FROM wodowskazy JOIN pomiary ON wodowskazy.id = wodowskazy_id WHERE dataPomiaru='2022-05-05' AND stanWody > stanAlarmowy;";
}
$result = $conn->query(query: $sql);
while($row = $result -> fetch_array()) {
echo "<tr>";
echo "<td>$row[0]</td>";
echo "<td>$row[1]</td>";
echo "<td>$row[2]</td>";
echo "<td>$row[3]</td>";
echo "<td>$row[4]</td>";
echo "</tr>";
}
}
?>
</table>
</div>
<div id="prawy">
<h3>informacje</h3>
<ul>
<li>Brak ostrzeżeń o burzach z gradem</li>
<li>Smog w mieście Wrocław</li>
<li>Silny wiatr w Karkonoszach</li>
</ul>
<h3>Średnie stany wód</h3>
<?php
// Skrypt #2
$sql = "SELECT dataPomiaru, AVG(stanWody) FROM pomiary GROUP BY dataPomiaru; ";
$result = $conn->query(query: $sql);
while($row = $result -> fetch_array()) {
echo "<p>$row[0]: $row[1]</p>";
}
?>
<a href="https://komunikaty.pl">Dowiedz się więcej</a>
<img src="obraz2.jpg" alt="rzeka">
</div>
<footer>
<p>Stronę wykonał: <a href="https://ee-informatyk.pl/" target="_blank" style="text-decoration: none;color: unset;">EE-Informatyk.pl</a></p>
</footer>
</body>
</html>
<?php
$conn -> close();
?>
Plik styl.css
* {
font-family: 'Georgia';
}
#header1,
#header2 {
float: left;
background-color: Navy;
color: white;
text-align: center;
height: 100px;
width: 50%;
}
nav {
clear: both;
background-color: Navy;
padding: 20px;
}
label {
color: Silver;
margin: 20px;
}
label:hover {
color: white;
text-decoration: underline;
}
#lewy,
#prawy {
background-color: Azure;
height: 550px;
float: left;
}
#lewy {
width: 70%;
}
#prawy {
width: 30%;
}
footer {
clear: both;
background-color: Navy;
color: white;
}
table {
border: 1px solid Navy;
margin: auto;
width: 70%;
}
tr:hover {
background-color: SkyBlue;
}
#prawy > img {
width: 90%;
}
Powiązana zawartość
Autorem arkusza jest CKE.GOV.PL