Rozwiązanie - Egzamin Praktyczny INF.03

Arkusz INF.03-04-24.06-SG - Czerwiec 2024 - Wersja #04

Skrypt: PHP

Baza Danych:

Przykładowe rozwiązanie
Rozwiązanie - Arkusz praktyczny INF.03-04-24.06-SG - Czerwiec 2024 - Wersja #04
Wymagane zdjęcia
Egzamin INF.03-04-24.06-SG - dodatkowe zdjęcia - cat.jpg
cat.jpg
Egzamin INF.03-04-24.06-SG - dodatkowe zdjęcia - jesien.jpg
jesien.jpg
Egzamin INF.03-04-24.06-SG - dodatkowe zdjęcia - jeziorko.jpg
jeziorko.jpg
Egzamin INF.03-04-24.06-SG - dodatkowe zdjęcia - kiev.jpg
kiev.jpg
Egzamin INF.03-04-24.06-SG - dodatkowe zdjęcia - motyl.jpg
motyl.jpg
Egzamin INF.03-04-24.06-SG - dodatkowe zdjęcia - prague.jpg
prague.jpg
Egzamin INF.03-04-24.06-SG - dodatkowe zdjęcia - wroclaw.jpg
wroclaw.jpg
Egzamin INF.03-04-24.06-SG - dodatkowe zdjęcia - woodpecker.jpg
woodpecker.jpg
Egzamin INF.03-04-24.06-SG - dodatkowe zdjęcia - car.jpg
car.jpg
Wyniki działań na bazie danych
Egzamin INF.03-04-24.06-SG - Operacje na bazie danych - import.png
import.png
Egzamin INF.03-04-24.06-SG - Operacje na bazie danych - import.png
kw1.jpeg
Egzamin INF.03-04-24.06-SG - Operacje na bazie danych - import.png
kw2.jpeg
Egzamin INF.03-04-24.06-SG - Operacje na bazie danych - import.png
kw3.jpeg
Egzamin INF.03-04-24.06-SG - Operacje na bazie danych - import.png
kw4.jpeg
Plik galeria.sql
-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Paź 12, 2024 at 12:31 AM
-- 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: `galeria`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `autorzy`
--

