Ćwiczenia 1-5: Podstawy SQL
1. Tworzenie tabeli
Zadanie: Utwórz tabelę produkty
z kolumnami: id
, nazwa
, cena
, opis
.
Rozwiązanie
CREATE TABLE produkty (
id INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(100),
cena DECIMAL(10,2),
opis TEXT
);
2. Dodawanie danych
Zadanie: Dodaj nowy produkt do tabeli produkty
(np. nazwa: "Laptop", cena: 2500.00, opis: "Nowoczesny laptop").
Rozwiązanie
INSERT INTO produkty (nazwa, cena, opis)
VALUES ('Laptop', 2500.00, 'Nowoczesny laptop');
3. Wybieranie danych
Zadanie: Wyświetl wszystkie produkty z tabeli produkty
.
Rozwiązanie
SELECT * FROM produkty;
4. Modyfikowanie danych
Zadanie: Zaktualizuj cenę produktu o id = 1
, ustawiając cenę na 2200.00
.
Rozwiązanie
UPDATE produkty
SET cena = 2200.00
WHERE id = 1;
5. Usuwanie danych
Zadanie: Usuń produkt z tabeli produkty
o id = 1
.
Rozwiązanie
DELETE FROM produkty
WHERE id = 1;
Ćwiczenia 6-10: Zaawansowane SQL
6. Łączenie tabel (JOIN)
Zadanie: Wyświetl produkty razem z nazwą kategorii z tabeli kategorie
, która ma kolumny id
i nazwa
.
Rozwiązanie
SELECT produkty.nazwa, produkty.cena, kategorie.nazwa
FROM produkty
JOIN kategorie ON produkty.kategoria_id = kategorie.id;
7. Agregacja danych
Zadanie: Oblicz średnią cenę produktów w tabeli produkty
.
Rozwiązanie
SELECT AVG(cena) AS srednia_cena FROM produkty;
8. Warunki w zapytaniach (WHERE)
Zadanie: Wyświetl wszystkie produkty, których cena jest mniejsza niż 1000 zł.
Rozwiązanie
SELECT * FROM produkty WHERE cena < 1000;
9. Grupowanie danych
Zadanie: Pogrupuj produkty w tabeli produkty
po cenach, licząc ile produktów znajduje się w danej grupie cenowej.
Rozwiązanie
SELECT cena, COUNT(*) AS liczba_produktow
FROM produkty
GROUP BY cena;
10. Sortowanie wyników
Zadanie: Posortuj produkty według ceny w porządku rosnącym.
Rozwiązanie
SELECT * FROM produkty ORDER BY cena ASC;
Ćwiczenia 11-20: SQL + PHP
11. Formularz do dodawania produktów
Zadanie: Stwórz formularz HTML do dodawania produktów (nazwa, cena, opis) do tabeli produkty
.
Rozwiązanie
<form action="dodaj.php" method="POST">
<label for="nazwa">Nazwa produktu</label>
<input type="text" id="nazwa" name="nazwa" required>
<label for="cena">Cena</label>
<input type="number" id="cena" name="cena" required>
<label for="opis">Opis</label>
<textarea id="opis" name="opis"></textarea>
<input type="submit" value="Dodaj produkt">
</form>
12. Przetwarzanie formularza PHP
Zadanie: Zapisz dane z formularza dodawania produktu do tabeli produkty
w bazie danych.
Rozwiązanie
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "moja_baza";
// Tworzenie połączenia
$conn = new mysqli($servername, $username, $password, $dbname);
// Sprawdzanie połączenia
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Pobieranie danych z formularza
$nazwa = $_POST['nazwa'];
$cena = $_POST['cena'];
$opis = $_POST['opis'];
// Wstawianie danych do tabeli
$sql = "INSERT INTO produkty (nazwa, cena, opis) VALUES ('$nazwa', $cena, '$opis')";
if ($conn->query($sql) === TRUE) {
echo "Nowy produkt dodany!";
} else {
echo "Błąd: " . $sql . "
" . $conn->error;
}
$conn->close();
?>
13. Wyświetlanie produktów w tabeli HTML
Zadanie: Wyświetl wszystkie produkty z tabeli produkty
w formie tabeli HTML.
Rozwiązanie
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "moja_baza";
// Tworzenie połączenia
$conn = new mysqli($servername, $username, $password, $dbname);
// Sprawdzanie połączenia
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, nazwa, cena, opis FROM produkty";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table>";
echo "<tr><th>ID</th><th>Nazwa</th><th>Cena</th><th>Opis</th></tr>";
while($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row["id"]. "</td><td>" . $row["nazwa"]. "</td><td>" . $row["cena"]. "</td><td>" . $row["opis"]. "</td></tr>";
}
echo "</table>";
} else {
echo "0 wyników";
}
$conn->close();
?>
14. Formularz z walidacją danych
Zadanie: Dodaj walidację formularza przed jego wysłaniem do bazy danych, sprawdzając czy wszystkie pola są wypełnione i czy cena jest liczbą dodatnią.
Rozwiązanie
<form action="dodaj.php" method="POST">
<label for="nazwa">Nazwa produktu</label>
<input type="text" id="nazwa" name="nazwa" required>
<label for="cena">Cena</label>
<input type="number" id="cena" name="cena" required min="0">
<label for="opis">Opis</label>
<textarea id="opis" name="opis"></textarea>
<input type="submit" value="Dodaj produkt">
</form>
15. Aktualizacja danych przez formularz
Zadanie: Stwórz formularz do edycji danych produktu (zmiana ceny lub opisu) w bazie danych.
Rozwiązanie
<form action="aktualizuj.php" method="POST">
<label for="id">ID produktu</label>
<input type="number" id="id" name="id" required>
<label for="nazwa">Nazwa produktu</label>
<input type="text" id="nazwa" name="nazwa">
<label for="cena">Cena</label>
<input type="number" id="cena" name="cena">
<label for="opis">Opis</label>
<textarea id="opis" name="opis"></textarea>
<input type="submit" value="Aktualizuj">
</form>
16. Usuwanie produktu przez formularz
Zadanie: Stwórz formularz do usuwania produktu na podstawie jego ID.
Rozwiązanie
<form action="usun.php" method="POST">
<label for="id">ID produktu</label>
<input type="number" id="id" name="id" required>
<input type="submit" value="Usuń produkt">
</form>
17. Obsługa sesji w PHP
Zadanie: Zastosuj sesje w PHP do przechowywania danych logowania użytkownika (np. ID, nazwisko, status). Sprawdź, czy użytkownik jest zalogowany przed wykonaniem akcji.
Rozwiązanie
<?php
session_start();
// Zapisanie danych sesji
$_SESSION['user_id'] = $user_id;
// Sprawdzenie, czy użytkownik jest zalogowany
if (!isset($_SESSION['user_id'])) {
echo "Musisz się zalogować!";
} else {
echo "Witaj " . $_SESSION['user_id'];
}
?>
18. Logowanie użytkownika
Zadanie: Stwórz formularz logowania, który pozwala użytkownikowi na zalogowanie się do systemu. Po zalogowaniu powinien pojawić się komunikat powitalny.
Rozwiązanie
<form action="login.php" method="POST">
<label for="username">Nazwa użytkownika</label>
<input type="text" id="username" name="username" required>
<label for="password">Hasło</label>
<input type="password" id="password" name="password" required>
<input type="submit" value="Zaloguj">
</form>
19. Rejestracja użytkownika
Zadanie: Stwórz formularz rejestracji użytkownika, który zapisuje dane w tabeli uzytkownicy
(nazwa użytkownika, hasło, email).
Rozwiązanie
<form action="register.php" method="POST">
<label for="username">Nazwa użytkownika</label>
<input type="text" id="username" name="username" required>
<label for="email">E-mail</label>
<input type="email" id="email" name="email" required>
<label for="password">Hasło</label>
<input type="password" id="password" name="password" required>
<input type="submit" value="Zarejestruj">
</form>
20. Filtrowanie wyników z formularza
Zadanie: Zastosuj filtr w formularzu, który pozwala na wyszukiwanie produktów na podstawie nazwy.
Rozwiązanie
<form action="filter.php" method="POST">
<label for="nazwa">Szukaj produktu</label>
<input type="text" id="nazwa" name="nazwa">
<input type="submit" value="Szukaj">
</form>