third Commit

This commit is contained in:
Ioannis20x
2024-06-10 21:11:24 +02:00
parent 7bd704dd04
commit 346b485310
74 changed files with 1079 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
Produkt;Preis;Lagerbestand;Lieferzeit;Kategorie;Dateiname
ZTE Blade 10 Smart;198,99;7;7;Handys;zte_blade_10.png
ZTE Blade 10 Smart;198,99;7;7;ZTE;zte_blade_10.png
ZTE Blade 10 Smart;198,99;7;7;Sale;zte_blade_10.png
Apple iPhone 11 Pro Max;1.566,99;3;14;Handys;apple_iphone_11.png
Apple iPhone 11 Pro Max;1.566,99;3;14;Apple;apple_iphone_11.png
Samsung A10;131,99;0;7;Handys;samsung_a10.png
Samsung A10;131,99;0;7;Samsung;samsung_a10.png
Huawei P Smart;147,99;20;7;Huawei;huawei_p_smart.png
Huawei P Smart;147,99;20;7;Handys;huawei_p_smart.png
Xiamoi Redmi Note 8 Pro;239,99;35;7;Handys;xiamoi_redmi_note_8.png
Ulefone Note 7;131,99;10;7;Handys;ulefone_note_7.png
Acer Aspire 3;399,99;2;7;Laptops;acer_aspire_3.png
Acer Aspire 3;399,99;2;7;Acer;acer_aspire_3.png
Miscrosoft Surface Laptop 3;1.119,99;9;7;Laptops;miscrosoft_surface_laptop_3.png
Miscrosoft Surface Laptop 3;1.119,99;9;7;Sale;miscrosoft_surface_laptop_3.png
Lenovo Gaming Notebook;499,99;15;14;Laptops;lenovo_gaming_notebook.png
ASUS Gaming Notebook;519,99;40;14;Laptops;asus_gaming_notebook.png
ASUS Gaming Notebook;519,99;40;14;Sale;asus_gaming_notebook.png
Jumper Ezbook X3;239,99;1;14;Laptops;jumper_ezbook_x3.png
CHUWI Lapbook Pro;379,99;29;14;Laptops;chuwi_lapbook_pro.png
Dell 24 Zoll Monitor Full HD;149,99;10;7;Monitore;dell_zoll_monitor_full_24.png
Dell 24 Zoll Monitor Full HD;149,99;10;7;Sale;dell_zoll_monitor_full_24.png
Samsung 28 Zoll Monitor 4k;247,9;25;14;Monitore;samsung_zoll_monitor_4.png
Samsung 28 Zoll Monitor 4k;247,9;25;14;Samsung;samsung_zoll_monitor_4.png
Samsung 49 Zoll Curved Gaming Full HD;809,99;3;14;Monitore;samsung_zoll_curved_gaming_full_49.png
Samsung 49 Zoll Curved Gaming Full HD;809,99;3;14;Samsung;samsung_zoll_curved_gaming_full_49.png
BenQ 32 Zoll Curved Gaming 144Hz;406,11;0;14;Monitore;benq_zoll_curved_gaming_144.png
AOC 24 Zoll Full HD;114,4;19;14;Monitore;aoc_24_zoll.png
Acer KG1 24 Zoll Full HD;129,99;12;14;Monitore;acer_kg_zoll_full_hd.png
Acer KG1 24 Zoll Full HD;129,99;12;14;Acer;acer_kg_zoll_full_hd.png
Aufziehbares Ladekabel 0,6m;9,79;100;14;Handys;aufziehbares_ladekabel_m_6m.png
Aufziehbares Ladekabel 0,6m;9,79;100;14;Samsung;aufziehbares_ladekabel_m_6m.png
Aufziehbares Ladekabel 0,6m;9,79;100;14;ZTE;aufziehbares_ladekabel_m_6m.png
BONTEC Monitorhalterung fuer Tische;48,99;17;7;Monitore;bontec_monitorhalterung_fuer_tische.png
BONTEC Monitorhalterung fuer Tische;48,99;17;7;Samsung;bontec_monitorhalterung_fuer_tische.png
BONTEC Monitorhalterung fuer Tische;48,99;17;7;Acer;bontec_monitorhalterung_fuer_tische.png
BONTEC Monitorhalterung fuer Tische;48,99;17;7;Sonstiges;bontec_monitorhalterung_fuer_tische.png
Logitech G512 Mechanische Tastatur;99;5;7;Laptops;logitech_g_mechanische_tastatur.png
Logitech G512 Mechanische Tastatur;99;5;7;Monitore;logitech_g_mechanische_tastatur.png
Logitech G512 Mechanische Tastatur;99;5;7;Sonstiges;logitech_g_mechanische_tastatur.png
Razer Kraken X USB Gaming Headset;82,9;1;7;Sonstiges;razer_kraken_x_usb_gaming_Gaming.png
Razer Kraken X USB Gaming Headset;82,9;1;7;Laptops;razer_kraken_x_usb_gaming_Gaming.png
Willful Bluetooth Kopfhoerer In Ear;22,94;13;14;Sonstiges;willful_bluetooth_kopfhoerer_in_In.png
Sharkoon Shark Force Pro Gaming Maus;14,9;22;7;Sonstiges;sharkoon_shark_force_pro_gaming_Gaming.png
1 Produkt Preis Lagerbestand Lieferzeit Kategorie Dateiname
2 ZTE Blade 10 Smart 198,99 7 7 Handys zte_blade_10.png
3 ZTE Blade 10 Smart 198,99 7 7 ZTE zte_blade_10.png
4 ZTE Blade 10 Smart 198,99 7 7 Sale zte_blade_10.png
5 Apple iPhone 11 Pro Max 1.566,99 3 14 Handys apple_iphone_11.png
6 Apple iPhone 11 Pro Max 1.566,99 3 14 Apple apple_iphone_11.png
7 Samsung A10 131,99 0 7 Handys samsung_a10.png
8 Samsung A10 131,99 0 7 Samsung samsung_a10.png
9 Huawei P Smart 147,99 20 7 Huawei huawei_p_smart.png
10 Huawei P Smart 147,99 20 7 Handys huawei_p_smart.png
11 Xiamoi Redmi Note 8 Pro 239,99 35 7 Handys xiamoi_redmi_note_8.png
12 Ulefone Note 7 131,99 10 7 Handys ulefone_note_7.png
13 Acer Aspire 3 399,99 2 7 Laptops acer_aspire_3.png
14 Acer Aspire 3 399,99 2 7 Acer acer_aspire_3.png
15 Miscrosoft Surface Laptop 3 1.119,99 9 7 Laptops miscrosoft_surface_laptop_3.png
16 Miscrosoft Surface Laptop 3 1.119,99 9 7 Sale miscrosoft_surface_laptop_3.png
17 Lenovo Gaming Notebook 499,99 15 14 Laptops lenovo_gaming_notebook.png
18 ASUS Gaming Notebook 519,99 40 14 Laptops asus_gaming_notebook.png
19 ASUS Gaming Notebook 519,99 40 14 Sale asus_gaming_notebook.png
20 Jumper Ezbook X3 239,99 1 14 Laptops jumper_ezbook_x3.png
21 CHUWI Lapbook Pro 379,99 29 14 Laptops chuwi_lapbook_pro.png
22 Dell 24 Zoll Monitor Full HD 149,99 10 7 Monitore dell_zoll_monitor_full_24.png
23 Dell 24 Zoll Monitor Full HD 149,99 10 7 Sale dell_zoll_monitor_full_24.png
24 Samsung 28 Zoll Monitor 4k 247,9 25 14 Monitore samsung_zoll_monitor_4.png
25 Samsung 28 Zoll Monitor 4k 247,9 25 14 Samsung samsung_zoll_monitor_4.png
26 Samsung 49 Zoll Curved Gaming Full HD 809,99 3 14 Monitore samsung_zoll_curved_gaming_full_49.png
27 Samsung 49 Zoll Curved Gaming Full HD 809,99 3 14 Samsung samsung_zoll_curved_gaming_full_49.png
28 BenQ 32 Zoll Curved Gaming 144Hz 406,11 0 14 Monitore benq_zoll_curved_gaming_144.png
29 AOC 24 Zoll Full HD 114,4 19 14 Monitore aoc_24_zoll.png
30 Acer KG1 24 Zoll Full HD 129,99 12 14 Monitore acer_kg_zoll_full_hd.png
31 Acer KG1 24 Zoll Full HD 129,99 12 14 Acer acer_kg_zoll_full_hd.png
32 Aufziehbares Ladekabel 0,6m 9,79 100 14 Handys aufziehbares_ladekabel_m_6m.png
33 Aufziehbares Ladekabel 0,6m 9,79 100 14 Samsung aufziehbares_ladekabel_m_6m.png
34 Aufziehbares Ladekabel 0,6m 9,79 100 14 ZTE aufziehbares_ladekabel_m_6m.png
35 BONTEC Monitorhalterung fuer Tische 48,99 17 7 Monitore bontec_monitorhalterung_fuer_tische.png
36 BONTEC Monitorhalterung fuer Tische 48,99 17 7 Samsung bontec_monitorhalterung_fuer_tische.png
37 BONTEC Monitorhalterung fuer Tische 48,99 17 7 Acer bontec_monitorhalterung_fuer_tische.png
38 BONTEC Monitorhalterung fuer Tische 48,99 17 7 Sonstiges bontec_monitorhalterung_fuer_tische.png
39 Logitech G512 Mechanische Tastatur 99 5 7 Laptops logitech_g_mechanische_tastatur.png
40 Logitech G512 Mechanische Tastatur 99 5 7 Monitore logitech_g_mechanische_tastatur.png
41 Logitech G512 Mechanische Tastatur 99 5 7 Sonstiges logitech_g_mechanische_tastatur.png
42 Razer Kraken X USB Gaming Headset 82,9 1 7 Sonstiges razer_kraken_x_usb_gaming_Gaming.png
43 Razer Kraken X USB Gaming Headset 82,9 1 7 Laptops razer_kraken_x_usb_gaming_Gaming.png
44 Willful Bluetooth Kopfhoerer In Ear 22,94 13 14 Sonstiges willful_bluetooth_kopfhoerer_in_In.png
45 Sharkoon Shark Force Pro Gaming Maus 14,9 22 7 Sonstiges sharkoon_shark_force_pro_gaming_Gaming.png
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+93
View File
@@ -0,0 +1,93 @@
Copyright 2011 The Montserrat Project Authors (https://github.com/JulietaUla/Montserrat)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
+2
View File
@@ -0,0 +1,2 @@
[LocalizedFileNames]
Montserrat.zip=@Montserrat.zip,0
Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

@@ -0,0 +1,9 @@
<svg id="Gruppe_12" data-name="Gruppe 12" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<g id="Komponente_2_1" data-name="Komponente 2 – 1">
<g id="Rechteck_7" data-name="Rechteck 7" fill="none" stroke="#e1e1e1" stroke-width="1">
<rect width="20" height="20" stroke="none"/>
<rect x="0.5" y="0.5" width="19" height="19" fill="none"/>
</g>
</g>
<rect id="Rechteck_13" data-name="Rechteck 13" width="12" height="12" transform="translate(4 4)" fill="#afd96f"/>
</svg>

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<g id="Rechteck_7" data-name="Rechteck 7" fill="none" stroke="#e1e1e1" stroke-width="1">
<rect width="20" height="20" stroke="none"/>
<rect x="0.5" y="0.5" width="19" height="19" fill="none"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

+3
View File
@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="21.29" height="21.296" viewBox="0 0 21.29 21.296">
<path id="Icon_ionic-ios-search" data-name="Icon ionic-ios-search" d="M25.54,24.247,19.619,18.27a8.438,8.438,0,1,0-1.281,1.3l5.882,5.938a.911.911,0,0,0,1.286.033A.917.917,0,0,0,25.54,24.247ZM12.988,19.64A6.663,6.663,0,1,1,17.7,17.688,6.622,6.622,0,0,1,12.988,19.64Z" transform="translate(-4.5 -4.493)" fill="#505050"/>
</svg>

After

Width:  |  Height:  |  Size: 426 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

+3
View File
@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="15.965" height="9.128" viewBox="0 0 15.965 9.128">
<path id="Icon_ionic-ios-arrow-down" data-name="Icon ionic-ios-arrow-down" d="M14.173,17.623l6.036-6.041a1.136,1.136,0,0,1,1.611,0,1.15,1.15,0,0,1,0,1.616l-6.84,6.844a1.139,1.139,0,0,1-1.573.033L6.52,13.2a1.141,1.141,0,1,1,1.611-1.616Z" transform="translate(-6.188 -11.246)" fill="#505050"/>
</svg>

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

@@ -0,0 +1,5 @@
Link:
https://xd.adobe.com/view/ca7542de-d985-4871-7afb-c06a5fb3a6ff-bc44/?fullscreen
Passwort: Schommer2020
Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

+6
View File
@@ -0,0 +1,6 @@
Dieses Projekt habe ich in der Ausbildung bekommen um meine ersten Berührungen mit PHP zu erfahren.
Dazu wurde mein Wissen über Datenbanken und MySQL getestet.
Das Projekt benötigt eine Datenbank mit zwei Tabellen.
Einmal die Tabelle mit den Produkten.
Und eine Tabelle für die Kategorien, welche mit der Tabelle mit den Produkten per m:n Relation verbunden ist.
Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 KiB

+380
View File
@@ -0,0 +1,380 @@
/*DETEILANSICHT*/
#prodbild img {
width: 500px;
height: 500px;
float: left;
}
#prodbild {
display: block;
width: 60%;
}
#preis {
margin-top: 3em;
}
#vorschl {
margin-top: 3.125em;
display: flex;
flex-wrap: wrap;
gap: 15px;
}
.vprod h2 {
margin-top: 0;
margin-bottom: 0.5em;
}
.vprod h1 {
margin-bottom: 0;
}
.vprodinfo {
width: 360px;
height: auto;
display: block;
margin-left: 1em;
float: left;
}
.vprod {
width: 22.5em;
height: 27.546em;
text-align: left;
margin-left: 0.2em;
}
.vprod img {
width: 350px;
height: 360px;
border-left: solid 0.5px grey;
}
#vortit {
font-family: 'Montserrat', sans-serif;
font-size: 25px;
font-weight: 700;
color: #505050;
line-height: 24px;
margin-top: 3.75em;
}
#vorschl h1 {
font-family: 'Montserrat', sans-serif;
font-size: 25px;
font-weight: 400;
color: #505050;
line-height: 30px;
}
#details #prodname {
font-family: 'Montserrat', sans-serif;
font-size: 25px;
font-weight: 700;
color: #505050;
line-height: 24px;
margin-right: 1em;
}
#details h2 {
display: inline-block;
height: 0;
width: auto;
}
#details h1 {
display: block;
margin-top: 0;
width: auto;
}
#details {
float: left;
width: 80%;
}
#oben {
display: flex;
margin-top: 4em;
}
#backbutton {
height: 2.25em;
display: block;
width: 8em;
}
#backbutton a {
font-family: 'Montserrat', sans-serif;
font-size: 16px;
font-weight: 400;
color: #505050;
line-height: 19px;
text-decoration: none !important;
}
#kaufbutton:hover {
cursor: pointer;
background-color: #AFD96F;
}
#kaufbutton {
float: left;
margin-top: 2em;
margin-right: 6em;
border-radius: 28px;
border: 1px solid #AFD96F;
height: 50px;
width: 200px;
font-family: 'Montserrat', sans-serif;
font-size: 16px;
font-weight: 400;
color: #505050;
line-height: 19px;
}
/*STARTSEITE*/
.grid-container {
display: flex;
flex-wrap: wrap;
gap: 15px;
}
.grid-container a {
text-decoration: none !important;
}
.grid-item {
width: 500px;
height: 500px;
margin-bottom: 50px;
border-left: solid 0.5px grey;
text-align: left;
margin-left: 10px;
}
img {
width: 375px;
height: 360px;
}
#seiten {
margin: 50px auto auto auto;
width: 50%;
text-align: center;
}
.pagebtn {
border: solid 1px;
height: 20px;
border-radius: 0;
}
.pagebtn:hover {
cursor: pointer;
}
#soldindex {
display: block;
margin-left: 45px;
}
.sold {
color: #DF2727;
}
.grau {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
}
h1 {
font-family: 'Montserrat', sans-serif;
font-size: 25px;
font-weight: 400;
color: #505050;
line-height: 30px;
}
h2 {
font-family: 'Montserrat', sans-serif;
font-size: 20px;
font-weight: 700;
color: #AFD96F;
line-height: 24px;
}
.prodname {
display: block;
margin-left: 45px;
}
.price {
display: block;
margin-top: -15px;
margin-left: 45px;
}
html,
body {
height: 100%;
}
#filter {
float: left;
width: 300px;
min-height: 100%;
height: auto !important;
height: 100%;
display: block;
text-align: center;
box-shadow: rgba(0, 0, 0, 0.15) 3.95px 0px 6px;
align-content: center;
}
::placeholder {
padding-top: 10px;
padding-left: 20px;
padding-bottom: 10px;
}
#suche {
height: 30px;
margin-top: 20px;
margin-bottom: 10px;
margin-left: -10px;
display: inline-block;
border: solid 1px;
}
#kategorien input[type="checkbox"] {
appearance: none;
box-sizing: border-box;
padding: 0;
width: 1.15em;
height: 1.15em;
position: absolute;
display: grid;
font: inherit;
color: currentColor;
border: 0.1em solid grey;
border-radius: 0;
margin-top: 0em;
margin-left: -2.0em;
transform: translateY(-0.075em);
place-content: center;
content: "";
}
input[type="checkbox"]::before {
content: "";
width: 0.65em;
height: 0.55em;
transform: scale(0);
content: "";
border: 0.1em solid white;
background-color: #AFD96F;
transition: 120ms transform ease-in-out;
box-shadow: inset 1em 1em var(--form-control-color);
}
input[type="checkbox"]:checked::before {
transform: scale(1);
}
[type="search"] {
border: none;
}
#checkboxen {
display: inline;
margin-left: 40px;
width: 50px;
}
.kategorie {
margin-bottom: 20px;
width: 20px;
}
#suchleiste {
height: inherit;
position: relative;
top: -6px;
left: -0px;
display: inline-block;
}
input:focus {
outline: none;
}
#kategorien {
position: relative;
width: 60px;
height: auto !important;
min-height: 150px;
margin-top: 2.375em;
margin-left: 3.25em;
}
label {
font-family: 'Montserrat', sans-serif;
font-size: 16px;
font-weight: 400;
color: #505050;
line-height: 19px;
display: block;
margin-top: 0.625em;
text-align: left;
}
button[type="submit"]:hover {
background-color: gray;
}
button[type="submit"] {
display: inline-block;
height: inherit;
background: none;
border-width: 0;
border-style: none;
outline: none;
}
#h2price {
display: inline-block;
position: absolute;
margin-left: -6.5em;
border: none;
}
#h2kat {
display: inline-block;
position: absolute;
margin-top: 3.375em;
margin-left: -10.5em;
text-align: left;
border: none;
}
#prices {
height: 30px;
margin-top: 3.625em;
width: 215px;
margin-left: 1.5em;
display: block;
border: solid 1px;
}
+30
View File
@@ -0,0 +1,30 @@
<?php
$servername = "ioannisdev.de";
$dbuser = "samp";
$dbpas = "password";
$dbname = "shopseite";
$dbhandle = new mysqli($servername, $dbuser, $dbpas,$dbname);
if ($dbhandle->connect_error) {
die("Verbindung fehlgeschlagen: " . $dbhandle->connect_error);
} else {
// echo "VERBINDUNG: ERFOLG! <br>";
}
function dbaction($handle, $query)
{
if ($handle->connect_error) {
die("Verbindung fehlgeschlagen: " . $handle->connect_error);
} else {
if ($handle->query($query) === TRUE) {
echo "QUERY: ERFOLG! <br>";
} else {
echo "QUERY: FEHLER( " . $handle->error . ")<br>";
}
}
}
?>
+57
View File
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<div id="oben">
<div id="backbutton">
<a href="./index.php">&#706; zurück</a>
</div>
<div id="prodbild">
<img src="./alle_produkte/acer_aspire_3.png" alt="">
</div>
<div id="details">
<h1 id="prodname">Apple iPhone 15 Pro Max</h1>
<div id="preis">
<h2>Preis</h2>
<h1>1.556,99€</h1>
</div>
<div id="versand">
<h2>Versand</h2>
<h1>Lieferung bis Dienstag 2. Juni</h1>
</div>
<div id="lager">
<h2>Lagerbestand</h2>
<h1>Auf Lager.</h1>
</div>
<form action="./kauf.html">
<button id="kaufbutton" type="submit">Kaufen</button>
</form>
</div>
</div>
<div id="unten">
<h1 id="vortit">Ähnliche Suchvorschläge</h1>
<div id="vorschl">
<div class="vprod">
<div class="vprodinfo">
<h1>Samsung A10</h1>
<h2>155,99€</h2>
</div>
<img src="./alle_produkte/zte_blade_10.png" alt="">
</div>
</div>
</div>
</body>
</html>
+134
View File
@@ -0,0 +1,134 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<link rel="stylesheet" href="./css/style.css">
<title>Detailseite</title>
</head>
<body>
<div id='oben'>
<div id='backbutton'>
<a href='./index.php'>&#706; zurück</a>
</div>
<?php
include_once "db.php";
if (isset($_GET["prodid"])) {
$prodid = $_GET['prodid'];
$sql = "SELECT * FROM produkte WHERE id = " . $prodid;
$result = $dbhandle->query($sql);
if (!$result) {
die('SQL-Fehler: ' . mysqli_error($conn));
}
if ($result && $result->num_rows == 1) {
while ($row = $result->fetch_assoc()) {
$preis = number_format($row["preis"], 2, ',', '.');
echo '<div id="prodbild">
<img src="./alle_produkte/' . $row["dateiname"] . '" alt="">
</div>';
echo '<div id="details">
<h1 id="prodname">' . $row["produkt"] . '</h1>';
echo ' <div id="preis">
<h2>Preis</h2>
<h1>' . $row["preis"] . '€</h1>
</div>';
echo '<div id="versand">
<h2>Versand</h2>
<h1>Lieferung in ' . $row["lieferzeit"] . ' Tagen</h1>
</div>';
echo '<div id="lager">
<h2>Lagerbestand</h2>';
if ($row["lager"] == 0) {
echo '<h1 class="sold">AUSVERKAUFT</h1>';
} else {
echo '<h1>' . $row["lager"] . ' auf Lager </h1>.';
}
echo '</div>';
echo '<form action="./kauf.html">
<button id="kaufbutton" type="submit">Kaufen</button>
</form>
</div>
</div>';
}
}
$produktid = $_GET["prodid"];
$sql1 = "SELECT * FROM mapping WHERE produktid = $produktid";
$ergebnis1 = $dbhandle->query($sql1);
if ($ergebnis1) {
$row = $ergebnis1->fetch_assoc();
$kategorieid = $row['kategorieid'];
// Schritt 1: Versuche, genau 5 Produkte derselben Kategorie abzurufen
$sql2 = "SELECT * FROM produkte
JOIN mapping ON produkte.id = mapping.produktid
WHERE mapping.kategorieid = $kategorieid AND produkte.id <> $produktid
LIMIT 6"; // Maximal 5 Produkte anzeigen
$ergebnis2 = $dbhandle->query($sql2);
if ($ergebnis2 && $ergebnis2->num_rows > 0) {
// Es gibt mindestens 1 Produkt derselben Kategorie (außer dem ausgewählten Produkt)
while ($row = $ergebnis2->fetch_assoc()) {
showalt($row, $ergebnis2);
}
} /*else {
$sql3 = "SELECT * FROM produkte WHERE produkt LIKE '%$produktname%' AND id <> $produktid LIMIT 6"; // Maximal 5 Produkte anzeigen
$ergebnis3 = $dbhandle->query($sql3);
if ($ergebnis3 && $ergebnis3->num_rows > 0) {
// Es gibt ähnliche Produkte
while ($row = $ergebnis3->fetch_assoc()) {
showalt($row, $ergebnis3);
}
} else {
echo "Keine weiteren Produkte gefunden";
}
}*/
} else {
echo "Fehler bei der Abfrage: " . $dbhandle->error;
}
} else {
header('location: ./index.php');
}
function showalt($ro, $res)
{
echo '<div id="unten">';
echo '<h1 id="vortit">Ähnliche Produkte</h1>';
echo '<div id="vorschl">';
while ($ro = $res->fetch_assoc()) {
echo '<div class="vprod">
<div class="vprodinfo">';
echo '<h1>' . $ro["produkt"] . '</h1>';
echo '<h2>' . $ro["preis"] . '€</h1>';
echo "</div>";
echo '<img src="./alle_produkte/' . $ro["dateiname"] . '">';
echo "</div>";
}
echo "</div>";
echo "</div>";
}
?>
</body>
</html>
+84
View File
@@ -0,0 +1,84 @@
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once "db.php";
// Datenbankverbindung
$servername = "ioannisdev.de";
$username = "samp";
$password = "password";
$dbname = "shopseite";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("FEHLER: " . $conn->connect_error);
}
// CSV-Datei einlesen und Daten importieren
if (($handle = fopen("CSV.csv", "r")) !== FALSE) {
fgetcsv($handle);
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$produkt = $data[0];
$preis = $data[1];
$lager = $data[2];
$lieferzeit = $data[3];
$kategorie = $data[4];
$dateiname = $data[5];
// Produkt existent?
$prodid = 0;
$prodquery = "SELECT id FROM produkte WHERE produkt = '$produkt'";
$prodres = $conn->query($prodquery);
if ($prodres !== false && $prodres->num_rows > 0) {
$row = $prodres->fetch_assoc();
$prodid = $row["id"];
} else {
$preis = str_replace('.', '', $preis);
$preis = str_replace(',', '.', $preis);
$preis = (float)$preis;
// Produkt in DB einfügen
$insprodquery = "INSERT INTO produkte (produkt, preis, lager, lieferzeit, dateiname)
VALUES ('$produkt', '$preis', $lager, $lieferzeit, '$dateiname')";
$conn->query($insprodquery);
$prodid = $conn->insert_id;
}
// Kategorie existent?
$katid = 0;
$katquery = "SELECT id FROM kategorien WHERE kategorie = '$kategorie'";
$katres = $conn->query($katquery);
if ($katres->num_rows > 0) {
$row = $katres->fetch_assoc();
$katid = $row["id"];
} else {
// Kategorie anlegen
$inskat = "INSERT INTO kategorien (kategorie) VALUES ('$kategorie')";
$conn->query($inskat);
$katid = $conn->insert_id;
}
// Verknüpfung zwischen Produkt und Kategorie herstellen
$checklinkq = "SELECT * FROM mapping WHERE produktid = '$prodid' AND kategorieid = '$katid'";
$checklinkres = $conn->query($checklinkq);
if (!$checklinkres) {
die("Fehler in der Abfrage: " . $conn->error);
}
if ($checklinkres && $checklinkres->num_rows == 0) {
$insprodkat = "INSERT INTO mapping (produktid, kategorieid)
VALUES ($prodid, $katid)";
dbaction($conn, $insprodkat);
}
}
fclose($handle);
} else {
echo "Fehler beim Öffnen der CSV-Datei.";
}
$conn->close();
+134
View File
@@ -0,0 +1,134 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>shopseite</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<div id="filter">
<div id="suche">
<form method="POST" action="./index.php">
<input type="search" name="suchbegriff" id="suchleiste" placeholder="Suchen...">
<button type="submit">
<span class="material-symbols-outlined">search</span>
</button>
</div>
<h2 id="h2kat">Kategorien</h2>
<div id="checkboxen">
<div id="kategorien">
<?php
include_once "db.php";
$sql = "SELECT * FROM kategorien";
$result = $dbhandle->query($sql);
if ($result && $result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "<label><input type='checkbox' name='geraet' value='" . $row['kategorie'] . "'/>" . $row['kategorie'] . "</label>";
}
}
?>
</div>
</div>
<h2 id="h2price">Preis</h2>
<div id="pricefilter">
<select name="prices" id="prices" onchange="this.form.submit()">
<option value="" selected>Preisspanne wählen...</option>
<option value="100" value="Select * From produkte Where preis > 0 and preis > 100">0€ - 100€</option>
<option value="500">100€ - 500€</option>
<option value="1000">500€ - 1000€</option>
<option value="2000">100€ - 2000€</option>
</select>
</div>
</form>
</div>
<div class="grid-container">
<?php
include_once "db.php";
include_once "import.php";
include_once "suche.php";
// Verbindungsdaten zur Datenbank
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = 'shopseite';
if (isset($_GET["page"])) {
$offset = (6 * $_GET["page"]) - 6;
if ($_GET["page"] > 1) {
$sql = "SELECT * FROM produkte LIMIT 6 OFFSET " . $offset;
$result = $dbhandle->query($sql);
//echo $offset;
} else {
//echo $offset;
$sql = "SELECT * FROM produkte LIMIT 6 OFFSET 0";
$result = $dbhandle->query($sql);
}
} else {
//echo $offset;
$sql = "SELECT * FROM produkte LIMIT 6 OFFSET 0";
$result = $dbhandle->query($sql);
}
if (isset($_GET["kategorie"])) {
$sql = "SELECT * FROM produkte WHERE id =1";
$result = $dbhandle->query($sql);
$kat = mysqli_fetch_assoc($result);
print_r($kat);
}
if (!isset($_GET["suchbegriff"])) {
if ($result && $result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$preis = number_format($row["preis"], 2, ',', '.');
echo '<a href="detail.php?prodid='.$row["id"].'">';
echo "<div class='grid-item'>";
echo "<h1 class='prodname'>";
echo $row["produkt"];
echo "</h1>";
echo "<h2 class='price'>$preis €</h2>";
if ($row["lager"] == 0) {
echo "<h1 id='soldindex' class='sold'>AUSVERKAUFT</h1>";
echo '<img class="grau" src="' . './alle_produkte/' . $row["dateiname"] . '">';
} else {
echo '<img draggable="false" src="' . './alle_produkte/' . $row["dateiname"] . '">';
}
echo "</div>";
echo "</a>";
}
} else {
echo "Keine Daten gefunden.";
}
}
?>
</div>
<div id="seiten">
<a href="http://localhost/shop/?page=1"><button class="pagebtn">1</button></a>
<a href="http://localhost/shop/?page=2"><button class="pagebtn">2</button></a>
<a href="http://localhost/shop/?page=3"><button class="pagebtn">3</button></a>
<a href="http://localhost/shop/?page=4"><button class="pagebtn">4</button></a>
</div>
</body>
</html>
+11
View File
@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Du hast was gekauft!</h1>
</body>
</html>
+43
View File
@@ -0,0 +1,43 @@
<?php
require_once "db.php";
// CSV-Datei einlesen + Daten importieren
if (($handle = fopen("csv.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$produkt = $data[0];
$preis = $data[1];
$lager = $data[2];
$lieferzeit = $data[3];
$kategorie = $data[4];
$dateiname = $data[5];
// Überprüfen, ob die Kategorie bereits existent
$katid = 0;
$katquery = "SELECT id FROM kategorien WHERE kategorie = '$kategorie'";
$katres = $dbhandle->query($katquery);
if ($katres !== false && $katres->num_rows > 0) {
$row = $katres->fetch_assoc();
$katid = $row["id"];
} else {
// Kategorie anlegen, wenn nicht existent
$insert_katquery = "INSERT INTO kategorien (kategorie) VALUES ('$kategorie')";
$dbhandle->query($insert_katquery);
$katid = $dbhandle->insert_id;
}
// Produkt in die Datenbank einfügen
$prodquery = "INSERT INTO produkte (produkt, preis, lager, lieferzeit, kategorie, dateiname)
VALUES ('$produkt', '$preis', $lager, $lieferzeit, '$kategorie','$dateiname')";
$dbhandle->query($prodquery);
// Verknüpfung zwischen Produkt und Kategorie
$prodkatquery = "INSERT INTO mapping (produktid, kategorieid)
VALUES (" . $dbhandle->insert_id . ", $katid)";
$dbhandle->query($prodkatquery);
}
fclose($handle);
}
$dbhandle->close();
?>
+34
View File
@@ -0,0 +1,34 @@
<?php
require_once "db.php";
$conn = $dbhandle;
if (isset($_GET['suchbegriff'])) {
$suchbegriff = $_GET['suchbegriff'];
$sql = "SELECT * FROM produkte WHERE produkt LIKE '%$suchbegriff%'";
$result = $conn->query($sql);
if (!$result) {
die('SQL-Fehler: ' . mysqli_error($conn));
}
if ($result && $result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$preis = number_format($row["preis"], 2, ',', '.');
echo "<div class='grid-item'>";
echo "<h1 class='prodname'>";
echo $row["produkt"];
echo "</h1>";
echo "<h2 class='price'>$preis €</h2>";
if ($row["lager"] == 0) {
echo "<h1 id='sold'>AUSVERKAUFT</h1>";
echo '<img class="grau" src="' . './alle_produkte/' . $row["dateiname"] . '">';
} else {
echo '<img draggable="false" src="' . './alle_produkte/' . $row["dateiname"] . '">';
}
echo "</div>";
}
} else {
echo "<b>Es wurden keine Produkte gefunden, welche ihrer Suchanfrage entsprechen.</b>";
}
}