CREATE TABLE `autorzy` (
  `id` int(10) UNSIGNED NOT NULL,
  `imie` varchar(10) DEFAULT NULL,
  `nazwisko` varchar(40) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping data for table `autorzy`
--

INSERT INTO `autorzy` (`id`, `imie`, `nazwisko`) VALUES
(1, 'Sylwia', 'Nowak'),
(2, 'Jan', 'Przybylski'),
(3, 'Jadwiga', 'Kowalska'),
(4, 'Ewelina', 'Nowakowska'),
(5, 'Krzysztof', 'Kot'),
(6, 'Przemysław', 'Dobrowolski'),
(7, 'Ewa', 'Dobrowolska'),
(8, 'Marcin', 'Kowalewski'),
(9, 'Jolanta', 'Biała'),
(10, 'Monika', 'Szczęsna'),
(11, 'Edyta', 'Nowak');

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `zdjecia`
--

CREATE TABLE `zdjecia` (
  `id` int(10) UNSIGNED NOT NULL,
  `autorzy_id` int(10) UNSIGNED NOT NULL,
  `tytul` text DEFAULT NULL,
  `plik` varchar(50) DEFAULT NULL,
  `polubienia` int(10) UNSIGNED DEFAULT NULL,
  `rozmiarPliku` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping data for table `zdjecia`
--

INSERT INTO `zdjecia` (`id`, `autorzy_id`, `tytul`, `plik`, `polubienia`, `rozmiarPliku`) VALUES
(1, 3, 'Rajd Monte Carlo', 'car.jpg', 5, NULL),
(2, 2, 'Moja kotka niezbyt lubi psa sąsiadów ', 'cat.jpg', 10, NULL),
(3, 2, 'W czasie ostatniej wycieczki uchwyciłem taki widok', 'jesien.jpg', 2, NULL),
(4, 7, 'Urocze jeziorko w dolinie gór', 'jeziorko.jpg', 40, NULL),
(5, 9, 'Slava Ukraini!', 'kiev.jpg', 100, NULL),
(6, 3, 'Motyl', 'motyl.jpg', 55, NULL),
(7, 3, 'Mama z dwójką swoich małych na pastwisku', 'owce.jpg', 3, NULL),
(8, 9, 'Czeska Praga', 'prague.jpg', 80, NULL),
(9, 4, 'Gdzieś w Londynie', 'taxi.jpg', 4, NULL),
(10, 4, 'Moje tulipany', 'tulipany.jpg', 30, NULL),
(11, 3, 'Dzięcioł Duży, chroniony', 'woodpecker.jpg', 50, NULL),
(12, 9, 'Miasto 100 mostów, czyli Wrocław', 'wroclaw.jpg', 75, NULL);

--
-- Indeksy dla zrzutów tabel
--

--
-- Indeksy dla tabeli `autorzy`
--
ALTER TABLE `autorzy`
  ADD PRIMARY KEY (`id`);

--
-- Indeksy dla tabeli `zdjecia`
--
ALTER TABLE `zdjecia`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `autorzy`
--
ALTER TABLE `autorzy`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;

--
-- AUTO_INCREMENT for table `zdjecia`
--
ALTER TABLE `zdjecia`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;
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 tytul, plik FROM zdjecia WHERE polubienia >= 100;
Zapytanie 2: SELECT plik, tytul, polubienia, imie, nazwisko FROM zdjecia JOIN autorzy ON autorzy_id = autorzy.id ORDER BY nazwisko;
Zapytanie 3: SELECT imie, COUNT(*) FROM zdjecia JOIN autorzy ON autorzy_id = autorzy.id GROUP BY imie;
Zapytanie 4: ALTER TABLE zdjecia ADD COLUMN rozmiarPliku INT;
Plik galeria.php
<?php
    $conn = new mysqli(hostname: "localhost",username: "root",password: "",database: "galeria");
?>

<!DOCTYPE html>
<html lang="pl">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Galeria</title>
        <link rel="stylesheet" href="styl.css">
    </head>
    <body>
        <header>
            <h1>Zdjęcia</h1>
        </header>

        <div id="lewy">
            <h2>Tematy zdjęć</h2>
            <ol>
                <li>Zwierzęta</li>
                <li>Krajobrazy</li>
                <li>Miasta</li>
                <li>Przyroda</li>
                <li>Samochody</li>
            </ol>
        </div>
        
        <main>
            <?php
                // Skrypt #1
                $sql = "SELECT plik, tytul, polubienia, imie, nazwisko FROM zdjecia JOIN autorzy ON autorzy_id = autorzy.id ORDER BY nazwisko;";
                $result = $conn->query(query: $sql);
                while($row = $result -> fetch_array()) {
                    echo "<div>";
                        echo "<img src='$row[0]' alt='zdjęcie'>";
                        echo "<h3>$row[1]</h3>";

                        if($row[2] > 40) {
                            echo "<p>Autor: $row[3] $row[4].<br>Wiele osób polubiło ten obraz</p>";
                        }
                        else {
                            echo "<p>Autor: $row[3] $row[4].</p>";
                        }

                        echo "<a href='$row[0]' download='$row[0]'>Pobierz</a>";

                    echo "</div>";
                }
            ?>
        </main>

        <div id="prawy">
            <h2>Najbardziej lubiane</h2>
            <?php
                // Skrypt #2
                $sql = "SELECT tytul, plik FROM zdjecia WHERE polubienia >= 100;";
                $result = $conn->query(query: $sql);
                while($row = $result -> fetch_array()) {
                    echo "<img src='$row[1]' alt='$row[0]'>";
                }
            ?>
            <strong>Zobacz wszystkie nasze zdjęcia</strong>
        </div>

        <footer>
            <h5>Stronę wykonał: EE-Informatyk.pl</h5>
        </footer>
    </body>
</html>

<?php
    $conn -> close();
?>
Plik styl.css
* {
    font-family: 'Helvetica';
}

header,
footer {
    background-color: Sienna;
    color: white;
    padding: 10px;
    text-align: center;
}

#lewy,
#prawy {
    background-color: NavajoWhite;
    width: 15%;
    height: 700px;
    float: left;
}

main {
    width: 70%;
    height: 700px;
    overflow: scroll;
    float: left;
}

footer {
    clear: both;
}

img {
    width: 100%;
}

main > div {
    float: left;
    width: 46%;
    margin: 2%;
    position: relative;
}

h3, p, a {
    opacity: 0;
    position: absolute;
}

h3 {
    top: 5%;
}

p {
    top: 30%;
}

a {
    top: 70%;
    left: 70%;
    background-color: Sienna;
    padding: 15px;
}
  
main div img {
    transition: opacity 0.5s ease;
    opacity: 1;
}
  
main div:hover img {
    opacity: 0.3;
}
  
main div:hover h3,
main div:hover p,
main div:hover a {
    opacity: 1;
}

Strona używa plików cookies

Serwis wykorzystuje ciasteczka głównie w celu prowadzenia systemu formularzy oraz zbierania danych dotyczących ruchu na stronie.

Więcej informacji znajdziesz w Polityce Prywatności

Akceptuję