Compare commits

..

No commits in common. "rzodkiew" and "dev" have entirely different histories.

15 changed files with 342 additions and 78 deletions

BIN
baner.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

68
css/layout.css Normal file
View File

@ -0,0 +1,68 @@
body {
font-family: Helvetica;
background-color: #EAEAEA;
margin: 0;
padding: 0;
}
header {
position: relative;
text-align: center;
}
header img {
width: 100%;
}
.header-text {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: white;
font-size: 48px;
font-weight: bold;
}
nav, footer {
background-color: #625B5B;
color: white;
padding: 20px;
text-align: center;
}
nav a {
font-weight: bold;
background-color: #EAEAEA;
color: #625B5B;
padding: 10px;
margin: 50px;
border-radius: 20px;
text-decoration: none;
}
nav a:hover {
background-color: #625B5B;
color: #EAEAEA;
border: 1px solid #EAEAEA;
}
ul {
margin-left: 40px;
list-style-type: circle;
}
table {
border: 1px dashed #625B5B;
width: 60%;
margin-left: 40px;
text-align: center;
}
.kontrolki {
margin: 5px;
}
main {
padding: 20px;
}

17
get.php
View File

@ -1,17 +0,0 @@
<?php
$pol = mysqli_connect("localhost", "root", "", "szkolenia");
$kw = mysqli_query($pol, "SELECT nazwa, cena, czas_trwania FROM kursy ORDER BY id");
$json = array();
while($row = mysqli_fetch_assoc($kw)) {
$json[] = $row;
}
mysqli_close($pol);
echo json_encode($json);
?>

51
i1.html
View File

@ -3,28 +3,53 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Kursy komputerowe</title> <title>Kursy komputerowe</title>
<link rel="stylesheet" href="layout.css"> <link rel="stylesheet" href="css/layout.css">
<script src="script.js" defer> </script> <script src="js/script.js" defer> </script>
</head> </head>
<body> <body>
<img src="baner.png"> <header>
<img src="imgs/baner.png" alt="kursy komputerowe">
<div class="header-text">hello</div>
</header>
<nav> <nav>
<a>Strona główna</a> <a href="i1.html">Strona główna</a>
<a>szymon p</a> <a href="raty.html">Koszt rat</a>
<a>rzodkiewka</a> <a href="https://moje-szkolenia.pl/">Nasz partner</a>
<a>Kamil S</a>
</nav> </nav>
<main> <main>
<table id="tab"> <h3>Kursy komputerowe - programowanie</h3>
<table id="tab">
<tr>
<th>Kurs</th>
<th>Czas trwania</th>
<th>Cena</th>
</tr>
<tr>
<td>React.js</td>
<td>4 miesiące</td>
<td>1500 zł</td>
</tr>
<tr>
<td>JavaScript</td>
<td>3 miesiące</td>
<td>1200 zł</td>
</tr>
<tr>
<td>HTML + CSS</td>
<td>2 miesiące</td>
<td>800 zł</td>
</tr>
</table> </table>
<h3>Adres do korespondencji</h3>
<ul>
<li>Adres: Katowice, ul. Mariacka 5</li>
<li>Telefon: 32 888 88 88</li>
</ul>
<a href="mailto:kursy@komputerowe.pl">skontaktuj się</a>
</main> </main>
<footer> <footer>
rzodkiewek pyk pyk pyk <p>Autor strony: 99010101010</p>
</footer> </footer>
</body> </body>
</html> </html>

BIN
imgs/baner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

44
js/script.js Normal file
View File

@ -0,0 +1,44 @@
document.addEventListener('DOMContentLoaded', function() {
console.log("ok");
const fetchData = () => {
return fetch('./php/get.php')
.then(response => {
if (!response.ok) {
throw new Error('Błąd pobierania danych');
}
return response.json();
})
.then(data => {
console.log("Dane załadowane:", data);
renderTable(data); // Wywołaj funkcję renderującą tabelę
})
.catch(error => {
console.error("Błąd:", error);
});
};
// Funkcja do renderowania danych w tabeli
const renderTable = (data) => {
const table = document.getElementById('tab');
// Usuń wszystkie rzędy po nagłówku (czyli od drugiego)
while (table.rows.length > 1) {
table.deleteRow(1);
}
// Dodaj nowe wiersze dla każdego kursu
data.forEach(row => {
const tr = document.createElement('tr');
tr.innerHTML = `
<td>${row.kurs}</td>
<td>${row.czas_trwania}</td>
<td>${row.cena}</td>
`;
table.appendChild(tr);
});
};
// Uruchom pobieranie danych
fetchData();
});

View File

@ -1,39 +0,0 @@
body {
font-family: Helvetica;
background-color: #EAEAEA;
margin: 0;
padding: 0;
}
img {
width: 100%;
}
nav, footer {
background-color: #625B5B;
color: white;
padding: 20px;
text-align: center;
}
nav a {
font-weight: bold;
background-color: #EAEAEA;
color: #625B5B;
padding: 10px;
margin: 50px;
border-radius: 20px;
cursor: pointer;
}
table {
border: 1px solid #625B5B;
width: 60%;
margin-left: 40px;
text-align: center;
}
main {
padding: 20px;
}

16
php/get.php Normal file
View File

@ -0,0 +1,16 @@
<?php
$polaczenie = mysqli_connect("172.18.0.2", "root", "secret", "szkolenia");
$kwerenda = mysqli_query($polaczenie, "SELECT REPLACE(k.nazwa, 'Kurs ', '') AS kurs, k.czas_trwania AS czas_trwania, CONCAT(k.cena, ' zł') AS cena FROM kursy k ORDER BY k.id");
$json = array();
while ($row = mysqli_fetch_assoc($kwerenda)) {
$json[] = $row;
}
mysqli_close($polaczenie);
echo json_encode($json );
?>

50
raty.html Normal file
View File

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Kursy komputerowe</title>
<link rel="stylesheet" href="css/layout.css">
</head>
<body>
<header>
<img src="imgs/baner.png" alt="kursy komputerowe">
<div class="header-text">hello</div>
</header>
<nav>
<a href="i1.html">Strona główna</a>
<a href="raty.html">Koszt rat</a>
<a href="https://moje-szkolenia.pl/">Nasz partner</a>
</nav>
<main>
<h3>Oblicz miesięczną ratę</h3>
<form id="formularz">
<div>
<input type="checkbox" id="react" class="kontrolki" name="kurs" value="React.js">
<label for="react">Kurs React.js</label>
</div>
<div>
<input type="checkbox" id="javascript" class="kontrolki" name="kurs" value="JavaScript">
<label for="javascript">Kurs JavaScript</label>
</div>
<div>
<label for="raty">Liczba rat: </label>
<input type="number" id="raty" class="kontrolki" name="raty" min="1">
</div>
<div>
<label for="miasto">Miasto: </label>
<select id="miasto" class="kontrolki" name="miasto">
<option value="Warszawa">Warszawa</option>
<option value="Katowice">Katowice</option>
<option value="Gdańsk">Gdańsk</option>
</select>
</div>
<button type="button" id="oblicz" class="kontrolki">Oblicz</button>
</form>
<p id="wynik"></p>
</main>
<footer>
<p>Autor strony: 99010101010</p>
</footer>
<script src="js/script.js"></script>
</body>
</html>

View File

@ -1,9 +0,0 @@
document.addEventListener('DOMContentLoaded', () => {
fetch('get.php')
.then(r => r.json())
.then(data => {
const table = document.getElementById('tab');
table.innerHTML = `<tr><th>Kurs</th><th>Czas trwania</th><th>Cena</th>` +
data.map($row => `<tr><td>${$row.nazwa}</td><td>${$row.czas_trwania}</td><td>${$row.cena}</td></tr>`).join('');
});
});

1
sql/k1.sql Normal file
View File

@ -0,0 +1 @@
SELECT REPLACE(k.nazwa, 'Kurs ', '') AS kurs, k.czas_trwania AS czas_trwania, CONCAT(k.cena, '') AS cena FROM kursy k ORDER BY k.id

51
sql/s1.sql Normal file
View File

@ -0,0 +1,51 @@
-- Utwórz bazę danych dla firmy szkoleniowej
CREATE DATABASE IF NOT EXISTS szkolenia CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-- Wybierz bazę danych do pracy
USE szkolenia;
-- Tabela: kategorie_kursow
-- Przechowuje informacje o poziomach kursów (np. podstawowy, średni, zaawansowany)
CREATE TABLE IF NOT EXISTS kategorie_kursow (
id INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(50) NOT NULL UNIQUE,
opis TEXT
);
-- Wstaw dane do tabeli kategorii
INSERT INTO kategorie_kursow (nazwa, opis) VALUES
('podstawowy', 'Kurs przeznaczony dla początkujących'),
('średni', 'Kurs dla osób mających podstawową wiedzę'),
('zaawansowany', 'Kurs dla osób posiadających zaawansowaną wiedzę');
-- Tabela: kursy
-- Przechowuje informacje o konkretnych kursach
CREATE TABLE IF NOT EXISTS kursy (
id INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(255) NOT NULL,
cena DECIMAL(10, 2) NOT NULL,
id_kategorii INT,
FOREIGN KEY (id_kategorii) REFERENCES kategorie_kursow(id),
UNIQUE KEY unique_nazwa (nazwa)
);
-- Wstaw dane do tabeli kursy (zgodnie z ilustracją 4)
INSERT INTO kursy (nazwa, cena, id_kategorii) VALUES
('Kurs HTML i CSS', 500.00, 1), -- podstawowy
('Kurs JavaScript', 700.00, 2), -- średni
('Kurs React.js', 900.00, 3); -- zaawansowany
-- Tabela: miasta
-- Przechowuje listę miast, w których odbywają się kursy
CREATE TABLE IF NOT EXISTS miasta (
id INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(100) NOT NULL UNIQUE
);
-- Wstaw dane do tabeli miasta
INSERT INTO miasta (nazwa) VALUES
('Warszawa'),
('Katowice'),
('Gdańsk');

10
sql/s2.sql Normal file
View File

@ -0,0 +1,10 @@
-- Zapytanie 3: Tworzenie użytkownika 'Marek'
CREATE USER IF NOT EXISTS 'Marek'@'localhost' IDENTIFIED BY 'M@reK';
-- Zapytanie 4: Nadanie uprawnień
-- Użytkownik Marek ma prawo do przeglądania i aktualizowania danych tylko w tabeli `kursy`
GRANT SELECT, UPDATE ON szkolenia.kursy TO 'Marek'@'localhost';
-- Odświeżenie uprawnień
FLUSH PRIVILEGES;

63
sql/s3.sql Normal file
View File

@ -0,0 +1,63 @@
-- Utwórz bazę danych dla firmy szkoleniowej
CREATE DATABASE IF NOT EXISTS szkolenia CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-- Wybierz bazę danych do pracy
USE szkolenia;
-- Tabela: kategorie_kursow
CREATE TABLE IF NOT EXISTS kategorie_kursow (
id INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(50) NOT NULL UNIQUE,
opis TEXT
);
-- Wstaw dane do tabeli kategorii
INSERT INTO kategorie_kursow (nazwa, opis) VALUES
('podstawowy', 'Kurs przeznaczony dla początkujących'),
('średni', 'Kurs dla osób mających podstawową wiedzę'),
('zaawansowany', 'Kurs dla osób posiadających zaawansowaną wiedzę');
-- Tabela: kursy (z dodanym czasem trwania)
CREATE TABLE IF NOT EXISTS kursy (
id INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(255) NOT NULL,
cena DECIMAL(10, 2) NOT NULL,
czas_trwania VARCHAR(50) NOT NULL DEFAULT '2 miesiące',
id_kategorii INT,
FOREIGN KEY (id_kategorii) REFERENCES kategorie_kursow(id),
UNIQUE KEY unique_nazwa (nazwa)
);
-- Wstaw dane do tabeli kursy z czasem trwania
INSERT INTO kursy (nazwa, cena, czas_trwania, id_kategorii) VALUES
('Kurs HTML i CSS', 500.00, '2 miesiące', 1),
('Kurs JavaScript', 700.00, '3 miesiące', 2),
('Kurs React.js', 900.00, '4 miesiące', 3);
-- Tabela: miasta
CREATE TABLE IF NOT EXISTS miasta (
id INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(100) NOT NULL UNIQUE
);
-- Wstaw dane do tabeli miasta
INSERT INTO miasta (nazwa) VALUES
('Warszawa'),
('Katowice'),
('Gdańsk');
-- Tabela: kursy_miasta (relacja wiele-do-wielu: kurs może być w wielu miastach)
CREATE TABLE IF NOT EXISTS kursy_miasta (
id_kursu INT NOT NULL,
id_miasta INT NOT NULL,
PRIMARY KEY (id_kursu, id_miasta),
FOREIGN KEY (id_kursu) REFERENCES kursy(id) ON DELETE CASCADE,
FOREIGN KEY (id_miasta) REFERENCES miasta(id) ON DELETE CASCADE
);
-- Przykładowe przypisanie kursów do miast (każdy kurs w każdym mieście)
INSERT INTO kursy_miasta (id_kursu, id_miasta)
SELECT k.id, m.id
FROM kursy k
CROSS JOIN miasta m;

1
t2.txt Normal file
View File

@ -0,0 +1 @@
t10:8eed75b2eabbafc6d9a2267bc9467002e0cea9a7