Download as pdf or txt
Download as pdf or txt
You are on page 1of 156

Σερλνινγηθό Δθπαηδεπηηθό Ίδξπκα Κξήηεο

΢ρνιή Σερλνινγηθώλ Δθαξκνγώλ


Σκήκα Δθαξκνζκέλεο Πιεξνθνξηθήο & Πνιπκέζσλ

Πηπρηαθή Δξγαζία

Σίηινο: Φεθηαθό Βηβιηνπσιείν

Κνπινπκπξηηζίδνπ ΢νθία (ΑΜ: 1545)


Δπηβιέπσλ Καζεγεηήο:
Μαιάκνο Αζαλάζηνο
Κιεηζαξράθεο Μηρ.

Δπηηξνπή Αμηνιόγεζεο: Ισάλλεο Παρνπιάθεο


Κώζηαο Βαζηιάθεο

Σελίδα | 1
ABSTRACT
"Digital Books" is a website where users can choose their favorite books, and then
purchase them into the internet.
This application is a 3-level users website (administrator, registered user, user as a
guest), where each of them can perform the functions that correspond to him, according to his
rights, as they will be described below.
The Web application was developed with the programming languages PHP, MYSQL
and Html, and enables access and navigation to users through the Internet. The administrator
has unlimited rights, as he can change, modify and correct details of the application. He can
also supervise the actions of the members and their profile information.
According to the above, a user friendly website was developed which meets all the
requirements of usability and security of personal data. At the same time it ensures the
security of information which every registered member enters or modifies.
Various programs were used. More specifically, the program Dreamweaver CS3 for
the website design, Flash CS3 for the creation of graphics and a combination of PHP -
MySQL – Apache tools for the creation of the database, which are free distributed on the
internet and they are analyzed in detail in forthcoming chapters. Moreover, the freeware tool
phpMyAdmin was used which provides a graphical environment of the database system
management. The HTML language in conjunction with the PHP language were used for the
website programming, and SQL language for the database programming.
For any further questions that users may have, there has been developed a
communication form with the administrator, who could offer users further details via e-mail.

Σελίδα | 2
΢ΤΝΟΦΗ
Ζ ηζηνζειίδα “ΦΖΦΗΑΚΟ ΒΗΒΛΗΟΠΧΛΔΗΟ” είλαη έλαο ηζηνρψξνο ζηνλ νπνίν νη ρξήζηεο
κπνξνχλ λα δηαιέγνπλ ηα αγαπεκέλα ηνπο βηβιία, θαη έπεηηα λα κεηαβαίλνπλ ζηελ αγνξά ηνπο κέζσ
ηνπ Παγθφζκηνπ Ηζηνχ.
Ζ ζπγθεθξηκέλε εθαξκνγή απνηειεί κηα ηζηνζειίδα 3 επηπέδσλ ρξεζηψλ, (δηαρεηξηζηήο,
ρξήζηεο κε πξνλφκηα, ρξήζηεο επηζθέπηεο), φπνπ ν θαζέλαο απφ απηνχο κπνξεί λα εθηειέζεη ηηο
ιεηηνπξγίεο πνπ ηνπ αληηζηνηρνχλ, ζχκθσλα κε ηα δηθαηψκαηα ηνπ, φπσο ζα πεξηγξαθνχλ παξαθάησ.
Ζ Ηζηνζειίδα αλαπηχρζεθε κε ηηο γιψζζεο πξνγξακκαηηζκνχ PHP, MYSQL θαη Html, θαη
δίλεη ηε δπλαηφηεηα πξφζβαζεο θαη πινήγεζεο ζηνπο ρξήζηεο κέζσ ηνπ Παγθφζκηνπ Ηζηνχ. Ο
δηαρεηξηζηήο έρεη απεξηφξηζηα δηθαηψκαηα, δειαδή λα αιιάδεη, λα ηξνπνπνηεί θαη λα δηνξζψλεη
ζηνηρεία ηεο εθαξκνγήο θαη λα επηβιέπεη ηηο ελέξγεηεο ησλ κειψλ θαη ηα ζηνηρεία απηψλ.
Με βάζε ηα παξαπάλσ αλαπηχρζεθε κηα θηιηθή πξνο ην ρξήζηε ηζηνζειίδα, πνπ πιεξνί φιεο
ηηο πξνυπνζέζεηο επρξεζηίαο θαη αζθάιεηαο πξνζσπηθψλ δεδνκέλσλ. Σαπηφρξνλα δηαζθαιίδεη ηνλ
έιεγρν ησλ ζηνηρείσλ πνπ εηζάγεη ή ηξνπνπνηεί θάζε εγγεγξακκέλν κέινο.
Πην ζπγθεθξηκέλα, ρξεζηκνπνηήζεθε ην πξφγξακκα Dreamweaver CS3 γηα ηνλ ζρεδηαζκφ ηεο
ηζηνζειίδαο, ην Flash CS3 γηα ηελ δεκηνπξγία γξαθηθψλ θαη γηα ηελ δεκηνπξγία ηεο βάζεο δεδνκέλσλ
ρξεζηκνπνηήζεθε ν ζπλδπαζκφο ησλ εξγαιείσλ PHP – MySQL – Apache πνπ δηαλέκνληαη δσξεάλ
ζην δηαδίθηπν θαη αλαιχνληαη δηεμνδηθά ζηα επφκελα θεθάιαηα. Αθφκε ρξεζηκνπνηήζεθε θαη ην
εξγαιείν phpMyAdmin ην νπνίν επίζεο δηαλέκεηαη δσξεάλ θαη παξέρεη έλα γξαθηθφ πεξηβάιινλ
δηαρείξηζεο ηνπ ζρεζηαθνχ ζπζηήκαηνο βάζεο δεδνκέλσλ. Υξεζηκνπνηήζεθε ε γιψζζα
πξνγξακκαηηζκνχ HTML ζε ζπλδπαζκφ κε ηελ γιψζζα PHP γηα ηνλ πξνγξακκαηηζκφ ηεο
ηζηνζειίδαο, θαη ε γιψζζα πξνγξακκαηηζκνχ SQL γηα ηνλ πξνγξακκαηηζκφ ηεο βάζεο δεδνκέλσλ.
Γηα νπνηαδήπνηε απνξία ηνπ ρξήζηε έρεη ζρεδηαζηεί θφξκα επηθνηλσλίαο κε ηνλ δηαρεηξηζηεί
ηεο ηζηνζειίδαο, ν νπνίνο ζηέιλεη ηηο αλάινγεο δηεπθξηλήζεηο ζην email ηνπ ρξήζηε.

Σελίδα | 3
ΠΗΝΑΚΑ΢ ΠΔΡΗΔΥΟΜΔΝΧΝ
ABSTRACT ........................................................................................................................................... 2
΢ΤΝΟΦΗ ............................................................................................................................................... 3
ΚΔΦΑΛΑΙΟ 1: ΔΙ΢ΑΓΧΓΗ ................................................................................................................ 7
1.1 Πξφινγνο ..................................................................................................................... 7
1.2 Κίλεηξν γηα ηελ δηεμαγσγή ηεο εξγαζίαο .................................................................... 7
1.3 ΢θνπφο θαη ΢ηφρνη ηεο εξγαζίαο.................................................................................. 7
1.4 Γνκή ηεο εξγαζίαο ....................................................................................................... 8
ΚΔΦΑΛΑΙΟ 2: ΜΔΘΟΓΟΛΟΓΙΑ ΤΛΟΠΟΙΗ΢Η΢ ......................................................................... 9
2.1 Μέζνδνο Αλάιπζεο θαη Αλάπηπμεο Πηπρηαθήο .......................................................... 9
2.1.1 Γλσζηά ειεθηξνληθά βηβιηνπσιεία................................................................................. 9
2.1.2 Γηακφξθσζε .................................................................................................................. 10
2.2 Σερλνινγία................................................................................................................. 10
2.2.1 Γπλακηθέο Σνπνζεζίεο................................................................................................... 11
2.2.2 HTML............................................................................................................................ 11
2.2.3 PHP................................................................................................................................ 12
2.2.4 ΢ρεδίαζε Βάζεσλ δεδνκέλσλ ....................................................................................... 19
2.2.5 Καλνληθέο Παξαζηάζεηο ζπκβαηέο κε Perl ................................................................... 21
2.2.6 Γνκή Σνπνζεζίαο .......................................................................................................... 22
ΚΔΦΑΛΑΙΟ 3: ΢ΥΔΓΙΟ ΓΡΑ΢Η΢ ΓΙΑ ΣΗΝ ΔΚΠΟΝΗ΢Η ΣΗ΢ ΔΡΓΑ΢ΙΑ΢ .......................... 24
3.1 State of Art ζην ρψξν ησλ ειεθηξνληθψλ βηβιηνπσιείσλ. ........................................ 24
3.2 State Of Art ζηελ ηερλνινγία .................................................................................... 30
3.2.1 Γηαδίθηπν....................................................................................................................... 30
3.2.2 Παγθφζκηνο Ηζηφο.......................................................................................................... 30
3.2.3 Σνπνζεζίεο Ηζηνχ θαη Ηζηνζειίδεο ................................................................................ 31
3.2.4 ΢ρεδηαζκφο ΢ειίδσλ Ηζηνχ ............................................................................................ 31
3.2.5 Φφξκεο Ηζηνχ................................................................................................................. 32
3.2.6 Γηεχζπλζε IP ................................................................................................................. 32
3.2.7 Domain Name System ................................................................................................... 32
3.2.8 Φπιινκεηξεηήο Ηζηνχ .................................................................................................. 33
3.2.9 URL ............................................................................................................................... 33
3.2.10 Δπηθνηλσλία κέζσ Internet ............................................................................................ 34
3.2.11 Μεραλή αλαδήηεζεο ..................................................................................................... 34
3.2.12 Ζιεθηξνληθφ Δκπφξην ................................................................................................... 35

Σελίδα | 4
3.2.13 Αζθάιεηα ζην Internet................................................................................................... 35
3.3 Υξνλνδηάγξακκα Δξγαζίαο ....................................................................................... 37
ΚΔΦΑΛΑΙΟ 4: ΚΤΡΙΟ ΜΔΡΟ΢ ΠΣΤΥΙΑΚΗ΢ ............................................................................. 38
4.1 Ρφινη θαη δηθαηψκαηα πξφζβαζεο ............................................................................. 38
4.1.1 Λεηηνπξγίεο Γηαρεηξηζηή................................................................................................ 38
4.1.2 Λεηηνπξγίεο Υξήζηε-Μέινπο ........................................................................................ 38
4.1.3 Λεηηνπξγίεο Υξήζηε-Δπηζθέπηε ................................................................................... 39
4.1.4 Γεκηνπξγία Υξεζηψλ θαη Πξνλνκίσλ........................................................................... 39
4.2 ΢ρεδηαζκφο Ηζηνρψξνπ .............................................................................................. 41
4.2.1 Μνξθνπνίεζε ΢ειίδσλ κε Φχιια CSS......................................................................... 41
4.2.2 Γεκηνπξγία Γηαηάμεσλ κε Πίλαθεο ............................................................................... 46
4.2.3 ΢χλδεζκνη ...................................................................................................................... 47
4.2.4 Γηαδηθαζία θαηαζθεπήο ηνπ ηζηνρψξνπ ........................................................................ 47
4.3 Γεκηνπξγία Flash Animation..................................................................................... 62
4.4 Γεκηνπξγία Βάζεο Γεδνκέλσλ – Bookstore ............................................................. 66
4.4.1 Ολνκαζία ΢ηνηρείσλ ...................................................................................................... 66
4.4.2 Δπηινγή ηχπνπ ζηειψλ .................................................................................................. 66
4.4.3 Πεξηγξαθή Πηλάθσλ ...................................................................................................... 68
4.5 Πξνγξακκαηηζκφο κε ηελ PHP .................................................................................. 77
4.5.1 Δγγξαθή Υξήζηε ........................................................................................................... 77
4.5.2 Δίζνδν – Έμνδν απφ ηνλ Λνγαξηαζκφ ηνπ Υξήζηε ...................................................... 85
4.5.3 Δπηθνηλσλία κε ηνλ δηαρεηξηζηή .................................................................................... 90
4.5.4 Γεκηνπξγία Forum......................................................................................................... 92
4.5.5 Δκθάληζε Υξεζηψλ ....................................................................................................... 95
4.5.6 Γηαγξαθή Υξήζηε ......................................................................................................... 98
4.5.7 Αιιαγή ΢ηνηρείσλ Λνγαξηαζκνχ ................................................................................ 101
4.4.8 Δκθάληζε Βηβιίσλ ....................................................................................................... 106
4.5.9 Αλαδήηεζε Βηβιίσλ .................................................................................................... 113
4.5.10 Λίζηα αγαπεκέλσλ βηβιίσλ ........................................................................................ 116
4.5.11 Καιάζη Αγνξψλ ........................................................................................................... 122
4.5.12 Οινθιήξσζε Αγνξάο .................................................................................................. 130
4.5.13 Παξαγγειία ηνπ ρξήζηε .............................................................................................. 132
4.5.14 Πίλαθαο αγνξψλ .......................................................................................................... 134
4.5.15 Αγνξέο Υξεζηψλ ......................................................................................................... 135

Σελίδα | 5
4.5.16 Γηαγξαθή Παξαγγειίαο ............................................................................................... 136
4.5.17 Πξνζζήθε Βηβιίνπ ...................................................................................................... 138
4.6 Αζθάιεηα Ηζηνρψξνπ .............................................................................................. 151
4.7 Γηαδηθαζία Πιεξσκήο ............................................................................................. 152
ΚΔΦΑΛΑΙΟ 5: ΑΠΟΣΔΛΔ΢ΜΑΣΑ .............................................................................................. 153
5.1 ΢πκπεξάζκαηα ......................................................................................................... 153
5.2 Μειινληηθή Δξγαζία θαη Δπεθηάζεηο ..................................................................... 153
ΒΙΒΛΙΟΓΡΑΦΙΑ ............................................................................................................................... 155
ΠΑΡΑΡΣΗΜΑΣΑ ............................................................................................................................. 156
ΠΑΡΑΡΣΖΜΑ Α ............................................................................................................... 156
Οδεγίεο Δγθαηάζηαζεο ............................................................................................................... 156
ΠΑΡΑΡΣΖΜΑ Β ................................................................................................................ 156
DreamWeaver CS3 ...................................................................................................................... 156
MYSQL ....................................................................................................................................... 156
Πξνγξάκκαηα ζρεδίαζεο βάζεο δεδνκέλσλ ............................................................................... 156
΢χλδεζε ζηε MySQL .................................................................................................................. 156
Σνπηθφο Server Apache ............................................................................................................... 156
Photoshop CS3 ............................................................................................................................ 156
Flash CS3 .................................................................................................................................... 156
phpMyAdmin .............................................................................................................................. 156

Σελίδα | 6
ΚΔΦΑΛΑΙΟ 1: ΔΙ΢ΑΓΧΓΗ

1.1 Πξόινγνο
΢ην πιαίζην ησλ ζπνπδψλ ζην ηκήκα Πιεξνθνξηθήο ηνπ Σ.Δ.Η. Ζξαθιείνπ
εθπνλήζεθε πηπρηαθή εξγαζία κε ζέκα «Φεθηαθφ Βηβιηνπσιείν» φπνπ γίλεηαη κηα
πξνζπάζεηα λα δεκηνπξγεζεί έλαο ηξφπνο επηθνηλσλίαο ηεο επηρείξεζεο κε ηνπο πειάηεο ηεο.
Θα είλαη κηα εθαξκνγή παξαγγειίαο βηβιίσλ. Θα παξνπζηαζηεί κηα ηζηνζειίδα φπνπ ζα
κπνξεί θάπνηνο πειάηεο λα έρεη ηε δπλαηφηεηα λα παξαγγέιλεη πξντφληα δηακέζνπ ηνπ
Γηαδηθηχνπ απφ ην ζπίηη ηνπ. Ο πειάηεο ζα έρεη ηε δπλαηφηεηα λα επηιέμεη φπνην βηβιίν
επηζπκεί θαη λα δψζεη ηελ παξαγγειία ηνπ. Ο θάζε πειάηεο απαηηείηαη λα γίλεη κέινο έηζη
ψζηε λα πξαγκαηνπνηήζεη θάπνηα αγνξά.
Δπίζεο, ππάξρεη δπλαηφηεηα επηθνηλσλίαο ησλ ρξεζηψλ ζε κηα ζειίδα ε νπνία
εκπεξηέρεη ζρνιηαζκνχο ησλ βηβιίσλ. Ο θάζε ρξήζηεο ζπκπιεξψλνληαο ηελ θφξκα ηεο ζειίδαο
κπνξεί λα θάλεη ηελ δηθή ηνπ θξηηηθή. Ζ επηθνηλσλία κε ηνλ δηαρεηξηζηή πξαγκαηνπνηείηαη ζε
δηαθνξεηηθή ζειίδα ζηελ νπνία ν ρξήζηεο ζηέιλεη έλα κήλπκα απεπζείαο ζην email ηνπ δηαρεηξηζηή.
Σέινο γηα λα γίλεη ε ηζηνζειίδα πην ειθπζηηθή πξνο ηνλ πειάηε είλαη απαξαίηεηε ε
ρξήζε γξαθηθψλ.

1.2 Κίλεηξν γηα ηελ δηεμαγσγή ηεο εξγαζίαο


Ζ απφθαζε γηα ηελ επηινγή ηεο πηπρηαθήο πάξζεθε φηαλ κνπ δεηήζεθε ε δεκηνπξγία κηαο
ηζηνζειίδαο ελφο βηβιηνπσιείνπ, κέζσ ηεο νπνίαο νη πειάηεο ζα πξνέβαηλαλ ζηελ αγνξά ησλ βηβιίσλ.
Οη ρξήζηεο ηνπ Γηαδηθηχνπ κπνξνχλ εχθνια θαη γξήγνξα λα πεξηεγεζνχλ ζε κηα βάζε πιεξνθνξηψλ,
λα θάλνπλ ρξήζε ηεο ειεθηξνληθήο αιιεινγξαθίαο, θαη γεληθά λα ρξεζηκνπνηήζνπλ δηάθνξεο
ππεξεζηψλ πνπ έρνπλ ζηε δηάζεζή ηνπο.

1.3 ΢θνπόο θαη ΢ηόρνη ηεο εξγαζίαο


΢θνπφο ηεο πηπρηαθήο απηήο ήηαλ ε κειέηε, ζρεδίαζε θαη αλάπηπμε κηαο ηζηνζειίδαο φπνπ νη
ρξήζηεο ζα κπνξνχλ λα θάλνπλ online αγνξέο. Δπίζεο ,κειεηήζεθαλ ηξφπνη δεκηνπξγίαο κηαο βάζεο
δεδνκέλσλ φπνπ ζα απνζεθεχνληαη φια ηα δεδνκέλα πνπ ζα εκθαλίδνληαη ζηελ ηζηνζειίδα, θαζψο
θαη ζηνηρεία ησλ πειαηψλ φηαλ απηνί δεκηνπξγήζνπλ έλαλ ινγαξηαζκφ.
Ζ ηζηνζειίδα ζα δίλεη ηε δπλαηφηεηα ζε έλα ρξήζηε λα ελεκεξσζεί γηα ηα βηβιία ησλ
δηαθφξσλ θαηεγνξηψλ, γηα εθείλα πνπ κφιηο θπθινθφξεζαλ, γηα εθείλα πνπ έγηλαλ best seller, αιιά
θαη λα παξαζέζεη ηελ άπνςε ηνπ ζην forum ηεο ηζηνζειίδαο. Δπίζεο κπνξεί λα αλαδεηήζεη ην βηβιίν
πνπ επηζπκεί θαη λα δεκηνπξγήζεη κηα ιίζηα κε ηα αγαπεκέλα ηνπ βηβιία θαη έπεηηα λα κεηαβεί ζηελ
αγνξά ηνπο.

Σελίδα | 7
1.4 Γνκή ηεο εξγαζίαο
΢ην 1ν θεθάιαην, παξνπζηάδεηαη ε εηζαγσγή, ζηελ νπνία πεξηγξάθνληαη ν ζθνπφο
δεκηνπξγίαο ηεο ηζηνζειίδαο, ην θίλεηξν γηα ηελ πινπνίεζή ηεο, κηα κηθξή πεξίιεςε θαη ε δνκή ηεο
εξγαζίαο.
΢ην 2ν θεθάιαην, παξνπζηάδεηαη ε κεζνδνινγία πινπνίεζεο ηεο εξγαζίαο.
΢ην 3ν θεθάιαην, παξνπζηάδεηαη ην ζρέδην κε ην νπνίν αλαπηχρζεθε ε ηζηνζειίδα.
Στθ ςυνζχεια, παρουςιάηεται ην Κχξην Μέξνο ηεο πηπρηαθήο. ΢πγθεθξηκέλα, ζην 4ν
θεθάιαην, παξνπζηάδεηαη αλαιχνληαη νη εηδηθέο απαηηήζεηο ηνπ ινγηζκηθνχ θαη ζπγθεθξηκέλα νη
ιεηηνπξγηθέο απαηηήζεηο γηα θάζε επίπεδν ρξεζηψλ. Ο ηξφπνο δεκηνπξγίαο ηεο Βάζεο Γεδνκέλσλ. Ζ
δηαδηθαζία κε ηελ νπνία ζρεδηάζηεθε ν ηζηνρψξνο. Καζψο θαη νη κέζνδνο δεκηνπξγίαο ινγαξηαζκνχ
θαη αγνξάο ησλ βηβιίσλ πνπ ν ρξήζηεο επηζπκεί.
Έπεηηα παξαηίζεηαη ε Βηβιηνγξαθία πάλσ ζηελ νπνία βαζίζηεθε ε πξαγκάησζε ηεο
ηζηνζειίδαο.
Καη ηέινο, παξνπζηάδνληαη ηα παξαξηήκαηα. Αξρηθά παξαηίζεληαη ν ηξφπνο εγθαηάζηαζεο
ηνπ πξνγξάκκαηνο XAMPP ην νπνίν εκπεξηέρεη ηελ PHP, ηελ MySQL, ηνλ Apache server θαη ην
πξφγξακκα phpMyAdmin.

Σελίδα | 8
ΚΔΦΑΛΑΙΟ 2: ΜΔΘΟΓΟΛΟΓΙΑ
ΤΛΟΠΟΙΗ΢Η΢
2.1 Μέζνδνο Αλάιπζεο θαη Αλάπηπμεο Πηπρηαθήο
Με ηελ είζνδν ηεο ηερλνινγίαο ε έλλνηα ηνπ βηβιηνπσιείνπ κεηεμειίρζεθε. Ζ δηαθίλεζε ηνπ
βηβιίνπ κέζσ ηνπ Παγθφζκηνπ Ηζηνχ είλαη πιένλ κηα πξαγκαηηθφηεηα. Με ηελ εκθάληζε ηνπ
Γηαδηθηχνπ, ινηπφλ, ην βηβιηνπσιείν απνθηά λέεο δηαζηάζεηο θαη γίλεηαη πξνζβάζηκν απφ φιν ηνλ
θφζκν γηα λα πξνζθέξεη κεγαιχηεξε επθνιία ζηηο ζπλαιιαγέο ησλ πειαηψλ-ρξεζηψλ. Δίλαη
απηνλφεην φηη ην ειεθηξνληθφ βηβιηνπσιείν δηαθνξνπνηείηαη απφ ην ζπκβαηφ φζνλ αθνξά ηε
εκθάληζε, ηελ εμππεξέηεζε ησλ πειαηψλ-ρξεζηψλ θαζψο θαη ζηνλ ηξφπν ζπλαιιαγήο καδί ηνπο. Με
ηελ εκθάληζε ηνπ ειεθηξνληθνχ εκπνξίνπ νη ρξήζηεο ηνπ Γηαδηθηχνπ, αθφηνπ επηιέμνπλ ην βηβιίν
πνπ επηζπκνχλ απφ ην site ηνπ εθάζηνηε βηβιηνπσιείνπ, έρνπλ ηελ δπλαηφηεηα λα πξνβνχλ ζηελ
online αγνξά ηνπ.
Σν ειεθηξνληθφ βηβιηνπσιείν, ινηπφλ, δελ είλαη ηίπνηα άιιν απφ κηα δηεχζπλζε θαη κηα
ζειίδα ζην Γηαδίθηπν. Δίλαη έλα θαηάζηεκα ρσξίο ηνπηθνχο θαη ρξνληθνχο πεξηνξηζκνχο (ρσξίο νπξέο
θαη θαζπζηεξήζεηο) πνπ δηαζέηεη απεξηφξηζηεο δπλαηφηεηεο θαη πειάηεο απφ φιν ηνλ θφζκν. Ο
θαζέλαο κπνξεί λα αγνξάζεη ην βηβιίν νπνηνπδήπνηε ζπγγξαθέα θαη εθδφηε, αλεμαξηήησο γιψζζαο,
αιιά κφλν ειεθηξνληθά. Ζ επηθνηλσλία γίλεηαη κέζσ ειεθηξνληθνχ ηαρπδξνκείνπ (email) θαη νη
ζπλαιιαγέο πξαγκαηνπνηνχληαη κέζσ πηζησηηθψλ θαξηψλ.

2.1.1 Γλσζηά ειεθηξνληθά βηβιηνπσιεία


Amazon
Δίλαη έλα απφ ηα κεγαιχηεξα ειεθηξνληθά βηβιηνπσιεία. Δκθαλίδεηαη ζε δηάθνξεο γιψζζεο
θαη πξνζθέξεη πνιχ κεγάιε πνηθηιία ζεκαηηθψλ θαηεγνξηψλ γηα ηελ αλαδήηεζε βηβιίσλ. Σν
Amazon κπνξεί λα μεθίλεζε σο έλα online βηβιηνπσιείν, αιιά ζχληνκα δηαθνξνπνηήζεθε
παξέρνληαο θαη άιια πξντφληα φπσο DVD, CD, MP3 downloads, ινγηζκηθφ ειεθηξνληθψλ
ππνινγηζηψλ, ειεθηξνληθά παηρλίδηα, ειεθηξνληθά είδε, είδε έλδπζεο, έπηπια θαη ηξφθηκα.
Δπηπιένλ, παξέρεηαη ε δπλαηφηεηα ζπκκεηνρήο ζε δεκνπξαζίεο θαη ε αγνξά
κεηαρεηξηζκέλσλ βηβιίσλ θαη πξντφλησλ. Έρεη δεκηνπξγήζεη μερσξηζηέο ηζηνζειίδεο ζηνλ
Καλαδά, ην Ζλσκέλν Βαζίιεην, ηε Γεξκαλία, ηε Γαιιία, ηελ Ηηαιία, ηελ Απζηξία, ηελ Ηαπσλία θαη
ηελ Κίλα παξέρνληαο επίζεο ηε δηεζλή λαπηηιία ζε νξηζκέλεο ρψξεο γηα νξηζκέλα απφ ηα πξντφληα.

Greek books
Πξφθεηηαη γηα ηνλ ηζηφηνπν ελφο απφ ηα κεγαιχηεξα ειιεληθά ειεθηξνληθά βηβιηνπσιεία.
Φξνληίδνπλ λα θάλνπλ ηηο αγνξέο ειθπζηηθφηεξεο κε πξνζθνξέο, λέεο θπθινθνξίεο,
πξνηεηλφκελνπο ηίηινπο, δσξεάλ απνζηνιέο απφ θάπνην χςνο αγνξψλ. Δπίζεο, πξνζθέξεηαη
κία εθηελήο ζπιινγή απφ ηίηινπο πνπ θπθινθνξνχλ απηή ηε ζηηγκή ζηα βηβιηνπσιεία ηεο
ρψξαο. Δθηφο απφ βηβιία φκσο παξέρεη παηδηθά είδε, ηαηλίεο, ειεθηξνληθά παηρλίδηα θ.α. Ζ

Σελίδα | 9
εκθάληζε ηνπ θαιαζηνχ αγνξάο θαη ηεο Wishlist ηεο ηζηνζειίδαο καο βαζίζηεθε ζε απηήλ ηνπ
ζπγθεθξηκέλνπ ηζηφηνπνπ.

Bibliohora
Ζ Bibliohora είλαη έλαο ηζηφηνπνο θαζαξά αθηεξσκέλνο ζην βηβιίν. Πάλσ ζηελ δηακφξθσζε
απηνχ ηνπ ηζηνρψξνπ βαζίζηεθε ε δεκηνπξγία ηεο ηζηνζειίδαο. ΢ηελ αξρή βξίζθεηαη ην
κελνχ θαη αθξηβψο απφ θάησ έλα γξαθηθφ κέζσ ηνπ νπνίνπ εκθαλίδνληαη ηα πξνηεηλφκελα
βηβιία. Αξηζηεξά, φπσο θαη ζηα πεξηζζφηεξα ειεθηξνληθά βηβιηνπσιεία, βξίζθνληαη νη
θαηεγνξίεο ησλ βηβιίσλ. Ζ εκθάληζε ηεο κεραλήο αλαδήηεζεο θαη ν ρψξνο πνπ
θαηαιακβάλεη ζηελ ηζηνζειίδα βαζίζηεθε ζηελ κεραλή αλαδήηεζεο ηεο Bibliohoras.
Δπίζεο, ζηελ αξρηθή ζειίδα γίλεηαη ε εκθάληζε ησλ λέσλ θαηεγνξηψλ. Ζ δηαθνξά βξίζθεηαη
ζηελ θφξκα εηζφδνπ πνπ ζηελ πεξίπησζε ηνπ δηθνχ καο ηζηνρψξνπ ηνπνζεηήζεθε ζηελ
αξρηθή ζειίδα.

2.1.2 Γηακόξθσζε
Φπζηθά, θάζε βηβιηνπσιείν αθνινπζεί ηελ δηθή ηνπ πνιηηηθή θαη ηαθηηθή ζηελ νξγάλσζε ηνπ
θαηαζηήκαηνο. Σηο πεξηζζφηεξεο θνξέο ηα γξαθηθά είλαη ιίγα, ελψ κεγαιχηεξε ζεκαζία δίλεηαη ζηελ
πεξηγξαθή ησλ βηβιίσλ. Σα ζηνηρεία πεξηγξαθήο, εθηφο απφ ηνλ ηίηιν, ην ζπγγξαθέα θαη ηνλ εθδφηε
πεξηιακβάλνπλ θαη κηα θσηνγξαθία ηνπ εμψθπιινπ, ην ISBN, ηνλ αξηζκφ ησλ ζειίδσλ θαη ελλνείηαη
ηελ ηηκή. Δπίζεο, ππάξρεη κηα ιίζηα κε ηα Best Sellers, δειαδή ηα θαιχηεξα βηβιία ζχκθσλα κε ηηο
πσιήζεηο, κηα άιιε κε ηηο πην πξφζθαηεο θπθινθνξίεο, θαη κηα ιίζηα κε ηα βηβιία πνπ πξνηείλεη ην
εθάζηνηε βηβιηνπσιείν. Δθηφο απφ ιίζηεο βηβιίσλ είλαη πηζαλφ ε χπαξμε κηαο ελφηεηαο ζρνιηαζκνχ
ησλ βηβιίσλ, φπνπ ν ρξήζηεο κπνξεί λα δηαβάζεη ηα ζρφιηα θαη ηελ θξηηηθή ησλ αλαγλσζηψλ πξηλ
απνθαζίζεη γηα θάπνηα αγνξά ηνπ.
Ζ δηακφξθσζε ηεο θεληξηθή ζειίδα δηαθέξεη ζε θάζε ειεθηξνληθφ βηβιηνπσιείν. ΢ηηο
πεξηζζφηεξεο πεξηπηψζεηο ππάξρεη ην βαζηθφ κελνχ κε ηηο θχξηεο ελφηεηεο ηνπ ηζηφηνπνπ, θαζψο θαη
κηα κεραλή αλαδήηεζεο ψζηε ν ρξήζηεο λα εληνπίζεη πην εχθνια ην βηβιίν πνπ επηζπκεί. Δπίζεο,
πνιχ ζεκαληηθή είλαη ε θαηεγνξηνπνίεζε ησλ βηβιίσλ γηα ηελ θαιχηεξε πινήγεζε ηνπ ρξήζηε. ΢πρλά
ππάξρεη ζειίδα κε πιεξνθνξίεο γηα ην ηζηνξηθφ, ηνπο ζηφρνπο θαη ηελ αηηία δεκηνπξγίαο ηνπ
ειεθηξνληθνχ βηβιηνπσιείνπ.
Γηα ηελ δηεθπεξαίσζε ηεο ζπλαιιαγήο ν ρξήζηεο πξέπεη λα ζπκπιεξψζεη ηα ζηνηρεία ηνπ ζε
κηα ειεθηξνληθή θφξκα πνπ είλαη απαξαίηεηα γηα λα πξαγκαηνπνηεζεί ε παξαγγειία. ΢ε φια ηα
ειεθηξνληθά βηβιηνπσιεία ππάξρεη ην θαιάζη αγνξψλ ζην νπνίν ν ρξήζηεο ηνπνζεηεί βηβιία πνπ ησλ
ελδηαθέξνπλ, επηιέγεη ηελ πνζφηεηα ησλ βηβιίσλ πνπ ζέιεη λα αγνξάζεη θαη πξνρσξεί ζηελ πιεξσκή
ή ζηελ αθχξσζε ηεο παξαγγειίαο.

2.2 Σερλνινγία
Ζ ηζηνζειίδα ζα θαηαζθεπαζηεί κε ην πξφγξακκα ζρεδίαζεο ηζηνζειίδσλ DreamWeaver. To
DreamWeaver είλαη ην θνξπθαίν πξφγξακκα δεκηνπξγίαο θαη επεμεξγαζίαο ηζηνζειίδσλ πνπ
επηηξέπεη ζην δηαρεηξηζηή ζπζηήκαηνο λα νξγαλψλεη ην πεξηερφκελν θαη λα πξνζαξκφδεη ηελ
παξνπζίαζε ηνπ ηζηνρψξνπ. Με ην DreamWeaver κπνξνχκε λα δεκηνπξγήζνπκε θφξκεο (forms),

Σελίδα | 10
πιαίζηα (frames), πίλαθεο (tables) θαη άιια αληηθείκελα ηεο HTML. Δπίζεο, κπνξεί λα
ρξεζηκνπνηεζεί θαη γηα ηε δεκηνπξγία εθαξκνγψλ πνιπκέζσλ. Έρεη δπλαηφηεηεο γηα δεκηνπξγία
δπλακηθήο HTML (DHMTL), δεκηνπξγία επηπέδσλ (layers) θαη ζπγγξαθή ζελαξίσλ (scripts). Σέινο,
πεξηέρεη δηθέο ηνπ ζπκπεξηθνξέο (behaviors), πνπ είλαη έηνηκα scripts ηα νπνία κπνξνχκε λα
πξνζζέζνπκε πνιχ εχθνια ζ‟ έλα αληηθείκελν.

2.2.1 Γπλακηθέο Σνπνζεζίεο


Οη δπλακηθέο ηζηνζειίδεο, δεκηνπξγνχληαη κε κία γιψζζα πξνγξακκαηηζκνχ θαηάιιειε γηα
ην δηαδίθηπν, φπσο είλαη ε PHP, ε νπνία ελζσκαηψλεηαη ζε εηηθέηεο HTML θαη έηζη νπζηαζηηθά
απνηεινχλ πιήξεο εθαξκνγέο. Ζ δηαθνξά αλάκεζα ζε δπλακηθέο θαη ζηαηηθέο ηζηνζειίδεο αθνξά ηελ
ιεηηνπξγία θαη φρη ηελ εκθάληζε. Όηαλ ιέκε πσο κηα ηζηνζειίδα είλαη ζηαηηθή δελ ελλννχκε πσο
ηίπνηα δελ θηλείηαη, αληηζέησο κπνξεί λα πεξηιακβάλεη πνιιά γξαθηθά, αιιά φηη ην πεξηερφκελν ηεο
είλαη ζπγθεθξηκέλν. Απφ ηελ άιιε νη δπλακηθέο ηζηνζειίδεο ρξεζηκνπνηνχλ βάζεηο δεδνκέλσλ απ‟
φπνπ αληινχλ ηα ζηνηρεία πνπ ζέινπλ λα εκθαλίζνπλ. Έηζη ε πξνζζαθαίξεζε πεξηερνκέλνπ είλαη κηα
εχθνιε ππφζεζε.
Ζ θαηαζθεπή ησλ δπλακηθψλ ηζηνζειίδσλ κπνξεί λα είλαη πην πνιχπινθε ζε ζρέζε κε ηηο
ζηαηηθέο ηζηνζειίδεο, αιιά γηα ηελ δεκηνπξγία ηνπο ππάξρνπλ δηαζέζηκεο πνιιέο ηερλνινγίεο. Οη πην
ζπλεζηζκέλεο είλαη νη ASP.NET, JSP, ColdFusion, Rudy on Rails, θαη PHP. Σν πεξηερφκελν ηεο
ηζηνζειίδαο, απνζεθεχεηαη θαη αληιείηαη δπλακηθά απφ κία ή πεξηζζφηεξεο βάζεηο δεδνκέλσλ,
επηηξέπνληαο έηζη ηελ εγγξαθή θαη ζχλδεζε ησλ ρξεζηψλ, ηελ επίηεπμε ειεθηξνληθνχ εκπνξίνπ θαη
παξφκνηεο δηαδηθαζίεο. Απηφ είλαη θαη ην κεγάιν πιενλέθηεκα πνπ πξνζθέξνπλ έλαληη ησλ ζηαηηθψλ,
δειαδή ηελ αιιειεπίδξαζε ηνπ ρξήζηε κε ηε ζειίδα.

2.2.2 HTML
Σα αξρηθά HTML ( HyperText Markup Language) είλαη κηα γιψζζα ζήκαλζεο δειαδή
απνηεινχληαη απφ ιέμεηο-θιεηδηά, κέζα ζε γσληαθέο αγθχιεο (φπσο <html>). Οη εηηθέηεο HTML
θαλνληθά έξρνληαη ζε δεχγε, φπσο <h1> θαη </ h1>. Σα HTML ζηνηρεία απνηεινχλ ηα δνκηθά
ζηνηρεία ηνπ ζπλφινπ ησλ ηζηνρψξσλ. Ο ζθνπφο ελφο web browser είλαη λα δηαβάζεηε έγγξαθα
HTML θαη λα ηα ζπλζέζεη ζε νπηηθφ ή αθνπζηηθφ ηζηνζειίδεο. Σν πξφγξακκα πεξηήγεζεο δελ
εκθαλίδεη ηηο εηηθέηεο HTML, αιιά ρξεζηκνπνηεί ηηο εηηθέηεο γηα λα εξκελεχζεη ην πεξηερφκελν ηεο
ζειίδαο. Δπίζεο, παξέρεη έλα κέζν γηα ηε δεκηνπξγία δνκεκέλσλ εγγξάθσλ ππνδειψλνληαο δνκηθή
ζεκαζηνινγία γηα ην θείκελν, φπσο είλαη νη θεθαιίδεο, νη παξάγξαθνη, θαηάινγνη, ζπλδέζεηο, θαη
άιια ζηνηρεία. Δίλαη δπλαηή ε ελζσκάησζε scripts ζε γιψζζεο φπσο JavaScript πνπ επεξεάδνπλ ηε
ζπκπεξηθνξά ησλ HTML ηζηνζειίδσλ. Αθφκε φκσο ππάξρνπλ δηαθνξέο ζηελ απεηθφληζε θάπνηαο
ζειίδαο απφ δηαθνξεηηθνχο browsers εηδηθά φηαλ πεξηιακβάλνληαη θαη εθαξκνγέο Javascript.
Σα πξνεπηιεγκέλεο ραξαθηεξηζηηθά γηα θάζε ζηνηρείν ηεο HTML νξίδνληαη ζην πξφγξακκα
πεξηήγεζεο, θαη ηα ραξαθηεξηζηηθά απηά κπνξνχλ λα ηξνπνπνηεζνχλ κε πξφζζεηε ρξήζε ηνπ
ζρεδηαζηή ηζηνζειίδα CSS. Σα θχιια CSS παξέρνπλ ηε δπλαηφηεηα νξηζκνχ θνηλψλ θαλφλσλ
κνξθνπνίεζεο γηα έλα ζχλνιν ηζηνζειίδσλ ζε εμσηεξηθά αξρεία.
Σέινο, αμίδεη λα ζεκεησζεί φηη ε html είλαη ε πξψηε θαη πην δηαδεδνκέλε γιψζζα πεξηγξαθήο
ηεο δνκήο κηαο ηζηνζειίδαο. Παξ‟ φια απηά πνιινί είλαη εθείλνη πνπ δεκηνπξγνχλ κηα ηζηνζειίδα
ρσξίο ηελ ζπγγξαθή θψδηθα γη‟ απηφ θαη έρεη δεκηνπξγεζεί εηδηθφ ινγηζκηθφ, πνπ επηηξέπεη ην
δεκηνπξγία κηαο ζειίδαο κφλν νπηηθά, ρσξίο ηε ζπγγξαθή θψδηθα, δίλνληαο φκσο ηε δπλαηφηεηα
παξέκβαζεο θαη ζηνλ θψδηθα. Έλα ηέηνην πξφγξακκα είλαη ην Dreamweaver ηεο Adobe θαη ην
FrontPage ηεο Microsoft.

Σελίδα | 11
2.2.3 PHP

Δηθόλα 2.1: PHP

Ζ ΡΖΡ είλαη κηα scripting γιψζζα πξνγξακκαηηζκνχ ζρεδηαζκέλε εηδηθά γηα ηελ παξαγσγή
δπλακηθψλ ηζηνζειίδσλ ζην Γηαδίθηπν. Ζ PHP ελζσκαηψλεηαη κέζα ζε κηα HTML θαη εθηειείηαη
θάζε θνξά πνπ ζα επηζθεπηφκαζηε κηα ζειίδα. Σα αξρεία πνπ ζπκπεξηιακβάλνπλ θψδηθα PHP ζα
πξέπεη λα έρνπλ ηελ θαηάιιειε επέθηαζε, φπσο *.php, *.php4, *.phtml θ.ά. Όκσο αθφκε θη φηαλ έλα
αξρείν έρεη ηελ επέθηαζε .php, ζα πξέπεη ν server λα είλαη θαηάιιεια ξπζκηζκέλνο έηζη ψζηε λα
επεμεξγαζηεί ηνλ θψδηθα. Ο δηαθνκηζηήο Apache, πνπ ρξεζηκνπνηείηαη ζηα ιεηηνπξγηθά ζπζηήκαηα
GNU/Linux θαη Microsoft Windows, ππνζηεξίδεη εμ νξηζκνχ ηελ εθηέιεζε ηνπ θψδηθα PHP.
Δπίζεο, ε PHP βξίζθεηαη ζηελ πιεπξά ηνπ δηαθνκηζηή. Απηφ ζεκαίλεη πσο νηηδήπνηε θάλεη ν θψδηθαο
ηεο PHP ζπκβαίλεη ζην δηαθνκηζηή.
Ζ ΡΖΡ δεκηνπξγήζεθε απφ έλα θνηηεηή, ηνλ Rasmus Lerdorf, ην 1994, ν νπνίνο
ρξεζηκνπνίεζε ηελ γιψζζα πξνγξακκαηηζκνχ Perl γηα λα θηηάμεη έλα απιφ script. Τηνζεηήζεθε θαη
απφ άιια άηνκα θαη έρεη πεξάζεη απφ ηξεηο βαζηθέο εθδφζεηο . Απηή ηε ζηηγκή νη πεξηζζφηεξνη
ηζηφηνπνη ρξεζηκνπνηνχλ θπξίσο ηηο εθδφζεηο 4 θαη 5 ηεο PHP. ΢ήκαηλε Personal Home Page (
πξνζσπηθή αξρηθή ζειίδα ), αιιά άιιαμε ζχκθσλα κε ηελ ζχκβαζε GNU θαη ηψξα ζεκαίλεη PHP
Hypertext Preprocessor ( πξνεπεμεξγαζηήο θεηκέλνπ PHP).
Ζ ΡΖΡ δηαηίζεληαη ζε φινπο ηνπο ρξήζηεο ρσξίο ρξέσζε απφ ηελ ζειίδα www.php.net.

Πιενλεθηήκαηα ηεο PHP

Πνιιέο γιψζζεο ππάξρνπλ γηα ηελ δεκηνπξγία δπλακηθψλ ηζηνζειίδσλ: Perl, Microsoft
Active Server Pages (ASP) , Java Server Pages ( JSP ) θαη Allaire Cold Fusion.

Ζ ΡΗΡ έρεη πνιιά πιενλεθηήκαηα έλαληη ησλ παξαπάλσ γισζζψλ πξνγξακκαηηζκνχ, φπσο :
Τςειή απφδνζε (κε έλαλ θηελφ server κπνξνχλ λα εμππεξεηεζνχλ εθαηνκκχξηα
ρξήζηεο θαζεκεξηλά).
Δπηηπγράλεηαη εχθνιε ζπλεξγαζία κε ηνπο πεξηζζφηεξνπο database servers.
Δλζσκαησκέλεο βηβιηνζήθεο γηα πνιιέο ζπλεζηζκέλεο Web δηαδηθαζίεο
(δπλακηθή δεκηνπξγία εηθφλσλ, απνζηνιή email, ρεηξηζκφο cookies).
Υακειφ θφζηνο (δηαηίζεληαη δσξεάλ).

Σελίδα | 12
Δπθνιία κάζεζεο θαη ρξήζεο (ε ζχληαμή ηεο κνηάδεη κε ηηο γιψζζεο Java θαη C).
Μεηαθεξζηκφηεηα (ν ίδηνο θψδηθαο δνπιεχεη ρσξίο αιιαγέο θαη ζε άιιν
ιεηηνπξγηθφ ζχζηεκα).
Γηαζεζηκφηεηα ηνπ θψδηθα πξνέιεπζεο (κπνξνχλ λα πξαγκαηνπνηεζνχλ αιιαγέο
ζηε γιψζζα).

1. Γεκηνπξγία Φνξκώλ

Δηθόλα 2.2: Δπηθνηλσλία θπιινκεηξεηή κε webserver.

Ο ρεηξηζκφο ησλ θνξκψλ κε ηελ γιψζζα PHP είλαη πνιχ ζεκαληηθή δηεξγαζία ζε κηα
δπλακηθή ηνπνζεζία. Πξψηα δεκηνπξγνχκε ηελ θφξκα HTML, θαη έπεηηα κε έλα PHP ζελάξην
επεμεξγαδφκαζηε ηα δεδνκέλα ηεο θφξκαο.
Μηα θφξκα HTML δεκηνπξγείηαη κε ηελ ρξήζε εηηθεηψλ form νη νπνίεο έρνπλ ηελ εμήο
ζχληαμε:
<form action=”script.php” method=”post”>
</form>
Σν πην ζεκαληηθφ ραξαθηεξηζηηθφ ηεο εηηθέηαο είλαη ην action, πνπ ππαγνξεχεη ζε πνηα
ζειίδα ζα ζηαινχλ ηα δεδνκέλα. Σν method ραξαθηεξηζηηθφ θαζνξίδεη ηνλ ηξφπν απνζηνιήο ησλ
δεδνκέλσλ ζηε ζειίδα πνπ ζα ρεηξηζηεί ηα απνηειέζκαηα. Οη δχν επηινγέο – get θαη post –
αλαθέξνληαη ζηε κέζνδν HTTP (Hypertext Transfer Protocol) πνπ ζα ρξεζηκνπνηεζεί.
Ζ κέζνδνο get ζηέιλεη ηα δεδνκέλα πνπ έρεη ππνβάιιεη ν ρξήζηεο ζηε ζειίδα-απνδέθηε σο
κηα ζεηξά δεπγψλ όνομα-ηιμή πξνζαξκνζκέλα ζηε δηεχζπλζε URL.
πρ. http://www.example.com/script.php?name=Sofia&age=25
Έηζη, ε ζειίδα script.php δέρεηαη ηηο ηηκέο ησλ κεηαβιεηψλ mane θαη age. Γεληθά ε κέζνδνο
get ρξεζηκνπνηείηαη γηα ηε δήηεζε πιεξνθνξηψλ, φπσο είλαη ηα απνηειέζκαηα κηαο αλαδήηεζεο. Ζ
κέζνδνο post ρξεζηκνπνηείηαη φηαλ απαηηείηαη απφ ην ρξήζηε ε εθρψξεζε θάπνηα ηηκήο ζηα δηάθνξα
πεδία ηεο θφξκαο.

Σελίδα | 13
Δπίζεο, ππάξρνπλ ηα πιαίζηα θεηκέλνπ (text fields) πνπ επηηξέπνπλ ζην ρξήζηε λα θαηαρσξεί
δεδνκέλα.

Δηθόλα 2.3: Text field

Καζψο θαη ηα πιαίζηα θεηκέλνπ password κέζσ ησλ νπνίσλ εθρσξείηαη ν θσδηθφο ηνπ ρξήζηε
ζηε βάζε δεδνκέλσλ, αθνχ πξψηα θσδηθνπνηεζεί θαηάιιεια απφ ηελ ζπλάξηεζε SH1() ηεο PHP. Ζ
ζπλάξηεζε απηή δεκηνπξγεί κηα θξππηνγξαθεκέλε ζπκβνινζεηξά κήθνπο αθξηβψο 40 ραξαθηήξσλ.

Δηθόλα 2.4 : Γεκηνπξγία πεδίνπ Password.

Σα ξαδηνπιήθηξα (radio buttons) επηηξέπνπλ κηα επηινγή, ε νπνία απνθιείεη ηηο άιιεο, θαζψο
ε επηινγή ελφο θνπκπηνχ αθπξψλεη νπνηαδήπνηε άιιε επηινγή. Έηζη, έρνπλ ην ίδην φλνκα, αιιά
δηαθνξεηηθέο ηηκέο.

Δηθόλα 2.5: radio buttons

Σα πιαίζηα ειέγρνπ (checkboxes) επηηξέπνπλ ζηνπο ρξήζηεο λα ελεξγνπνηήζνπλ φζεο


επηινγέο ζέινπλ απφ κηα ιίζηα επηινγψλ.

Δηθόλα 2.6: checkboxes

Σελίδα | 14
Σν πηπζζφκελν κελνχ μεθηλάεη κε ηελ εηηθέηα select, θαη κεηά θάζε εηηθέηα option δεκηνπξγεί
κηα αθφκε γξακκή ζηε ιίζηα ησλ επηινγψλ.

<select>
<option value="walther">Walther</option>
<option value="henderson">Henderson</option>
<option value="smith">Smith</option>
</select>

Δηθόλα 2.7: Πηπζζόκελν κελνύ

Μηα πεξηνρή θεηκέλνπ (textarea) δηαθέξεη απφ ην πιαίζην θεηκέλνπ (text), γηαηί παξνπζηάδεηαη
σο πιαίζην θαη φρη σο κηα γξακκή. Δπηηξέπνπλ ηελ πιεθηξνιφγεζε πνιιψλ πιεξνθνξηψλ θαη είλαη
ρξήζηκεο γηα ζρφιηα ηνπ ρξήζηε.

<p><b>Comments:</b>
<textarea name=”comments”
rows=”10” cols=”50”>
</textarea>
</p>

Δηθόλα 2.8: Textarea

Σα θνπκπηά ππνβνιήο εθηεινχλ ελέξγεηεο φηαλ παηηνχληαη. Οη πξνθαζνξηζκέλεο ηηκέο ηνπο


είλαη “Submit” ή “Reset”. Μπνξνχκε φκσο λα ηνπο νξίζνπκε θαη άιιεο εξγαζίεο επεμεξγαζίαο ζε
θψδηθα.

Δηθόλα 2.9: Γεκηνπξγία buttons ζε θόξκεο

2. Δπηθύξσζε δεδνκέλσλ θόξκαο


Δίλαη πνιχ ζεκαληηθφ λα ειέγρνπκε ηα δεδνκέλα πνπ θαηαρσξίδνληαη ζε κηα θφξκα γηα
ιφγνπο αζθάιεηαο θαη δηαρείξηζεο ζθαικάησλ. Κάζε ζρεδηαζηήο κηαο ηζηνζειίδαο είλαη ππεχζπλνο
γηα ηελ ζσζηή ιεηηνπξγίαο θάζε θφξκαο πνπ εκπεξηέρεηαη ζε έλα ηζηνρψξν. Γηα ηελ επηθχξσζε ησλ
δεδνκέλσλ κηαο θφξκαο απαηηείηαη ε ρξήζε ζπλζεθψλ, ζπλαξηήζεσλ, ηειεζηψλ, θαη παξαζηάζεσλ.
Μία ζπλάξηεζε πνπ ρξεζηκνπνηείηαη ζπλήζσο είλαη ε isset(), πνπ ειέγρεη αλ έρεη δνζεί ηηκή ζε κία
κεηαβιεηή. Έλα πξφβιεκα ηεο ζπλάξηεζεο isset() είλαη φηη δελ κπνξεί λα δηαθξίλεη αλ κηα
ζπκβνινζεηξά είλαη θελή ή φρη. Γηα λα ειέγμνπκε, ινηπφλ, αλ ν ρξήζηεο έρεη δψζεη ηηκή ζε έλα πεδίν
θεηκέλνπ, ρξεζηκνπνηνχκε ηε ζπλάξηεζε empty(), ε νπνία ειέγρεη αλ κηα κεηαβιεηή έρεη κενή
(empty) ηηκή.

Σελίδα | 15
Καηά ηελ επηθχξσζε κηαο θφξκαο πξψηα ειέγρνπκε αλ ν ρξήζηεο θαηαρσξήζεη ή επηιέμεη
θάπνην ζηνηρείν, αλ ππάξρεη θάπνηα ιίζηα ηηκψλ. Έπεηηα πξέπεη λα εμαζθαιίζνπκε φηη ηα
ππνβαιιφκελα δεδνκέλα έρνπλ ηνλ θαηάιιειν ηχπν, ηελ ζσζηή κνξθή, ή είλαη θάπνηα ζπγθεθξηκέλε
απνδεθηή ηηκή.

3. Δλζσκάησζε ΡΗΡ ζηελ HTML

Δηθόλα 2.10: Δλζσκάησζε PHP ζηελ HTML

Σν “ζψκα” ηεο HTML θαζνξίδεηαη απφ ηελ εηηθέηα body. H PHP, φπσο είπακε,
ελζσκαηψλεηαη ζηελ HTML, δειαδή αλακηγλχνπκε θψδηθα PHP θαη HTML κέζα ζην ίδην αξρείν.
Γηα λα πξνζζέζνπκε ηνλ θψδηθα PHP πξέπεη λα ηνλ γξάςνπκε αλάκεζα ζηηο εηηθέηεο PHP:
<?php

?>
Ό,ηη βξίζθεηαη κέζα ζηηο εηηθέηεο απηέο ν δηαθνκηζηή ην ζεσξεί θψδηθαο PHP. Αιιηψο, αλ βξίζθεηαη
δειαδή έμσ απφ ηηο εηηθέηεο ζεσξείηαη σο θψδηθαο HTML. Γηα λα ζηείιεη ε PHP ηα δεδνκέλα ζην
θπιινκεηξεηή ρξεζηκνπνηεί ηηο ζπλαξηήζεηο echo() θαη print().

4. Πίλαθεο
Μέζα ζε έλα πίλαθα έρνπκε ηε δπλαηφηεηα λα απνζεθεχζνπκε πνιιέο μερσξηζηέο
πιεξνθνξίεο. ΢αλ απνηέιεζκα πξνθχπηεη κηα ιίζηα ηηκψλ, θάζε κηα απφ ηηο νπνίεο κπνξεί λα είλαη
ζπκβνινζεηξά, αξηζκφο, ή έλαο άιινο πίλαθαο. Ζ PHP ππνζηεξίδεη δχν είδε πηλάθσλ: απιθμοδεικηών,
πνπ ρξεζηκνπνηνχλ αξηζκνχο σο θιεηδηά θαη ζςνειπμικούρ, πνπ ρξεζηκνπνηνχλ σο θιεηδηά
ζπκβνινζεηξέο.
Γηα λα αλαθεξζνχκε ζε κηα ζπγθεθξηκέλε ηηκή ελφο πίλαθα γξάθνπκε πξψηα ην φλνκα ηνπ
πίλαθα θαη έπεηηα ην θιεηδί κέζα ζε αγθχιεο:
echo $authors[0];
echo $books[„BK‟];
Ζ εθηχπσζε ελφο πίλαθα είλαη πην δχζθνιε ζε ζρέζε κε εθείλε ησλ ζπκβνινζεηξψλ ιφγσ ηεο
δηαθνξεηηθήο ζχληαμεο. Αλ ζέινπκε λα εθηππψζνπκε έλα κεκνλσκέλν ζηνηρείν γξάθνπκε:
echo “Ο ζπγγξαθέαο απηνύ ηνπ βηβιίνπ είλαη ν $author[0]”;
Αλ φκσο ζέινπκε λα εθηππψζνπκε έλα πίλαθαο πνπ ρξεζηκνπνηεί ζπκβνινζεηξέο σο θιεηδηά, πξέπεη
λα θιείζνπκε ζε άγθηζηξα ην φλνκα ηνπ πίλαθα.

Σελίδα | 16
echo “Ο ζπγγξαθέαο απηνύ ηνπ βηβιίνπ είλαη ν {$author[„AT‟]}”;

Τπεξθαζνιηθνί Πίλαθεο

Τπεξθαζνιηθέο κεηαβιεηέο νλνκάδνληαη νη έηπκνη πίλαθεο πνπ δηαζέηεη ε PHP: $_GET,


$_POST, $_REQUEST, $_SERVER, $_ENV, $_SESSION θαη $_COOKIE.
΢ηε κεηαβιεηή $_GET, απνζεθεχνληαη νη ηηκέο πνπ κέζσ ηεο κεζφδνπ get κεηαβηβάδνληαη ζε
έλα άιιν ζελάξην ηεο PHP. ΢ηε κεηαβιεηή $_POST απνζεθεχνληαη ηα δεδνκέλα πνπ ε κέζνδνο post
κεηαβηβάδεη ζε έλα ζελάξην PHP απφ κηα θφξκα HTML. Οη δχν απηέο κεηαβιεηέο, καδί κε ηελ
$_COOKIE απνηεινχλ ππνζχλνια ηεο κεηαβιεηήο $_REQUEST. ΢ηελ κεηαβιεηή $_SESSION
απνζεθεχνληαη ηα δεδνκέλα κηαο πεξηφδνπ εξγαζίαο. Με ηελ κεηαβιεηή $_COOKIE κπνξνχκε λα
αλαθηήζνπκε ηελ ηηκή ελφο κπηζθφηνπ. Σέινο, ζηηο κεηαβιεηέο $_SERVER θαη $_ENV
απνζεθεχνληαη πιεξνθνξίεο ζρεηηθά κε ηνλ δηαθνκηζηή.

5. Υξήζε cookies
Μέζσ ησλ κπηζθφησλ δίλεηαη ε δπλαηφηεηα ζηνλ δηαθνκηζηή ηεο απνζήθεπζεο πιεξνθνξηψλ
ζηνλ ππνινγηζηή ηνπ ρξήζηε. Έηζη κηα ηνπνζεζία κπνξεί λα ζπκάηαη ηνλ ρξήζηε πνπ ηελ
επηζθέπηεηαη. Πνιινί ρξήζηεο λνκίδνπλ πσο κέζσ ηελ ρξήζε κπηζθφησλ ν δηαθνκηζηή ζα κπνξεί λα
έρεη πξφζβαζε ζε πξνζσπηθά ηνπο ζηνηρεία. Αιιά, κέζα ζε έλα κπηζθφην απνζεθεχνληαη κφλνλ νη
πιεξνθνξίεο ηη νπνίεο δίλεη ν ρξήζηεο.
Δίλαη πνιχ ζεκαληηθφ ηα κπηζθφηα λα ζηέιλνληαη απφ ην δηαθνκηζηή ζηνλ πειάηε πξηλ απφ
νπνηαδήπνηε άιιε πιεξνθνξία. Γη‟ απηφ ην ιφγν πξέπεη λα ξπζκίδεηαη ν θπιινκεηξεηήο γηα ηελ
εξγαζία πνπ πξέπεη λα εθηειέζεη φηαλ δέρεηαη έλα κπηζθφην. Έηζη, ν θπιινκεηξεηήο αθφηνπ ιάβεη
έλα κπηζθφην απφ ηελ PHP ζα ελεκεξψλεη πξψηα γηα ηηο πιεξνθνξίεο πνπ πεξηέρεη απηφ.
H ζπλάξηεζε κέζσ ηεο νπνίαο ζηέιλνληαη ηα κπηζθφηα νλνκάδεηαη setcookie(). Ζ ζπλάξηεζε
απηή είλαη κηα απφ ηηο ιίγεο ζπλαξηήζεηο ηεο PHP πνπ κπνξνχλ λα έρνπλ δηαθνξεηηθά απνηειέζκαηα
ζε δηαθνξεηηθνχο θπιινκεηξεηέο.

πρ. setcookie(όλνκα, ηηκή);


setcookie(„user_name‟, „sof‟);

Μέζσ ηεο ππεξθαζνιηθήο κεηαβιεηήο $_COOKIE γίλεηαη ε αλάθηεζε ηνπ κπηζθφηνπ:


$_COOKIE[„user_name‟]

Δπίζεο, ε ζπλάξηεζε setcookie() δέρεηαη κέρξη πέληε επηπιένλ παξακέηξνπο:


setcookie(όλνκα, ηηκή, ιήμε, δηαδξνκή, ππνινγηζηήο_ππεξεζίαο, αζθάιεηα, απνθιεηζηηθά_http);

Σν φξηζκα ιήμεο θαζνξίδεη ηε δηάξθεηα δσήο ηνπ κπηζθφηνπ ζε δεπηεξφιεπηα απφ ηελ επνρή ηνπ
Unix.
πρ. setcookie(όλνκα, ηηκή, time()+1800);

Ζ παξαπάλσ γξακκή θψδηθά θαζνξίδεη ην ρξφλν ιήμεο ηνπ κπηζθφηνπ ζε 30 ιεπηά.

6. Υξήζε πεξηόδσλ εξγαζίαο

Μηα άιιε κέζνδνο γηα ηελ δηάζεζε ησλ δεδνκέλσλ ζε πνιιέο ζειίδεο είλαη νη πεξίνδνη
εξγαζίαο. Με ηελ ρξήζε πεξηφδσλ εξγαζίαο ηα δεδνκέλα δελ απνζεθεχνληαη ζην θπιινκεηξεηή, αιιά
ζην δηαθνκηζηή. Μέζσ ηνπ ραξαθηεξηζηηθνχ πεξηφδνπ εξγαζίαο κπνξνχκε λα εληνπίζνπκε ηα

Σελίδα | 17
δεδνκέλα εγγξαθήο ελφο ρξήζηε. Σν αλαγλσξηζηηθφ απηφ απνζεθεχεηαη ζην θπιινκεηξεηή ηνπ
ρξήζηε κέζσ ελφο κπηζθφηνπ, αιιά ηα επαίζζεηα δεδνκέλα παξακέλνπλ πάληα ζην δηαθνκηζηή.
Γηα λα ρξεζηκνπνηήζεη κηα ζειίδα ηηο πεξηφδνπο εξγαζίαο πξέπεη λα θαιέζεη ηελ ζπλάξηεζε
session_start() ε νπνία πιεξνθνξεί ηελ PHP ψζηε λα μεθηλήζεη κηα λέα πεξίνδν εξγαζίαο ή λα
πξνζπειάζεη κηα ππάξρνπζα. Όηαλ ε ζπλάξηεζε απηή θαιείηαη γηα πξψηε θνξά πξνζπαζεί λα ζηείιεη
έλα κπηζθφην ζην θπιινκεηξεηή κε φλνκα PHPSESSID (ην φλνκα ηεο πεξηφδνπ εξγαζίαο) γη‟ απηφ
θαη πξέπεη λα θαιείηαη πξηλ απφ ηελ απνζηνιή νπνηνλδήπνηε δεδνκέλσλ.
΢χληαμε κεηξψνπ:
$_SESSION[„θιεηδί‟] = ηηκή;
$_SESSION[„name‟] = „Sofia‟;
$_SESSION[„id‟] = 10;

Γηαγξαθή κηαο πεξηφδνπ εξγαζίαο:


unset($_SESSION[„κεηαβιεηή‟];

Γηαγξαθή φισλ κεηαβιεηψλ ησλ πεξηφδσλ εξγαζίαο:


$_SESSION = array();

Αθαίξεζε φισλ ησλ δεδνκέλσλ ηεο πεξηφδνπ εξγαζίαο απφ ην δηαθνκηζηή:


session_destroy();

Γηα λα ρξεζηκνπνηεζεί θάπνηα απφ απηέο ηηο κεζφδνπο ε ζειίδα πξέπεη λα μεθηλάεη κε ηελ
θιήζε ηεο session_start().

Πεξίνδνη εξγαζίαο έλαληη κπηζθόησλ


Οη πεξίνδνη εξγαζίαο είλαη πην αζθαιείο, γηαηί νη πιεξνθνξίεο παξακέλνπλ απνζεθεπκέλεο
ζην δηαθνκηζηή.
Με ηε ρξήζε πεξηφδσλ εξγαζίαο κπνξνχκε λα απνζεθεχζνπκε πεξηζζφηεξα δεδνκέλα.
Οη ρξήζηεο ζπλεζίδνπλ λα απελεξγνπνηνχλ ηα cookies. Οη πεξίνδνη εξγαζίαο φκσο κπνξνχλ
λα ιεηηνπξγήζνπλ θαη ρσξίο ηα cookies.

7. ΢πκπεξίιεςε πνιιώλ αξρείσλ


Ζ PHP ρξεζηκνπνηψληαο εμσηεξηθά αξρεία, δηαηξεί ηα ζελάξηα ηεο ηνπνζεζίεο ζε δηαθξηηά
ηκήκαηα. Έηζη ν θψδηθαο ΖTML απνζπάηαη απφ ηνλ θψδηθα PHP, ή αθφκε θαη θνκκάηηα ηνπ θψδηθα
PHP απνζπνχληαη έλα ζελάξην. Ζ ζπκπεξίιεςε ησλ αξρείσλ γίλεηαη κε ηελ ρξήζε ησλ παξαθάησ
ζπλαξηήζεσλ:include(), include_once(), require(), require_once().

Πρ. include_once(„filename.php‟);
require(„path/to/filename.html‟);

Γηα λα αλαθεξζνχκε ζην αξρείν ζπκπεξίιεςεο κπνξνχκε λα ρξεζηκνπνηήζνπκε είηε απφιπηε,


είηε ζρεηηθή δηαδξνκή. Ζ απφιπηε δηαδξνκή θαζνξίδεη ηε ζέζε ηνπ αξρείνπ μεθηλψληαο απφ ην βαζηθφ
θαηάινγν ηνπ ππνινγηζηή.
πρ. include(„C:/php/includes/file.php‟);

Ζ ζρεηηθή δηαδξνκή μεθηλάεη απφ ηε ζέζε ηνπ γεληθνχ αξρείνπ, δειαδή απηφ πνπ θαιεί ην
εμσηεξηθφ. Γηα λα αλεβνχκε θαηά έλα θάθειν ζηε ηεξαξρία, ρξεζηκνπνηνχκε δχν ηειείεο (..). Γηα λα
κεηαθεξζνχκε κέζα ζε έλα θάθειν, ρξεζηκνπνηνχκε ην φλνκα ηνπ θαθέινπ πνπ αθνινπζεί απφ κηα
θάζεην. Γηα παξάδεηγκα, αλ ην ζελάξην βξίζθεηαη ζην θάθειν www/file1 θαη ζέινπκε λα
ζπκπεξηιάβνπκε έλα αξρείν πνπ βξίζθεηαη ζην θάθειν www/file2, γξάθνπκε:

Σελίδα | 18
include(„../flie2/example.php‟);

Οη ζπλαξηήζεηο include() θαη require() δηαθέξνπλ ζηε ιεηηνπξγία ηνπο κφλν φηαλ
απνηπγράλνπλ. Αλ κηα ζπλάξηεζε include() δελ επηηχρεη, ην ζελάξην ζα εμαθνινπζήζεη λα εθηειείηε
θαλνληθά θαη απιά ζην θπιινκεηξεηή ζα εκθαληζηεί κηα πξνεηδνπνίεζε. Αλ απνηχρεη ε require(),ην
ζελάξην ζα δηαθνπεί εκθαλίδνληαο έλα κήλπκα ζθάικαηνο.
Δπίζεο, φηαλ γξάθνπκε θαη ην ραξαθηεξηζηηθφ *_once(), ηφηε ην εμσηεξηθφ αξρείν
ζπκπεξηιακβάλεηαη ζηνλ θψδηθα κφλν κία θνξά.

πρ. require_once(„filename.php‟);
include_once(„filename.php‟);

8. Πξνζσξηλή απνζήθεπζε εμόδνπ


Με ηελ ρξήζε ηεο πξνζσξηλήο απνζήθεπζεο εμφδνπ φηη ηππψλεηαη ζε έλα ζελάξην ηεο PHP ή
ζηνλ θψδηθα HTML δελ ζηέιλεηαη απεπζείαο ζηνλ θπιινκεηξεηή, αιιά απνζεθεχεηαη ζε κία
πξνζσξηλή κλήκε. Έηζη νη ζπλαξηήζεηο echo() θαη print() ζηέιλνπλ ηα δεδνκέλα ζηελ πξνζσξηλή
κλήκε θαη φρη ζην θπιινκεηξεηή.
Γηα λα μεθηλήζνπκε ηελ πξνζσξηλή απνζήθεπζε, ρξεζηκνπνηνχκε ηε ζπλάξηεζε ob_start().
΢ην ηέινο ηνπ ζελαξίνπ, θαινχκε ηελ ζπλάξηεζε ob_end_flush() γηα λα ζηείινπκε ζην θπιινκεηξεηή
ηα δεδνκέλα. Γηα λα δηαγξάςνπκε ηα δεδνκέλα απηά θαινχκε ηελ ζπλάξηεζε ob_end_clean() ρσξίο
λα ηα ζηείινπκε ζην θπιινκεηξεηή.

2.2.4 ΢ρεδίαζε Βάζεσλ δεδνκέλσλ


Πξηλ μεθηλήζνπκε ηελ ζρεδίαζε κηαο βάζεο δεδνκέλσλ πξέπεη πξψηα λα θαζνξίζνπκε ηε
δνκή ηεο. Ζ ζρεδίαζε κηαο βάζεο δεδνκέλσλ είλαη απηή πνπ θαζνξίδεη ηελ επηηπρεκέλε
καθξνπξφζεζκε δηαρείξηζε ησλ πιεξνθνξηψλ. Υξεζηκνπνηψληαο ηελ κανονικοποίηζη ησλ δεδνκέλσλ
εμαιείθνληαη νη πιενλαζκνί θαη άιια πξνβιήκαηα πνπ ζα κπνξνχζαλ λα βιάςνπλ ηελ αθεξαηφηεηα
ηεο βάζεο δεδνκέλσλ.

1. Καλνληθνπνίεζε
Καλνληθνπνίεζε είλαη ε δηαδηθαζία νξγάλσζεο κηαο βάζε δεδνκέλσλ. Ο εξεπλεηήο E. F.
Codd αλαθάιπςε ηελ ζρεζηαθή βάζε δεδνκέλσλ (κηα ζπιινγή δεδνκέλσλ νξγαλσκέλσλ κε
ζπγθεθξηκέλν ηξφπν). Δπίζεο, δεκηνχξγεζε κηα ζεηξά απφ θαλφλεο, ηηο κανονικέ μοπθέρ (normal
forms), πνπ ζπληεινχλ ζηελ νξγάλσζε ησλ δεδνκέλσλ.
Πξηλ αξρίζνπκε ηελ θαλνληθνπνίεζε πξέπεη πξψηα λα νξίζνπκε ηνλ ζθνπφο ηεο εθαξκνγήο.
Ζ θαηαλφεζε ηνπ ηξφπνπ πξνζπέιαζεο ησλ δεδνκέλσλ θαζνξίδεη ηε κνληεινπνίεζε. ΢ηε
ζπγθεθξηκέλε ηζηνζειίδα ζα πξέπεη νη ρξήζηεο λα εγγξάθνληαη θαη έπεηηα λα ζπλδένληαη κε ην email
θαη ην θσδηθφ πξφζβαζήο ηνπο. Έπεηηα ζα πξνζζέηνπλ φπνην βηβιίν επηζπκνχλ ζην θαιάζη αγνξψλ
ηνπο, ή ζηε ιίζηα κε ηα αγαπεκέλα ηνπο βηβιία. Δπίζεο, ν δηαρεηξηζηήο ζα πξνζζέηεη ηα βηβιία ζε έλα
πίλαθα κε ηα αλάινγα ραξαθηεξηζηηθά απφ φπνπ ζα εκθαλίδνληαη ζηελ ηζηνζειίδα. Γηα ηελ
ιεηηνπξγία ηνπ forum είλαη αλαγθαία ε χπαξμε ελφο πίλαθα ν νπνίνο ζα απνζεθεχεη ηα κελχκαηα ησλ
ρξεζηψλ.
Μηα θαιή κέζνδνο γηα ηνλ πξνζδηνξηζκφ ησλ πιεξνθνξηψλ πνπ ζα απνζεθεχνληαη ζηε βάζε
δεδνκέλσλ είλαη ν πξνζδηνξηζκφο ησλ εξσηεκάησλ πνπ ζα ππνβάιινληαη θαη ησλ δεδνκέλα πνπ ζα
πεξηιακβάλνληαη ζηηο απαληήζεηο ησλ εξσηεκάησλ απηψλ.

Σελίδα | 19
2. Κιεηδηά
Σα θιεηδηά παίδνπλ ζεκαληηθφ ξφιν ζε κία θαλνληθνπνηεκέλε βάζε δεδνκέλσλ, γηαηί κέζσ
απηψλ γίλεηαη ε ζπζρέηηζε ησλ πηλάθσλ. Τπάξρνπλ δχν είδε θιεηδηψλ: ην ππωηεύων θιεηδί (primary
key) θαη ην ξένο θιεηδί (foreign key).
Πξσηεχσλ θιεηδί είλαη έλα πεδίν ή ζπλδπαζκφο πεδίσλ πνπ ραξαθηεξίδεη κνλαδηθά κηα
εγγξαθή. Πξσηεχσλ θιεηδί πξέπεη λα έρεη πάληα ηηκή (λα κελ είλαη δειαδή NULL), ε ηηκή ηνπ λα κελ
αιιάδεη πνηέ θαη λα είλαη κνλαδηθή γηα θάζε εγγξαθή ηνπ πίλαθα. Σν θαιχηεξν παξάδεηγκα
πξσηεχνληνο θιεηδηνχ είλαη ν αξηζκφο θνξνινγηθνχ κεηξψνπ (ΑΦΜ). ΢πρλά πξέπεη λα δεκηνπξγνχκε
έλα πξσηεχσλ θιεηδί, επεηδή θαλέλα απφ ηα ππάξρνληα πεδία δελ είλαη θαηάιιειν. H MySQL
επηηξέπεη κφλν έλα πξσηεχσλ θιεηδί αλά πίλαθα. ΢ηελ ηδαληθή πεξίπησζε, πξέπεη λα είλαη αθέξαηνο
αξηζκφο ψζηε λα ππάξρεη θαιχηεξε απφδνζε.
Σν μέλν θιεηδί είλαη έλα πεδίν πνπ έρεη ην ίδην ζχλνιν ηηκψλ κε ην πξσηεχνλ θιεηδί ελφο
άιινπ πίλαθα. Γηα λα κπνξνχλ δχν πίλαθεο λα ζπλδένληαη, πξέπεη ην πξσηεχσλ θιεηδί ηνπ ελφο λα
ζπλδέεηαη κε ην μέλν θιεηδί ηνπ άιινπ.

3. ΢ρέζεηο
΢ηηο Στεζιακές βάζεηο δεδνκέλσλ ηα δχν πίλαθεο ζπλδένληαη κεηαμχ ηνπο κέζσ ησλ θνηλψλ
πεδίσλ πνπ δηαζέηνπλ. Οη ζρέζεηο ησλ πηλάθσλ ρσξίδνληαη ζε ηξείο θαηεγνξίεο:
Ακθηκνλνζήκαληε ή έλα πξνο έλα.
Μνλνζήκαληε ή έλα πξνο πνιιά.
Πνιπζήκαληε ή πνιιά πξνο πνιιά.
΢ε κία ακθηκνλνζήκαληε ζρέζε, έλα κνλαδηθφ ζηνηρείν ηνπ Πίλαθα Α αληηζηνηρεί ζε έλα
κνλαδηθφ ζηνηρείν ηνπ πίλαθα Β. Γηα παξάδεηγκα, θάζε ρξήζηεο έρεη έλα κνλαδηθφ θσδηθφ θαη θάζε
θσδηθφο αληηζηνηρεί ζε έλαλ κφλν ρξήζηε.
΢ε κηα κνλνζήκαληε ζρέζε, έλα ζηνηρείν ηνπ Πίλαθα Α κπνξεί λα αληηζηνηρεί ζε πνιιά
ζηνηρεία ηνπ πίλαθα Β. Γηα παξάδεηγκα, έλαο βηβιίν κπνξεί λα έρεη έλαλ εθδφηε θαη έλαο εθδφηεο
κπνξεί λα έρεη πνιιά βηβιία.
΢ε κηα πνιπζήκαληε ζρέζε, πνιιά ζηνηρεία ηνπ πίλαθα Α αληηζηνηρνχλ ζε πνιιά ζηνηρεία
ηνπ πίλαθα Β. Γηα παξάδεηγκα, έλα βηβιίν κπνξεί λα πεξηέρεηαη ζε δηάθνξα θαιάζηα αγνξψλ θαη θάζε
θαιάζη αγνξάο κπνξεί λα έρεη πνιιά βηβιία. Γηα ιφγνπο πιενλαζκνχ ησλ δεδνκέλσλ θαη είλαη
πξνηηκφηεξν λα απνθεχγνπκε ηηο πνιπζήκαληεο ζρέζεηο θαη λα ηηο δηαηξνχκε ζε δχν κνλνζήκαληεο
ρξεζηκνπνηψληαο ενδιάμεζοςρ πίνακερ.

4. Πξώηε Καλνληθή Μνξθή (1FN)


Γηα λα ζπκθσλεί ε βάζε δεδνκέλσλ κε ηελ Πξψηε Καλνληθή Μνξθή θάζε ζηήιε ελφο πίλαθα
ζα πξέπεη λα πεξηέρεη κφλν κία ηηκή. Δπίζεο, θαλέλαο πίλαθαο δελ κπνξεί λα πεξηέρεη
επαλαιακβαλφκελεο νκάδεο ζρεηηθψλ κεηαμχ ηνπο δεδνκέλσλ. Έλαο πίλαθαο κε έλα πεδίν γηα
νιφθιεξε ηελ ηαρπδξνκηθή δηεχζπλζε ελφο αηφκνπ δελ ζπκθσλεί κε ηελ πξψηε θαλνληθή κνξθή,
επεηδή κηα ζηήιε ηνπ πεξηέρεη πνιιέο ηηκέο. Δπίζεο, έλαο πίλαθαο βηβιίσλ κε πνιιέο ζηήιεο γηα ηνπο
ζπγγξαθείο δελ είλαη ζχκθσλνο κε ηελ πξψηε θαλνληθή κνξθή, επεηδή πεξηέρεη επαλαιακβαλφκελεο
ζηήιεο κε ίδηεο πιεξνθνξίεο. Έηζη απηέο ζα πξέπεη λα κεηαηξαπνχλ ζε μερσξηζηφ πίλαθα.

5. Γεύηεξε Καλνληθή Μνξθή (2NF)


Γηα λα είλαη κηα βάζε δεδνκέλσλ ζηε Γεχηεξε Καλνληθή Μνξθή, πξέπεη λα είλαη ήδε ζηελ
πξψηε. Έπεηηα ζα πξέπεη θάζε ζηήιε ηνπ πίλαθα λα εμαξηάηαη απφ ην πξσηεχσλ θιεηδί. Γηα
παξάδεηγκα, ζηνλ πίλαθα ησλ βηβιίσλ ν έλαο ζπγγξαθέαο κπνξεί λα εκθαλίδεηαη πνιιέο θνξέο. Γηα
λα ηζρχεη ν θαλφλαο 2NF ε ιχζε είλαη ε δεκηνπξγία ελφο μερσξηζηνχ πίλαθα ζπγγξαθέσλ πνπ ζα

Σελίδα | 20
αλαζέηεη έλα πξσηεχσλ θιεηδί ζε θάζε ζπγγξαθέα. Γηα ηελ ζπζρέηηζε ησλ δχν πηλάθσλ ην πξσηεχσλ
θιεηδί ηνπ θάζε ζπγγξαθέα ζα γίλεηαη μέλν θιεηδί ζηνλ πίλαθα ησλ βηβιίσλ.

Δηθόλα 2.11: Γηακόξθσζε Πηλάθσλ κε βάζε ηνλ θαλόλα 2NF

6. Σξίηε Καλνληθή Μνξθή (3NF)


Απηφ ην πςειφηεξν επίπεδν θαλνληθνπνίεζεο πνιιέο θνξέο δελ είλαη απαξαίηεην, γηαηί ε
βάζε δεδνκέλσλ ράλεη ηελ απιφηεηά ηεο. Γηα λα είλαη κηα βάζε δεδνκέλσλ ζηελ Σξίηε Καλνληθή
Μνξθή πξέπεη λα είλαη ήδε ζηε Γεχηεξε Καλνληθή Μνξθή θαη φιεο νη ζηήιεο πνπ δελ είλαη θιεηδηά
λα είλαη αλεμάξηεηεο ε κηα απφ ηελ άιιε. Γειαδή, φηαλ αιιάδνπκε ηελ ηηκή κηαο ζηήιεο λα κε
ρξεηάδεηαη λα αιιάμνπκε θαη ηελ ηηκή κηαο άιιεο. Έλα παξάδεηγκα είλαη ν πίλαθαο ησλ ρξεζηψλ,
ζηνλ νπνίν έρνπκε πνιιέο πιεξνθνξίεο πνπ εμαξηψληαη κεηαμχ ηνπο, φπσο ηελ Πφιε, ηελ Γηεχζπλζε,
ηνλ Σ.Κ. Απηέο νη ηηκέο είλαη απαξαίηεηεο ε κηα γηα ηελ άιιε, αιιά φρη γηα ηνλ ρξήζηε πνπ
αληηζηνηρεί ζηελ εγγξαθή. Γηα λα ηζρχζεη ν θαλφλαο 3NF πξέπεη απηέο νη πιεξνθνξίεο λα
εθρσξεζνχλ ζε δηαθνξεηηθφ πίλαθα.

2.2.5 Καλνληθέο Παξαζηάζεηο ζπκβαηέο κε Perl


Οη θαλνληθέο παξαζηάζεηο ζεσξείηαη σο έλα εμειηγκέλν ζχζηεκα ηαπηνπνίεζεο κνηίβσλ ην
νπνίν είλαη δηαζέζηκν ζηηο πεξηζζφηεξεο ζχγρξνλεο γιψζζεο πξνγξακκαηηζκνχ. Υξεζηκνπνηψληαο
ελζσκαησκέλεο ζπλαξηήζεηο ηεο PHP γξάθνπκε πξψηα ην κνηίβν θαη έπεηηα ην εθαξκφδνπκε ζε κηα
ζπκβνινζεηξά. Ζ πην ζεκαληηθή απφ ηηο ζπλαξηήζεηο απηέο είλαη ε preg_match(). Ζ ζπγθεθξηκέλε
ζπλάξηεζε επηζηξέθεη ηηκή 0 ή 1, δειψλνληαο έηζη αλ ην κνηίβν ηαηξηάδεη κε ηε ζπκβνινζεηξά ή φρη.
preg_match (κνηίβν, ππνθείκελν);

Ζ ζπλάξηεζε preg_match() ζα ζηακαηάεη φηαλ εληνπίδεη ηελ πξψηε ζπκβνινζεηξά πνπ


ηαηξηάδεη κε ην ζπγθεθξηκέλν κνηίβν πνπ δειψλνπκε. Γηα λα βξνχκε φιεο ηηο ζπκβνινζεηξέο πνπ
ηαηξηάδνπλ, ρξεζηκνπνηνχκε ηε ζπλάξηεζε preg_match_all().
Δπεηδή ην κνηίβν πξφθεηηαη γηα ζπκβνινζεηξά φηαλ ην κεηαβηβάδνπκε ζηε ζπλάξηεζε
preg_match(), πξέπεη λα ην θιίλνπκε ζε εηζαγσγηθά. Έπεηηα ην κνηίβν πξέπεη λα πεξηθιείεηαη κέζα ζε
νξηνζέηεο. Οξηνζέηεο κπνξεί λα είλαη νπνηνζδήπνηε ραξαθηήξαο εθηφο απφ ζπκβνινζεηξά θαη
αλάπνδε θάζεην. Ο ίδηνο νξηνζέηεο πξέπεη λα ρξεζηκνπνηείηαη ζηελ αξρή θαη ζην ηέινο ηνπ κνηίβνπ.
πρ. if (preg_match („/a‟, „cat‟)) {

Αλ ην κνηίβν πεξηέρεη θάζεην ηφηε ζαλ νξηνζέηε ρξεζηκνπνηνχκε ην ραξαθηήξα δηαθπγήο (|).

Μεηαραξαθηήξεο
ΥΑΡΑΚΣΗΡΑ΢ ΢ΗΜΑ΢ΙΑ
\ Υαξαθηήξαο Γηαθπγήο
^ Αξρή ΢πκβνινζεηξάο
$ Σέινο ΢πκβνινζεηξάο
. Οπνηνζδήπνηε ραξαθηήξαο εθηφο απφ ηελ αιιαγή γξακκήο

Σελίδα | 21
| Δλαιιαθηηθφ (ή)
[ Αξρή θιάζεο
] Σέινο θιάζεο
( Αξρή ππνκνηίβνπ
) Σέινο ππνκνηίβνπ
{ Αξρή πνζνδείθηε
} Σέινο πνζνδείθηε

Πίλαθαο 2.1: Μεηαραξαθηήξεο

Γχν κεηαραξαθηήξεο, ε αηρκή(^) θαη ην δνιάξην($), θαζνξίδνπλ ηε ζέζε ηεο ζπκβνινζεηξάο


έηζη ψζηε λα ππάξρεη ηαχηηζε λε ην κνηίβν. Γηα παξάδεηγκα, ην κνηίβν ^a ηαηξηάδεη κε νπνηαδήπνηε
ζπκβνινζεηξά αξρίδεη απφ α, ελψ ην κνηίβν a$ ηαηξηάδεη κε νπνηαδήπνηε ζπκβνινζεηξά ηειεηψλεη ζε
α. Οη πνζνδέηθηεο δειψλνπκε ηνλ αξηζκφ ησλ ραξαθηήξσλ πνπ κπνξεί λα έρεη κηα ζπκβνινζεηξά.

Πνζνδείθηεο
ΥΑΡΑΚΣΗΡΔ΢ ΔΜΦΑΝΙ΢ΔΙ΢
? 0ή1
* 0 ή πεξηζζφηεξεο
+ 1 ή πεξηζζφηεξεο
{x} Αθξηβψο x εκθαλίζεηο
{x, y} Μεηαμχ x θαη y
{x,} Σνπιάρηζηνλ x εκθαλίζεηο

Πίλαθαο 2.2: Πνζνδείθηεο

Γηα ηελ απινπνίεζε ησλ αλαθνξψλ, ρξεζηκνπνηνχκε θιάζεηο ραξαθηήξσλ. Οη θιάζεηο


δεκηνπξγνχληαη φηαλ ηνπνζεηψληαο ραξαθηήξεο κέζα ζε αγθχιεο. Γηα παξάδεηγκα, ε θιάζε [a-z]
ζεκαίλεη φια ηα πεδά γξάκκαηα θαη ε θιάζε [A-Z] φια ηα θεθαιαία. Ζ θιάζε [A-Za-z] ζεκαίλεη
νπνηνδήπνηε γξάκκα, θαη ε θιάζε [0-9] νπνηνδήπνηε ςεθίν. Δπίζεο, ε αηρκή ζηελ αξρή ηεο θιάζεο
ιεηηνπξγεί σο ηειεζηήο άξλεζεο.

Μεηαραξαθηήξεο
ΚΛΑ΢Η ΢ΤΝΣΟΜΔΤ΢Η ΢ΗΜΑ΢ΙΑ
[0-9] \d Οπνηνδήπνηε ςεθίν
[\f\r\t\n\v] \s Οπνηνδήπνηε ραξαθηήξαο
[A-Za-z0-9_] \w Οπνηνδήπνηε ραξαθηήξαο ιέμεο
[^0-9] \D Όρη ςεθίν
[^\f\r\t\n\v] \S Με θελφο ρψξνο
[^A-Za-z0-9_] \W Όρη ραξαθηήξαο ιέμεο

Πίλαθαο 2.3: Μεηαραξαθηήξεο

2.2.6 Γνκή Σνπνζεζίαο


΢ε κηα ηνπνζεζίαο Ηζηνχ, φηαλ ρξεζηκνπνηνχκε πνιιά αξρεία, ε ζπλνιηθή ηεο δνκή απνθηά
κεγάιε ζεκαζία. Γηα ην ιφγν απηφ φηαλ δηακνξθψλνπκε κηα ηζηνζειίδα πξέπεη λα ηηο παξέρνπκε
επθνιία ζηελ πινήγεζε θαη ζηελ ζπληήξεζή ηεο, αιιά πάλσ απ‟ φια αζθάιεηά ηεο. Ζ ρξήζε
εμσηεξηθψλ αξρείσλ ζηνπο θψδηθεο ηηο PHP, CSS, JavaScript, θαη HTML δηεπθνιχλνπλ ηε
ζπληήξεζε ηεο ηνπνζεζίαο, αθνχ ν θψδηθαο πξνο επεμεξγαζία βξίζθεηαη πάληα ζε κηα θεληξηθή ζέζε.

Σελίδα | 22
΢πλήζσο, δεκηνπξγνχκε έλαλ θαηάινγν includes ζηνλ νπνίν απνζεθεχνληαη ηα αξρεία, μερσξηζηά απφ
ηα βαζηθά ζελάξηα.
Σέινο, κπνξνχκε λα ρξεζηκνπνηνχκε ηελ πξνέθηαζε .inc ή .html γηα έγγξαθα πνπ δελ καο
απαζρνιεί ηφζν πνιχ ε αζθάιεηά ηνπο, θαη ηελ πξνέθηαζε .php γηα αξρεία πνπ πεξηέρνπλ πην
επαίζζεηα δεδνκέλα.

Σελίδα | 23
ΚΔΦΑΛΑΙΟ 3: ΢ΥΔΓΙΟ ΓΡΑ΢Η΢ ΓΙΑ
ΣΗΝ ΔΚΠΟΝΗ΢Η ΣΗ΢ ΔΡΓΑ΢ΙΑ΢
3.1 State of Art ζην ρώξν ησλ ειεθηξνληθώλ βηβιηνπσιείσλ.
Έλα απφ ηα θαιχηεξα θαη πην δηαδεδνκέλα ειεθηξνληθφ βηβιηνπσιείν ζηνλ θφζκν είλαη ην
Amazon.com ιφγσ ηνπ πιήζνο ησλ δεδνκέλσλ θαη ππεξεζηψλ πνπ πξνζθέξεη ζηνπο ρξήζηεο. Σνλ
Ηνχιην ηνπ 2002 ρξεζηκνπνηψληαο ην Γηαδίθηπν κεηέηξεςε ηελ αγνξά ηνπ βηβιίνπ ζε κηα γξήγνξε θαη
επράξηζηε εκπεηξία. Δίλαη ε πην δεκνθηιήο εηαηξία ζηελ νπνία εθαξκφζηεθε ην ειεθηξνληθφ εκπφξην,
γη‟ απηφ θαη ζήκεξα απνηειεί ηνλ πην θνξπθαίν εκπνξηθφ θφκβν.

Δηθόλα 3.1: Αξρηθή ζειίδα εκθάληζεο βηβιίσλ

Όπσο θαίλεηαη θαη ζηελ εηθόλα ε εηαηξεία Amazon δίλεη


ηελ δπλαηφηεηα πξφζβαζεο ζην ρξήζηε ζε κία ηεξάζηηα ζπιινγή
βηβιίσλ, δηαθφξσλ θαηεγνξηψλ, νη νπνίεο αλαξηψληαη ζηελ
αξηζηεξή κεξηά ηεο ηζηνζειίδαο. Δπίζεο, έρνπλ δεκηνπξγεζεί
δηάθνξεο ιίζηεο (Δηθόλα ) ζηηο νπνίεο ν ρξήζηεο κπνξεί λα
πξνζζέζεη ηα βηβιία πνπ επηζπκεί. Καζψο επίζεο θαη έλα θαιάζη
αγνξψλ γηα ηελ επίηεπμε θάπνηαο παξαγγειίαο.

Σελίδα | 24
Δηθόλα 3.2: Λίζηεο Βηβιίσλ ηνπ Amazon.com

Σελίδα | 25
Δηθόλα 3.3: Δκθάληζε βηβιίσλ ζηε Wishlist

Δθηφο απφ ηελ πξνζζήθε ησλ βηβιίσλ ζηε ιίζηα κε ηα αγαπεκέλα βηβιία ν ρξήζηεο κπνξεί λα
κεηνλνκάζεη ηελ ιίζηα ηνπ δίλνληάο ηεο έλα πην πξνζσπηθφ φλνκα (Sofia‟s Wishlist), λα πξνζζέζεη ηα
βηβιία ζην θαιάζη ηνπ, αιιά θαη λα δεκηνπξγήζεη κηα θαηλνχξηα ιίζηα απφ ην link (Create another
Wish list). Σέινο, έρεη δεκηνπξγεζεί εθαξκνγή απνθιεηζηηθά γηα ην Firefox έηζη ψζηε λα έρεη ν θάζε
ρξήζηεο πξφζβαζε ζηε Wishlist φπνηε εθείλνο επηζπκεί.

Δηθόλα 3.4: Καιάζη αγνξώλ ηνπ Amazon.com

Σελίδα | 26
Απηφ πνπ θάλεη ηελ δηαθνξά ζην θαιάζη απηφ είλαη φηη ν θάζε ρξήζηεο κπνξεί λα ζηείιεη
θάπνην βηβιίν ζαλ δψξν γξάθνληαο ηελ δηεχζπλζε ζηελ νπνία ζα ζηαιεί φηαλ ζπκπιεξψζεη ηελ
θφξκα κε ηα πξνζσπηθά ηνπ ζηνηρεία.

Δηθόλα 3.5: ΢ύλζεηε αλαδήηεζε ηνπ Amazon.com

Δηθόλα 3.6: Δκθάληζε ραξαθηεξηζηεθώλ ελόο βηβιίνπ

Σελίδα | 27
΢ηελ αξρή ηεο ζειίδαο εκθαλίδνληαη δηάθνξεο πξνζθνξέο πνπ παξέρεη ην Amazon ζηνπο
ρξήζηεο. Δπίζεο, ε ζειίδα πξνηείλεη ζηνπο ρξήζηεο πνηα άιια βηβιία ζα κπνξνχζε λα αγνξάζεη καδί
κε ην αξρηθφ βηβιίν πνπ επέιεμε.

Δηθόλα 3.7: ΢πλέρεηα ηεο ζειίδαο εκθάληζεο ελόο βηβιίνπ

΢ηε ζπλέρεηα έλα script εκθαλίδεη ηα βηβιία πνπ αγφξαζαλ άιινη ρξήζηεο καδί κε ην
ζπγθεθξηκέλν βηβιίν αθνινπζνχκελν απφ ηελ πεξηγξαθή ηνπ βηβιίνπ.

Δηθόλα 3.8: Δκθάληζε ζηνηρείσλ βηβιίνπ θαη ζπγγξαθέα

Σελίδα | 28
Δηθόλα 3.9: Βηνγξαθία ηνπ ΢πγγξαθέα

Σν Amazon.com παξέρεη πξφζβαζε ζηνπο ρξήζηεο ζην βηνγξαθηθφ ζεκείσκα ηνπ θάζε
ζπγγξαθέα, θαζψο θαη ζε βηβιία πνπ ν ίδηνο έρεη γξάςεη. Δπίζεο ππάξρεη ελεκέξσζε γηα ηα event πνπ
ν ζπγγξαθέαο έρεη θαζνξίζεη λα δηεμάγεη.

Δηθόλα 3.10: Κξηηηθέο πειαηώλ & ζρόιηα

Σελίδα | 29
3.2 State Of Art ζηελ ηερλνινγία

3.2.1 Γηαδίθηπν
Σν Γηαδίθηπν, είλαη ην κεγαιχηεξν δίθηπν ππνινγηζηψλ ζην θφζκν ην νπνίν δεκηνπξγήζεθε
ην 1969 απφ ηέζζεξα παλεπηζηήκηα ησλ ΖΠΑ. ΢ηελ νπζία απαξηίδεηαη απφ πνιιά δίθηπα θαη
ππνινγηζηέο πνπ είλαη ζπλδεδεκέλνη κεηαμχ ηνπο. Σα δίθηπα απηά κπνξεί λα είλαη ηνπηθά (LAN), ή
επξείαο πεξηνρήο (WAN).
Οη ππνινγηζηέο ηνπ δηαδηθηχνπ δηαρσξίδνληαη ζε εθείλνπο ησλ Παξνρέσλ Internet νπνίνη είλαη
κφληκα ζπλδεδεκέλνη ζην ππεξδίθηπν, επεηδή παξέρνπλ ζπλερψο δεδνκέλα θαη πιεξνθνξίεο. Δπίζεο,
ππάξρνπλ θαη απηνί ησλ ρξεζηψλ, ζπλδξνκεηψλ ηνπ Internet, νη νπνίνη ζπλδένληαη θαη δηαθφπηνπλ
ηελ επηθνηλσλία ηνπο κε απηφ αλάινγα κε ηηο αλάγθεο ηνπο.
Οη θπξηφηεξεο εθαξκνγέο θαη ππεξεζίεο πνπ καο παξέρεη ην Γηαδίθηπν είλαη νη εμήο:
Σν ειεθηξνληθφ ηαρπδξνκείν (e-mail)
Οη νκάδεο ζπδεηήζεσλ (newsgroups)
Ζ δηακνίξαζε αξρείσλ (file sharing)
Ζ επηθφξησζε αξρείσλ (file transfer)
Ο Παγθφζκηνο Ηζηφο (World Wide Web).

Πνιιέο ππεξεζίεο έρνπλ βαζηζηεί πάλσ ζην ειεθηξνληθφ ηαρπδξνκείν θαη ηνλ Παγθφζκηνο
Ηζηφο φπσο είλαη νη ηαρπδξνκηθέο ιίζηεο θαη ηα αξρεία θαηαγξαθήο ηζηνχ (blogs). Σν Γηαδίθηπν
θαζηζηά δπλαηή ηε δηάζεζε ππεξεζηψλ ζε πξαγκαηηθφ ρξφλν, ππεξεζίεο φπσο ην ξαδηφθσλν πνπ είλαη
πξνζπειάζηκεο απφ νπνπδήπνηε ζηνλ θφζκν.
Σα ηειεπηαία ρξφληα ζηελ Διιάδα παξαηεξείηαη ζεκαληηθή αχμεζε ηνπ αξηζκνχ ησλ ρξεζηψλ
(απφ 13% ην 2001 ζε 31% ην 2007) ειηθίαο 15 έσο 65 εηψλ πνπ θαηέρνπλ πξνζσπηθφ Ζ/Τ.
Αληίζηνηρα, παξαηεξείηαη αχμεζε ησλ σξψλ ρξήζεο ηνπ Γηαδηθηχνπ πνπ θηάλνπλ θαηά κέζσ φξν ηηο
8,6 αλά εβδνκάδα. Οη πην θχξηνη ιφγνη ρξήζεο ηνπ Γηαδηθηχνπ είλαη ε ελεκέξσζε θαη ε απνζηνιή
κελπκάησλ κέζσ ηνπ ειεθηξνληθνχ ηαρπδξνκείνπ. Αληίζεηα, δελ είλαη ηφζν εμεδεηεκέλε ε
αλαδήηεζε πξντφλησλ θαη ππεξεζηψλ. Μφλν ην 18% ησλ ρξεζηψλ πξνρψξεζε ζε κηα online αγνξά.
Παξφια απηά, νη αγνξέο πξαγκαηνπνηήζεθαλ θπξίσο απφ ειιεληθνχο ηζηνρψξνπο (41%) παξά απφ
μέλνπο (35%). Οη ρξήζηεο πξνβαίλνπλ ζε κηα αγνξά κέζσ ηνπ Γηαδηθηχνπ ιφγν ηεο πξνζηηήο ηηκήο
θαη ηεο θαιήο εμππεξέηεζεο. Σέινο, πνιινί ρξήζηεο πηζηεχνπλ φηη ν θίλδπλνο δηαξξνήο πξνζσπηθψλ
δεδνκέλσλ θαηά ηηο ειεθηξνληθέο αγνξέο είλαη πνιχ κεγάινο.

3.2.2 Παγθόζκηνο Ιζηόο


΢πρλά ζεσξνχκε φηη Παγθφζκηνο ηζηφο είλαη ην Internet, αιιά ε αληίιεςε απηή είλαη
ιαλζαζκέλε θαζψο ν ηζηφο απνηειεί κία κφλν εθαξκνγή ηνπ Internet. Ο Παγθφζκηνο Ηζηφο
απνηειείηαη απφ παθέηα δεδνκέλσλ ηα νπνία θπθινθνξνχλ κέζα ζην Γηαδίθηπν. Δίλαη, δειαδή, έλα
πιαίζην εθαξκνγψλ θαη ππεξεζηψλ πξνζθεξφκελν πξνο ηνλ ρξήζηε ηνπ Γηαδηθηχνπ γηα ηελ δηαλνκή
εγγξάθσλ, γξαθηθψλ, εηθφλσλ θαη ήρνπ. Σα έγγξαθα απηά, πνπ είλαη γλσζηά σο ηζηνζειίδεο, κπνξνχλ
λα παξέρνπλ θείκελν, εηθφλεο, ήρνπο, ζπλδέζκνπο (links), θαη πνιιά άιια.
Όηαλ ν ρξήζηεο ηξέρεη ηνλ θπιινκεηξεηή ηνπ, βιέπεη κηα πξνθαζνξηζκέλε αξρηθή ζειίδα θαη,
ζηε ζπλέρεηα, ρξεζηκνπνηψληαο ππεξπλδέζκνπο (hyperlinks) κεηαθέξεηαη ζε άιιεο ζειίδεο, νη νπνίνη
είλαη απνζεθεπκέλεο ζε άιινπο δηαθνκηζηέο πνπ κπνξεί λα βξίζθνληαη ζε νπνηνδήπνηε ζεκείν ηνπ
θφζκνπ.
Ο Παγθφζκηνο Ηζηφο αλαπηχρζεθε ζην CERN (Δπξσπατθφ Κέληξν γηα ηελ Ππξεληθή Έξεπλα)
έηζη ψζηε νη επηζηήκνλεο ελψ βξίζθνληαη ζε απνκαθξπζκέλα ζεκεία λα κπνξνχλ λα αληαιιάζνπλ ηα
απνηειέζκαηα ησλ εξεπλψλ ηνπο.

Σελίδα | 30
3.2.3 Σνπνζεζίεο Ιζηνύ θαη Ιζηνζειίδεο
Έλαο ηζηφηνπνο, ηζηνρψξνο ή δηθηπαθφο ηφπνο (web site) είλαη κία ζπιινγή απφ ηζηνζειίδεο,
εηθφλεο, βίληεν θαη άιια ςεθηαθά ζηνηρεία, ηα νπνία θηινμελνχληαη ζην ίδην domain (πεξηνρή) ηνπ
Παγθφζκηνπ Ηζηνχ. Βαζίδεηαη ζηελ ππεξεζία www (world wide web), κε ηε ρξεζηκνπνίεζε ηνπ
πξσηνθφιινπ HTTP. Ζ ππεξεζία απηή δίλεη ηε δπλαηφηεηα ζηνπο ρξήζηεο ηνπ Internet λα
δεκηνπξγήζνπλ νπνηνπδήπνηε είδνπο πεξηερφκελν ζηηο ηζηνζειίδεο ηνπο. Σν ζχλνιν ησλ ηζηφηνπσλ
απνηειεί ην world wide web (www).
Μία Ηζηνζειίδα (web page) είλαη έλα είδνο εγγξάθνπ ηνπ Παγθφζκηνπ Ηζηνχ (WWW) πνπ
πεξηιακβάλεη πιεξνθνξίεο κε ηελ κνξθή θεηκέλνπ, ππεξθεηκέλνπ, εηθφλαο, βίληεν θαη ήρνπ. Οη
ηζηνζειίδεο αιιεινζπλδένληαη θαη κπνξεί ν ρξήζηεο λα κεηαβεί απφ ηε κία ζηελ άιιε θάλνληαο
«θιηθ», επηιέγνληαο δειαδή ζπλδέζκνπο πνπ ππάξρνπλ ζην θείκελν ή ζηηο θσηνγξαθίεο ηεο
ηζηνζειίδαο. Οη ζχλδεζκνη πξνο άιιεο ζειίδεο εκθαλίδνληαη ζπλήζσο ππνγξακκηζκέλνη θαη κε κπιε
ρξψκα γηα λα είλαη γξήγνξα μεθάζαξν ζηνλ επηζθέπηε φηη πξφθεηηαη γηα ζχλδεζκν πξνο άιιε
ηζηνζειίδα, ρσξίο φκσο πάληα λα είλαη απηφ απαξαίηεην.
Ζ θαηαζθεπή ηζηνζειίδσλ γίλεηαη κέζσ πξνγξακκάησλ πνπ θπθινθνξνχλ ειεχζεξα, αιιά
ππάξρνπλ θαη απηνκαηνπνηεκέλνη κεραληζκνί θαηαζθεπήο ηζηνζειίδσλ πνπ επηηξέπνπλ ζε απινχο
ρξήζηεο λα δεκηνπξγήζνπλ εχθνια θαη γξήγνξα πξνζσπηθέο ή θαη εκπνξηθέο ηζηνζειίδεο. Δπίζεο,
είλαη πνιιέο νη εηαηξίεο, πνπ εμεηδηθεχνληαη ζηε δεκηνπξγία ηζηνζειίδσλ πνπ ζηνρεχνπλ ζηελ αγνξά
θάπνηνπ πξντφληνο απφ ηνπο ρξήζηεο, ζηελ επηθνηλσλία κε ηνλ ηδηνθηήηε ηνπ ηζηφηνπνπ ή απιά ζην
αλέβαζκα ηνπ εηαηξηθνχ πξνθίι κηαο επηρείξεζεο.
Οη ηζηνζειίδεο κπνξνχλ λα είλαη ζηαηηθέο ή δπλακηθέο. πνπ αλαπξνζαξκφδνπλ απηφκαηα ην
πεξηερφκελφ ηνπο ή ηελ εκθάληζή ηνπο βαζηδφκελεο ζε κηα πνηθηιία παξαγφλησλ, φπσο κηα
θαηαρψξεζε απφ ηνλ ηειηθφ-ρξήζηε, κηα θαηαρψξεζε ή αιιαγή ζην πεξηβάιινλ πξνγξακκαηηζκνχ
απφ ηνλ ρεηξηζηή ηεο ηζηνζειίδαο ( φπσο ελ παξαδείγκαηη κηα κνξθνπνίεζε ηεο βάζεο δεδνκέλσλ).
Δμαηηίαο ηεο ζπλερνχο εμεηδίθεπζεο ζηνπο ηνκείο ηεο επηθνηλσληαθήο Πιεξνθνξηθήο, δεκηνπξγείηαη
κηα ζαθήο ηάζε δηαρσξηζκνχ ηνπ ζρεδηαζκνχ ζην Γηαδίθηπν απφ ηελ αλάπηπμε ηνπ δηαδηθηχνπ σο
κέζνπ ξνήο ηεο πιεξνθνξίαο θαη ησλ αγαζψλ πξνο φιεο ηηο δηαδηθηπαθέο ππεξεζίεο.

Γεληθφηεξα νη ηζηνζειίδεο δηαρσξίδνληαη ζε ζηαηηθέο θαη δπλακηθέο:


Οη ζηαηηθέο δελ αιιάδνπλ πεξηερφκελν θαη δηάηαμε κε νπνηνδήπνηε αίηεκα εθηφο θαη αλ ν
πξνγξακκαηηζηήο αλαβαζκίζεη ηε ζειίδα. Μηα απιή HTML ζειίδα είλαη παξάδεηγκα
ζηαηηθνχ πεξηερνκέλνπ.
Οη δπλακηθέο πξνζαξκφδνπλ ην πεξηερφκελν θαη/ή ηελ εκθάληζή ηνπο ζχκθσλα κε ηελ
θαηαρψξεζε/αιιειεπίδξαζε ή ηηο αιιαγέο ηνπ ηειηθνχ ρξήζηε ζην πεξηβάιινλ
πξνγξακκαηηζκνχ (ρξήζηεο, ψξα, ηξνπνπνηήζεηο ζηε βάζε δεδνκέλσλ, θηι) Σν πεξηερφκελν
κπνξεί λα αιιάδεη ζηνλ ππνινγηζηή ηνπ ηειηθνχ-ρξήζηε κε ηε ρξήζε ησλ γισζζψλ
πξνγξακκαηηζκνχ πνπ εθηεινχληαη ζηνλ ππνινγηζηή ηνπ ρξήζηε (JavaScript, VBScript,
Actionscript θ.α.). Σν πεξηερφκελν ζηηο δπλακηθέο ζειίδεο ζπρλά κεηαθξάδεηαη ζηνλ
εμππεξεηεηή (server) κέζσ γισζζψλ πξνγξακκαηηζκνχ πνπ εθηεινχληαη ζηνλ εμππεξεηεηή
(Perl, PHP, ASP, JSP, ColdFusion, .NET θηι).

3.2.4 ΢ρεδηαζκόο ΢ειίδσλ Ιζηνύ


Ο ζρεδηαζκφο ζην Γηαδίθηπν αθνξά ηελ ηθαλφηεηα δεκηνπξγίαο παξνπζηάζεσλ πεξηερνκέλνπ
(ζπλήζσο θεηκέλνπ ή πνιπκέζσλ) νη νπνίεο θηάλνπλ ζηνλ ηειηθφ-ρξήζηε κέζσ ηνπ Παγθφζκηνπ
Ηζηνχ, κε ηε ρξήζε ινγηζκηθνχ φπσο έλαο θπιινκεηξεηήο (web browser) ή άιινπ ινγηζκηθνχ
ζρεδηαζκέλνπ γηα ην δηαδίθηπν.
Μηα ηζηνζειίδα είλαη απηή πνπ παξνπζηάδεη θείκελα θαη εθαξκνγέο πνιπκέζσλ ζηνλ ηειηθφ-
ρξήζηε. Σέηνηα ζηνηρεία φπσο θείκελν, εηθφλεο (ζχκθσλα κε ηα πξφηππα SVG, BMP, GIF, JPEG ή

Σελίδα | 31
PNG) θαη θφξκεο κπνξνχλ λα ηνπνζεηεζνχλ ζηε ζειίδα κε ηε ρξήζε γισζζψλ ζήκαλζεο
ππεξθεηκέλνπ φπσο HTML/XHTML/XML. Ζ αλαπαξαγσγή πην ζχλζεησλ πνιπκέζσλ (αλπζκαηηθψλ
γξαθηθψλ, βίληεν, ήρσλ, γξαθηθψλ κε ελζσκαησκέλν ήρν θαη εηθφλα) κπνξεί λα γίλεη κε πξφζζεηα
(plug-ins) φπσο ην Flash, ην QuickTime, ην πεξηβάιινλ ρξφλνπ εθηέιεζεο Java, θ.α ή κε ηερλνινγίεο
φπσο νη γιψζζεο ζήκαλζεο HTML5, XML θαη MathML, θαη ην πξφηππν θχιισλ ζηπι CSS 3.
Οη θαηλνχξηεο εθδφζεηο ησλ πξνγξακκάησλ πεξηήγεζεο (Internet Explorer 7, 8, Firefox 3.6,
safari, chromium θιπ) πνπ αθνινπζνχλ ηα W3C πξφηππα νδήγεζαλ ζε κηα επξεία απνδνρή θαη ρξήζε
ησλ XHTML/XML ζε ζπλδπαζκφ κε ηα CSS (Cascading Style Sheets) γηα ηελ ηνπνζέηεζε θαη
δηαρείξηζε ησλ ζηνηρείσλ θαη αληηθεηκέλσλ ηεο ηζηνζειίδαο. Σα ηειεπηαία πξφηππα ζηνρεχνπλ ζην λα
απνθηήζνπλ ηα πξνγξάκκαηα πεξηήγεζεο ηελ δπλαηφηεηα λα πξνζθέξνπλ κηα επξεία γθάκα επηινγήο
πνιπκέζσλ θαη πξφζβαζεο ζηνπο πειάηεο ρσξίο ηε ρξήζε ησλ πξνζζέησλ (plug-ins).
Με ηελ ζπλερφκελε εηδίθεπζε ζηελ ηερλνινγίαο ηεο Πιεξνθνξηθήο δεκηνπξγείηαη ε αλάγθε
δηαρσξηζκνχ ηεο ΢ρεδηαζκνχ Ηζηνζειίδσλ απφ ηελ Πξνγξακκαηηζηή Ηζηνζειίδσλ.
Γηα ηε δηαδηθαζία ζρεδηαζκνχ κηαο ηζηνζειίδαο, κηαο εθαξκνγήο ή ελφο πνιπκέζνπ γηα ην
δηαδίθηπν κπνξεί λα ζπλδπάδνληαη πνιινί θιάδνη φπσο animation, ζπγγξαθή, επηθνηλσληαθφο
ζρεδηαζκφο, εηαηξηθή ηαπηφηεηα, ζρεδηαζκφο γξαθηθψλ, αιιειεπίδξαζε αλζξψπνπ-ππνινγηζηή,
αξρηηεθηνληθή ππνινγηζηψλ, ζρεδηαζκφο αιιειεπίδξαζεο, marketing, θσηνγξαθία, βειηηζηνπνίεζε
κεραλψλ αλαδήηεζεο θαη ηππνγξαθία.

3.2.5 Φόξκεο Ιζηνύ


Μηα θφξκα Ηζηνχ εκπεξηέρεηαη κέζα ζε κηα ηζηνζειίδα θαη πεξηέρεη δηάθνξα πιαίζηα
θεηκέλνπ, θνπκπηά επηινγψλ, πιαίζηα ειέγρνπ θ.α. ζηα νπνία νη ρξήζηεο κπνξνχλ λα θαηαρσξίζνπλ ή
λα επηιέμνπλ δηάθνξα δεδνκέλα θαη λα ηα ζηείινπλ ζηελ ηνπνζεζία πνπ ε θφξκα θαζνξίδεη..
Σα δεδνκέλα απηά ηα παξαιακβάλεη ζηε ζπλέρεηα ν δηαθνκηζηήο ηεο θφξκαο. Γηα
παξάδεηγκα, κε ηηο θφξκεο νη ρξήζηεο κπνξνχλ λα ζηέιλνπλ ζρφιηα, εξσηήζεηο, παξαγγειίεο θαη άιια
ζηνηρεία ζην δηαρεηξηζηή κηαο ηνπνζεζίαο.

3.2.6 Γηεύζπλζε IP
Μία δηεχζπλζε IP (Internet Protocol address), είλαη έλαο κνλαδηθφο αξηζκφο πνπ
ρξεζηκνπνηείηαη γηα ηελ αλαγλψξηζε θαη ζπλελλφεζε ησλ ζπζθεπψλ πνπ βξίζθνληαη κέζα ζην
Γηαδίθηπν. Ο ζπζθεπέο απηέο κπνξεί λα είλαη δξνκνινγεηέο (routers), ππνινγηζηέο, time-servers,
εθηππσηέο, κεραλέο γηα fax κέζσ Internet, θαη νξηζκέλα ηειέθσλα. Κάζε κηα απφ ηηο ζπζθεπέο απηέο
πξέπεη λα έρνπλ ηελ δηθή ηεο κνλαδηθή δηεχζπλζε. Όπσο θάζε δηεχζπλζε θαηνηθίαο θαη αξηζκφο
ηειεθψλνπ αληηζηνηρνχλ ζε έλα θαη κνλαδηθφ έηζη θαη κηα IP address ρξεζηκνπνηείηαη γηα ηε κνλαδηθή
αλαγλψξηζε ελφο ππνινγηζηή ή άιιεο ζπζθεπήο πνπ ζπλδέεηαη ζην Γηαδίθηπν.
Μηα δηεχζπλζε IP κπνξεί λα "κνηξάδεηαη" ζε πνιιέο ζπζθεπέο είηε επεηδή απηέο είλαη κέξνο
ηνπ ίδηνπ web server environment, είηε ιφγσ ελφο proxy server (π.ρ. ελφο Παξνρέα Τπεξεζηψλ
Γηαδηθηχνπ (ISP) ή κηαο ππεξεζίαο γηα εμαζθάιηζε αλσλπκίαο - anonymizer service) πνπ ιεηηνπξγνχλ
σο κεζνιαβεηέο. ΢ηελ ηειεπηαία πεξίπησζε (ρξήζε δηαθνκηζηή κεζνιάβεζεο) ε πξαγκαηηθή
δηεχζπλζε IP κπνξεί λα απνθξχπηεηαη απφ ην δηαθνκηζηή πνπ δέρεηαη αίηεζε.

3.2.7 Domain Name System


Σν Domain Name System ή DNS (΢χζηεκα Ολνκάησλ Σνκέα) είλαη έλα ζχζηεκα κε ην νπνίν
αληηζηνηρίδνληαη νη δηεπζχλζεηο IP ζε νλφκαηα ηνκέσλ (Domain Names). Δίλαη, δειαδή, ν κεραληζκφο
δηάζεζεο νλνκάησλ θαη δηεπζχλζεσλ πνπ ρξεζηκνπνηνχληαη ζην Γηαδίθηπν. Σα νλφκαηα ηνκέσλ φπσο
θαη νη δηεπζχλζεηο IP πνπ αλαπαξηζηνχλ είλαη κνλαδηθά, έρνπλ κηα ηεξαξρία θαη δηαβάδνληαη απφ
αξηζηεξά πξνο ηα δεμηά.

Σελίδα | 32
Έλαο θφκβνο ηνπ Internet δηαζέηεη έλα ζπγθεθξηκέλν θαη κνλαδηθφ φλνκα πνπ απνηειεί θαη
ηελ ηαπηφηεηα ηνπ θφκβνπ. Γηα παξάδεηγκα, ε CyberNet έρεη ζπκβνιηθφ φλνκα “serres.hol.gr”, φπνπ
“serres” είλαη ην φλνκα ηνπ εμππεξέηε (server), ην “hol” ε επηθξάηεηα πνπ πεξηιακβάλεη ηνλ ελ ιφγσ
εμππεξέηε, θαη ε επηθξάηεηα “gr” πεξηιακβάλεη φινπο ηνπο εμππεξέηεο πνπ βξίζθνληαη ζηελ Διιάδα.
΢ε έλα φλνκα κπνξεί λα αληηζηνηρνχλ πνιιέο IP δηεπζχλζεηο. Γηα παξάδεηγκα, ε δηεχζπλζε
www.google.gr αληηζηνηρεί ζε ηξεηο IP δηεπζχλζεηο, ηελ 66.102.9.99, ηελ 66.102.9.104 θαη ηελ
66.102.9.147. ΢ε απηήλ ηελ πεξίπησζε έρνπκε ηξεηο εμππεξεηεηέο πνπ ιεηηνπξγνχλ ηαπηφρξνλα
εθηειψληαο ηελ ίδηα εξγαζία, αιιά κνηξάδνληαη ηνλ θφξην εξγαζίαο δηά ηξία. ΢ε απηήλ ηελ πεξίπησζε
ν δηαθνκηζηήο DNS εθηειεί εμηζνξξφπεζε θνξηίνπ κεηαμχ ησλ ηξηψλ άιισλ δηαθνκηζηψλ.

Domain names
Μηα ππεξεζία εχξεζεο δηθηχνπ, ην Domain Name System (DNS), δίλεη ηε δπλαηφηεηα λα
αληηζηνηρεζνχλ νλφκαηα ππνινγηζηψλ (hostnames) ζε κηα δηεχζπλζε IP. Με απηφ ηνλ ηξφπν νη
άλζξσπνη κπνξνχλ εχθνια λα ζπκνχληαη έλα φλνκα θαη φρη κηα ζεηξά αξηζκψλ. Σν DNS επηηξέπεη ζε
πνιιαπιέο δηεπζχλζεηο θαη νλφκαηα λα δείρλνπλ ζε έλα πφξν ηνπ Γηαδηθηχνπ.
Έλαο αθφκε ιφγνο χπαξμεο ηνπ DNS είλαη λα επηηξέπεη, γηα παξάδεηγκα, ζε έλαλ ηζηφηνπν
πνπ θηινμελείηαη ζε πνιινχο δηαθνκηζηέο (πνπ ν θαζέλαο απφ ηνπο νπνίνπο έρεη ηε δηθή ηνπ
δηεχζπλζε IP) λα παξέρεη ζηνηρεηψδε εμηζνξξφπεζε θφξηνπ (load balancing), δειαδή κία νξζή
δηακνίξαζε ηεο θίλεζεο πνπ δέρεηαη ν ηζηφηνπνο αλάκεζα ζηνπο ππνινγηζηέο πνπ ηνλ θηινμελνχλ.

Γηα παξάδεηγκα, ην www.wikipedia.org δείρλεη ζην 207.142.131.248.

3.2.8 Φπιινκεηξεηήο Ιζηνύ


Ο θπιινκεηξεηή Ηζηνχ (Web browser) είλαη έλα πξφγξακκα πνπ απνθσδηθνπνηεί ηα
πεξηερφκελα ησλ ηζηνζειίδσλ θαη λα εκθαλίδεη ζηελ νζφλε ζηελ θαηάιιειε κνξθή. Σν θείκελν θαη νη
εηθφλεο ζε κηα ηζηνζειίδα κπνξεί λα πεξηέρνπλ ππεξζπλδέζκνπο πξνο άιιεο ηζηνζειίδεο ηνπ ίδηνπ ή
δηαθνξεηηθνχ ηζηφηνπνπ. Ο Web browser επηηξέπεη ζηνλ ρξήζηε ηελ γξήγνξε θαη εχθνιε πξφζβαζε
ζε πιεξνθνξίεο πνπ βξίζθνληαη ζε δηάθνξεο ηζηνζειίδεο θαη ηζηφηνπνπο ελαιιάζζνληαο ηηο
ηζηνζειίδεο κέζσ ησλ ππεξζπλδέζκσλ. Οη θπιινκεηξεηέο ρξεζηκνπνηνχλ ηε γιψζζα κνξθνπνίεζεο
HTML γηα ηελ πξνβνιή ησλ ηζηνζειίδσλ, γηα απηφ ε εκθάληζε κηαο ηζηνζειίδαο κπνξεί λα δηαθέξεη
αλάινγα κε ηνλ browser.
Γηα θάζε browser δηαηίζεληαη, επίζεο, θαη αξθεηά πξφζζεηα ζηνηρεία (add-on ή plug-ins), κε
ζηφρν ηελ επαχμεζε ησλ δπλαηνηήησλ ηνπο, ηε βειηίσζε ηεο ρξεζηηθφηεηάο ηνπο θαη ηελ πξνζηαζία
ηνπ ρξήζηε ζε ζέκαηα αζθάιεηαο.

Οη πεξηζζφηεξν ρξεζηκνπνηνχκελνη browsers είλαη νη:


Windows Internet Explorer
Mozilla Firefox
Apple Safari
Netscape Navigator
Opera
Google Chrome

3.2.9 URL
Χο URL (Uniform Recourse Location) νλνκάδεηαη ε δηεχζπλζε κηαο ηζηνζειίδαο. Ζ
δηεχζπλζε απηή ιεηηνπξγεί σο ηαπηφηεηα γηα ηηο ζειίδεο ηνπ Παγθφζκηνπ Ηζηνχ - θάζε ηζηνζειίδα
έρεη ηε δηθή ηεο κνλαδηθή δηεχζπλζε URL.
Μία δηεχζπλζε URL έρεη ηελ εμήο κνξθή:
http://www.example.com/sofia/photos.php

Σελίδα | 33
Σν πξψην κέξνο (http ://) καο ελεκεξψλεη γηα ην πξσηφθνιιν πνπ ζα πξέπεη λα
ρξεζηκνπνηήζεη ν θπιινκεηξεηήο γηα λα ζπλδεζεί κε ηνλ ππνινγηζηή ζηνλ νπνίν είλαη απνζεθεπκέλε
ε ηζηνζειίδα θαη λα θνξηψζεη ηα πεξηερφκελά ηεο. Οη ραξαθηήξεο :// ζε ζπλδπαζκφ καο ελεκεξψλνπλ
φηη ζα αθνινπζήζεη ην φλνκα ηνπ δηαθνκηζηή.
Σν δεχηεξν κέξνο (www.example.com )μεθηλάεη κε ην είδνο ηνπ δηαθνκηζηή θαη ην πιήξεο
φλνκα ηεο πεξηνρήο (domain name) ζηελ νπνία βξίζθεηαη ε ηζηνζειίδα.
Σν ηξίην κέξνο καο ελεκεξψλεη γηα ηνλ ππνθάθειν θαη ην φλνκα ηνπ αξρείνπ ηεο ηζηνζειίδαο.
Απνηειείηαη, δειαδή, απφ ην φλνκα ηνπ θαηαιφγνπ πνπ πεξηέρεη ηελ ηζηνζειίδα θαη ην φλνκα ηνπ
εγγξάθνπ.

3.2.10 Δπηθνηλσλία κέζσ Internet


Οη δηαδηθηπαθέο θνηλόηεηεο απνηεινχλ κηα αξθεηά δηαδεδνκέλε κνξθή δηαδηθηπαθήο
επηθνηλσλίαο, ηελ νπνία δελ άξγεζαλ λα πηνζεηήζνπλ νη επηρεηξήζεηο σο εξγαιείν πξνβνιήο,
πξνψζεζεο θαη πψιεζεο ησλ πξντφλησλ ηνπο. Οη ειεθηξνληθέο θνηλφηεηεο δίλνπλ ηε δπλαηφηεηα ζε
δηάθνξεο νκάδεο αλζξψπσλ πνπ ελδηαθέξνληαη γηα θάπνην εμεηδηθεπκέλν ζέκα λα αληαιιάζζνπλ
απφςεηο πάλσ ζην ζέκα απηφ.
Ζ επηρείξεζε κπνξεί λα παξέρεη ηα κέζα ζε φινπο απηνχο ηνπο πειάηεο (ή ππνςήθηνπο
πειάηεο) λα ελεκεξσζνχλ γηα εμεηδηθεπκέλα ζέκαηα πνπ ηνπο ελδηαθέξνπλ, θαη αθνξνχλ θπξίσο ηα
πξντφληα ή ηηο ππεξεζίεο ηεο επηρείξεζεο, θαη λα αληαιιάμνπλ απφςεηο θαη πιεξνθνξίεο.
Ζ πηνζέηεζε ησλ δηαδηθηπαθψλ θνηλνηήησλ παξέρεη ηε δπλαηφηεηα γηα ελεκέξσζε θαη άκεζε
επίιπζε πξνβιεκάησλ ή απνξηψλ ζε ζρέζε κε θάπνην πξντφλ, επηθνηλσλία κε ηνπο πειάηεο, θαιχηεξε
εμππεξέηεζε, αιιά θαη αλάπηπμε ζρέζεσλ εκπηζηνζχλεο αλάκεζα ζηελ επηρείξεζε θαη ηνλ πειάηε,
ζηνηρείν απαξαίηεην γηα ηελ αληηκεηψπηζε ηνπ αληαγσληζκνχ.
Σα πεξηζζφηεξα ειεθηξνληθά βηβιηνπσιεία πξνζθέξνπλ ηε δπλαηφηεηα ζρνιηαζκνχ ησλ
βηβιίσλ ηνπο απφ αλαγλψζηεο. Έηζη, πνιινί ππνςήθηνη αγνξαζηέο κπνξνχλ λα πάξνπλ θαη κηα άιιε
γλψκε πξηλ αγνξάζνπλ έλα βηβιίν. Αθφκε θαη ζηελ πεξίπησζε πνπ θάπνηνη πειάηεο εθθξάζνπλ
αξλεηηθή γλψκε, ζα έρεη ηε δπλαηφηεηα λα θάλεηε δηνξζψζεηο ή βειηηψζεηο, δείρλνληαο ηνλ
επαγγεικαηηζκφ ηεο επηρείξεζήο θαη ηελ θαιή επηθνηλσλία κε ηνπο πειάηεο.
΢ηελ δηθή καο ηζηνζειίδα ν ρξήζηεο κπνξεί λα επηθνηλσλήζεη κε ηνλ δηαρεηξηζηή κέζσ κηαο
θφξκαο επηθνηλσλίαο, φπνπ ζπκπιεξψλνληαο ηα ζηνηρεία ηνπ κπνξεί λα ζηείιεη ην κήλπκα πνπ
επηζπκεί. Δπίζεο δχλεηαη ε δπλαηφηεηα ζηνπο ρξήζηεο λα αληαιιάμνπλ ηηο απφςεηο ηνπο γηα δηάθνξα
βηβιία, ζπκπιεξψλνληαο ηελ αλάινγε θφξκα. Δίλαη κηα κνξθή forum, ηνπ νπνίνπ ηα κελχκαηα
επηβιέπεη ν δηαρεηξηζηήο, ν νπνίνο απνθαζίδεη αλ ζα εκθαληζηνχλε ζηελ ηζηνζειίδα ή φρη.

3.2.11 Μεραλή αλαδήηεζεο


Ζ κεραλή αλαδήηεζεο είλαη κηα εθαξκνγή πνπ επηηξέπεη ηελ αλαδήηεζε θεηκέλσλ θαη
αξρείσλ ζην Γηαδίθηπν. Σα απνηειέζκαηα παξνπζηάδνληαη ζε κηα ιίζηα θαη κέζσ ππεξζπλδέζκσλ
κεηαβαίλεη ν ρξήζηεο ζηηο πιεξνθνξίεο πνπ επηζπκεί. Έλα πξφγξακκα ππνινγηζηή δεκηνπξγεί κηα
βάζε δεδνκέλσλ κε ηηο πιεξνθνξίεο, θαη ην θαηάιιειν πεξηβάιινλ πνπ εκθαλίδεηαη ζηνλ ηειηθφ
ρξήζηε ν νπνίνο ρξεζηκνπνηεί ηελ εθαξκνγή απφ άιινλ ππνινγηζηή ζπλδεκέλν ζην δηαδίθηπν.

Δκπνξηθή Δθαξκνγή
Οη κεραλέο αλαδήηεζεο ρξεζηκνπνηνχληαη πνιχ απφ ην αγνξαζηηθφ θνηλφ παγθνζκίσο γη‟
απηφ θαη πνιιέο εηαηξίεο επηζπκνχλ λα δηαθεκίδνληαη κέζσ απηψλ. Δπεηδή νη εηαηξίεο απηέο φιν θαη
πιεζαίλνπλ ππάξρεη κεγάινο αληαγσληζκφο γηα ηελ θαηάθηεζε ησλ πξψησλ ζέζεσλ ζηηο ηζηνζειίδεο

Σελίδα | 34
απνηειεζκάησλ αλαδήηεζεο. Σν θαηλφκελν απηφ νδήγεζε ζηελ αλάπηπμε ελφο άιινπ θιάδνπ, ηνπ
search engine optimization (Βειηηζηνπνίεζε γηα ηηο κεραλέο αλαδήηεζεο) πνπ πεξηιακβάλεη ηερληθέο
θαηαζθεπήο θαη δηθηχσζεο ηζηνζειίδσλ πνπ λα πξνζθέξνπλ θαιχηεξεο ζέζεηο ζηα απνηειέζκαηα.

Γλσζηέο Μεραλέο Αλαδήηεζεο


Τπάξρνπλ πνιιέο κεραλέο αλαδήηεζεο κε ηηο κεραλέο αλαδήηεζεο ηεο εηαηξίαο Google
(Google) θαη ηεο Yahoo (Yahoo! Search) πξψηεο ζε ρξήζε. Άιιεο γλσζηέο κεραλέο αλαδήηεζεο απφ
ηε Microsoft ε MSN Search θαη ε Microsoft Live Search.
Διιεληθέο κεραλέο αλαδήηεζεο κεηαμχ άιισλ είλαη απηέο ηεο Forthnet, ηεο Otenet, ηνπ
Cleverlook θαη ηνπ Pathfinder.

Γεκηνπξγία ηεο δηθήο καο Φόξκαο Αλαδήηεζεο.


Γηα λα δψζνπκε ζην ρξήζηε ηελ δπλαηφηεηα αλαδήηεζεο ηνπ βηβιίνπ πνπ επηζπκεί
δεκηνπξγήζακε κηα θφξκα αλαδήηεζεο φπνπ ζπκπιεξψλνληαο ηα θαηάιιεια πεδία ηεο θφξκαο
εθείλε εξεπλά ηελ βάζε δεδνκέλσλ γηα λα εληνπίζεη θαη λα καο εκθαλίζεη ηα ζηνηρεία πνπ
πεξηιακβάλνπλ ηηο ζπγθεθξηκέλεο ιέμεηο θιεηδηά.

3.2.12 Ηιεθηξνληθό Δκπόξην


Οη αγνξέο θαη νη πσιήζεηο αγαζψλ θαη ππεξεζηψλ ζην Internet, νλνκάδεηαη ειεθηξνληθφ
εκπφξην. Σν Internet δελ ρξεζηκνπνηείηαη πιένλ κφλν γηα αλαδήηεζε πιεξνθνξηψλ θαη δεδνκέλσλ ή
γηα λα ζηείινπκε θαη λα ιακβάλνπκε ειεθηξνληθά κελχκαηα. Έρνπλ εκθαληζηεί πνιιέο λέεο
ππεξεζίεο πνπ καο επηηξέπνπλ λα θάλνπκε αγνξέο θαη πσιήζεηο αγαζψλ θαη δηαθφξσλ ππεξεζηψλ, ην
ιεγφκελν ειεθηξνληθφ εκπφξην. Να θάλνπκε, δειαδή, ηα ςψληα καο κε εχθνιν ηξφπν, ρσξίο
ηαιαηπσξία, απιψο ρξεζηκνπνηψληαο έλαλ ππνινγηζηή θαη κηα ζχλδεζε ζην Internet.

Ζ δηαδηθαζία αγνξάο πξντφλησλ κέζσ ηνπ Γηαδηθηχνπ είλαη ζρεηηθά ηππνπνηεκέλε.


Δπηζθεπηφκαζηε ηελ ηζηνζειίδα ηνπ πξνκεζεπηή.
Δπηιέγνπκε ην πξντφλ πνπ ζέινπκε λα αγνξάζνπκε.
Αλ ππάξρεη ππεξζχλδεζκνο πξνο ην “θαιάζη” κεηαβαίλνπκε ζε απηφλ.
Ο αγνξαζηήο ζα ρξεηαζηεί λα ζπκπιεξψζεη κηα θφξκα κε ηα ζηνηρεία ηνπ, ψζηε λα
παξαγγείιεη ην βηβιίν πνπ επηζπκεί.

Γηαδηθαζία αγνξάο βηβιίσλ


΢ηελ ε ηζηνζειίδα πνπ δεκηνπξγήζακε ν ρξήζηεο πξέπεη πξψηα λα γίλεη κέλνο ηεο
ηζηνζειίδαο καο θαηαρσξψληαο ηα ζηνηρεία ηνπ ζηε θφξκα εγγξαθήο θαη έπεηηα λα ζπλδεζεί ζε απηή.
΢ηε ζπλέρεηα ηνπ δίλεηαη ε δπλαηφηεηα πξνζζήθεο ησλ βηβιίσλ πνπ επηζπκεί λα αγνξάζεη ζην θαιάζη
ηνπ. Όηαλ έρεη απνθαζίζεη πνηα βηβιία ζέιεη λα αγνξάζεη θαζψο θαη ηελ πνζφηεηα απηψλ κεηαβαίλεη
ζηελ Οινθιήξσζε ηεο Αγνξάο.

3.2.13 Αζθάιεηα ζην Internet


Έλαο ρξήζηεο ζα πξέπεη λα πξνζηαηεπηεί:
Απφ εμσηεξηθνχο εηζβνιείο: Οη Hackers ή νη Crackers κπνξνχλ λα εηζρσξήζνπλ ζηνλ
ππνινγηζηή καο θαη λα αληηγξάςνπλ ή λα δηαγξάςνπλ ή λα αιιάμνπλ ηελ δηακφξθσζε ησλ
αξρεία απφ ην ζθιεξφ δίζθν. Δπίζεο κπνξνχλ λα εγθαηαζηήζνπλ αλεπηζχκεηα πξνγξάκκαηα,
θαζψο θαη λα παξαθνινπζήζνπλ δηάθνξεο δξαζηεξηφηεηέο πνπ ιακβάλνπλ ρψξν ηφζν ζην

Σελίδα | 35
δηθφ καο ππνινγηζηή φζν θαη ζην Γηαδίθηπν. Γηα ην ιφγν απηφ ππάξρεη ην ηείρνο πξνζηαζίαο
(firewall) ησλ Windows ην νπνίν ειέγρεη ηα δεδνκέλα πνπ απνζηέιινληαη θαη ιακβάλνληαη
απφ ηνλ ππνινγηζηή ή ην δίθηπν θαη έρεη ηε δπλαηφηεηα λα κπινθάξεη ηελ είζνδν θαη έμνδφ
ηνπο.
Απφ ηνχο ππνινγηζηψλ: Τπάξρνπλ πνιιά πξνγξάκκαηα πνπ εθηεινχλ αλεπηζχκεηεο ελέξγεηεο
ζην ζχζηεκά καο. Γη‟ απηφ θαη ζα πξέπεη λα έρνπκε εγθαηεζηεκέλν ζηνλ ππνινγηζηή καο έλα
πξφγξακκα antivirus πνπ ζα πξνζηαηεχεη ηνλ ππνινγηζηή καο ζθαλάξνληαο φια ηα αξρεία καο
θαη δηαγξάθνληαο εθείλα πνπ έρνπλ “κνιπλζεί” απφ θάπνην ηφ.
Απφ ηελ εκθάληζε ηζηνζειίδσλ κε αλεπηζχκεην πεξηερφκελν, ηελ εκθάληζε ελνριεηηθψλ
παξαζχξσλ θαηά ηελ πεξηήγεζε ζηνλ Ηζηφ, θαη απφ ηελ ιήςε ελνριεηηθψλ κελπκάησλ.

Αζθαιείο ΢πλαιιαγέο
Οη πεξηζζφηεξεο ηνπνζεζίεο γηα λα νινθιεξψζνπλ κηα ειεθηξνληθή ζπλαιιαγή απαηηνχλε
απφ ηνπο ρξήζηεο ηελ ρξήζε πηζησηηθήο θάξηαο. Γη‟ απηφ θαη είλαη ζρεδηαζκέλεο κε ηέηνην ηξφπν
ψζηε λα πξνζηαηεχνλ ηνπο ρξήζηεο απφ πηζαλή ππνθινπή ησλ ζηνηρείσλ ηνπο απαγνξεχνληαο ζε κε
εμνπζηνδνηεκέλα άηνκα λα έρνπλ πξφζβαζε ζηηο πιεξνθνξίεο ησλ ρξεζηψλ.
Έλαο θπιινκεηξεηήο Ηζηνχ ππνζηεξίδεη πξσηφθνιια αζθαιείαο πνπ ρξεζηκνπνηνχληαη απφ
αζθαιείο ηνπνζεζίεο, έηζη ψζηε φηαλ απνζηέιιεη ηα δεδνκέλα ηνπ λα κελ ππάξρεη θίλδπλνο λα
πξνζπειαζηνχλ απφ κε εμνπζηνδνηεκέλα άηνκα.
Κάζε θνξά πνπ έλαο ρξήζηεο επηζθέπηεηαη κηα αζθαιή ηνπνζεζία, ε ηνπνζεζία ηνπ
απνζηέιιεη έλα πηζηνπνηεηηθφ, ην νπνίν εκθαλίδεηαη ζηελ γξακκή θαηάζηαζεο ζην θπιινκεηξεηή
Ηζηνχ κε ηε κνξθή ινπθέηνπ.

Φεθηαθά Πηζηνπνηεηηθά
Σν ςεθηαθφ πηζηνπνηεηηθφ είλαη έλα ειεθηξνληθφ έγγξαθν πνπ ρξεζηκεχεη ζηελ αλαγλψξηζε
κηαο νληφηεηαο. Μέζσ ησλ ςεθηαθφ πηζηνπνηεηηθφ γίλεηαη ε επηβεβαίσζε ηεο ηαπηφηεηαο ησλ
ρξεζηψλ πξνζηαηεχνληάο ηνπο απφ ππνθινπέο ή αιινηψζεηο ησλ δεδνκέλσλ πνπ αληαιιάζνπλ κέζσ
Internet. Δπίζεο, ηα ςεθηαθά πηζηνπνηεηηθά πξνθπιάγνπλ ηνλ ππνινγηζηή καο απφ κε αζθαιέο
ινγηζκηθφ πνπ δηαηίζεηαη ζην Γηαδίθηπν.
Τπάξρνπλ δχν θχξηνη ηχπνη πηζηνπνηεηηθψλ:
Σα πξνζσπηθά πηζηνπνηεηηθά, ηα νπνία επηβεβαηψλνπλ ηελ ηαπηφηεηα ελφο ρξήζηε θαη
ρξεζηκνπνηνχληαη γηα ηελ πξνζπέιαζε ηζηνζειίδσλ πνπ απαηηνχλ επηβεβαίσζε ησλ ρξεζηψλ.
Σα πηζηνπνηεηηθά ηνπνζεζηψλ Ηζηνχ, ηα νπνία επηβεβαηψλνπλ ηελ γλεζηφηεηα θαη ηελ
αζθάιεηα κηαο ηνπνζεζίαο Ηζηνχ θαη ρξεζηκεχνπλ ζην λα είκαζηε ζίγνπξνη φηη απνζηέιινπκε
ηα πξνζσπηθά καο ζηνηρεία ή φηη θαηεβάδνπκε αξρεία απφ αζθαιείο ηνπνζεζίεο.

Κξππηνγξάθεζε
Με ηελ θξππηνγξάθεζε ηξνπνπνηνχκε ηα δεδνκέλα ψζηε λα κελ είλαη δπλαηή ε αλάγλσζε
θαη ε θαηαλφεζή ηνπο απφ κε εμνπζηνδνηεκέλνπο ρξήζηεο. Έηζη είκαζηε ζίγνπξνη φηη ηα δεδνκέλα ζα
δηαβαζηνχλ κφλν απφ ηνλ παξαιήπηε πνπ έρνπκε θαζνξίζεη. Ζ θξππηνγξάθεζε κπνξεί λα
πξαγκαηνπνηεζεί απφ δηάθνξεο εθαξκνγέο θαη ιεηηνπξγηθά ζπζηήκαηα.
Ζ δηαδηθαζία κεηαηξνπήο ελφο θξππηνγξαθεκέλνπ αξρείνπ, ψζηε λα είλαη δπλαηή ε
αλάγλσζή ηνπ απφ εμνπζηνδνηεκέλνπο ρξήζηεο , ιέγεηαη αποκρσπηογράθηζη θαη πξαγκαηνπνηείηαη
κε αλάινγν ινγηζκηθφ.

Σελίδα | 36
3.3 Υξνλνδηάγξακκα Δξγαζίαο
2011
Ηαλνπάξηνο Φεβρουάριοσ Μάρτιοσ Απρίλιοσ Μάιοσ
15 30 15 30 15 30 15 30 15 30
΢ρεδηαζκφο Ηζηνρψξνπ

΢ρεδηαζκφο Animation
Γεκηνπξγία Βάζεο
Γεδνκέλσλ
Γεκηνπξγία Φνξκψλ κε
ηελ PHP
Δκθάληζε δεδνκέλσλ
κε ηελ PHP
Αλαθνξά Πηπρηαθήο

Δηθόλα 3.1: Υξνλνδηάγξακκα Πηπρηαθήο

Σελίδα | 37
ΚΔΦΑΛΑΙΟ 4: ΚΤΡΙΟ ΜΔΡΟ΢
ΠΣΤΥΙΑΚΗ΢
4.1 Ρόινη θαη δηθαηώκαηα πξόζβαζεο

4.1.1 Λεηηνπξγίεο Γηαρεηξηζηή


Ο Γηαρεηξηζηήο βξίζθεηαη ζηελ θνξπθή ηεο ππξακίδαο ηεο εθαξκνγήο δηφηη είλαη ππεχζπλνο
γηα ηελ ζσζηή ιεηηνπξγία ηεο ζειίδαο. Έρεη πξφζβαζε ζρεδφλ ζε φηη γίλεηαη ζηελ εθαξκνγή θαη ηνπ
αλαινγνχλ φια ηα δηθαηψκαηα πνπ έρεη ν ρξήζηεο-κέινο θαη ν απιφο ρξήζηεο-επηζθέπηεο ηεο
ζειίδαο, πέξα απφ απηά πνπ έρεη κφλν απηφο. Δπνκέλσο ηνπ έρνπλ απνδνζεί νη ζεκαληηθφηεξεο
ιεηηνπξγίεο, νη νπνίεο πεξηγξάθνληαη παξαθάησ:

Δκθάληζε φισλ ησλ εγγεγξακκέλσλ ρξεζηψλ.


Με ηελ ιεηηνπξγία απηή ν δηαρεηξηζηήο κπνξεί λα δεη φιεο ηηο εγγξαθέο πνπ έρνπλ
θαηαρσξεζεί ζηε βάζε δεδνκέλσλ. Γίλεηε ηαπηφρξνλα ε δπλαηφηεηα θαη ην δηθαίσκα λα δηαγξάςεη
νπνηαδήπνηε εγγξαθή.

Πξφζζεζε θαη Δπεμεξγαζία ησλ βηβιίσλ.


Με απηήλ ηελ ιεηηνπξγία δίλεηαη ην δηθαίσκα ζηνλ δηαρεηξηζηή λα επεμεξγαζηεί ηα ζηνηρεία
θαη ηηο πιεξνθνξίεο φισλ ησλ βηβιίσλ ηεο ηζηνζειίδαο θαη λα απνζεθεχζεη ηηο αιιαγέο ζηε βάζε
δεδνκέλσλ.

Δκθάληζε Όισλ ησλ Παξαγγειηψλ.


Με ηελ ιεηηνπξγία απηή εκθαλίδνληαη ζηνλ δηαρεηξηζηή φια νη παξαγγειίεο πνπ ππάξρνπλ
ζηελ Β/Γ ηνπ ζπζηήκαηνο, ηα νπνία έρνπλ ζηαιεί απφ ηνπο ρξήζηεο ηεο ηζηνζειίδαο γηα ηελ αγνξά
ησλ βηβιίσλ πνπ επηζπκνχλ.

Γηαρείξηζε Μελπκάησλ ηνπ Forum.


Με ηελ ιεηηνπξγία ν δηαρεηξηζηείο είλαη απηφο πνπ απνθαζίδεη πνηα απφ ηα κελχκαηα ησλ
ρξεζηψλ ή ησλ απιψλ επηζθεπηψλ ηεο ηζηνζειίδαο ζα εκθαλίδνληαη ζηελ ζειίδα ηνπ forum.

4.1.2 Λεηηνπξγίεο Υξήζηε-Μέινπο


Δγγξαθή ζην ΢χζηεκα.
Με ηελ ιεηηνπξγία απηή ν θάζε επηζθέπηεο κπνξεί λα γξαθηεί ζηελ ζειίδα θαη γίλεη κέινο
ηεο, απνθηψληαο πξφζβαζε ζηα δηθαηψκαηα ηνπ ρξήζηε-κέινπο.

Δηζαγσγή ζην ζχζηεκα.


Με ηελ ιεηηνπξγία απηή κπνξεί ν θάζε ρξήζηεο λα πιεθηξνινγήζεη ηα ζηνηρεία πξφζβαζήο
ηνπ θαη λα εηζαρζεί ζηελ ηζηνζειίδα σο κέινο κε ηα αληίζηνηρα δηθαηψκαηα, εθφζνλ έρεη εγγξαθεί
θαλνληθά.

Δπεμεξγαζία ΢ηνηρείσλ.

Σελίδα | 38
Γίλεηαη ε δπλαηφηεηα ζην ρξήζηε-κέινο λα επεμεξγαζηεί ηα πξνζσπηθά ζηνηρεία ηνπ, θαζψο
θαη ηα ζηνηρεία πξφζβαζεο.

Αλαδήηεζε (Απιή-΢χλζεηε).
Ζ ιεηηνπξγία απηή είλαη δηαζέζηκε θαη ζηα ηξία επίπεδα ρξεζηψλ, θαη είλαη κηα απφ ηηο
ζεκαληηθφηεξεο ιεηηνπξγίεο. Τπάξρνπλ δχν ηξφπνη αλαδήηεζεο, απηφο ηεο απιήο, θαη απηφο ηεο
ζχλζεηεο αλαδήηεζεο.
΢ηελ απιή αλαδήηεζε απαηηείηαη ε ζπκπιήξσζε ελφο κφλν θξηηεξίσλ αλαδήηεζεο, ελψ ζηελ
ζχλζεηε αλαδήηεζε δίλεηαη ζηνλ ρξήζηε ε δπλαηφηεηα λα εηζάγεη πεξηζζφηεξα θξηηήξηα αλαδήηεζεο,
ψζηε λα επηηεπρζνχλ ζπγθεθξηκέλα απνηειέζκαηα.

Απνζηνιή Μελχκαηνο.
Με ηελ ιεηηνπξγία απηή κπνξεί ν θάζε ρξήζηεο λα ζπκπιεξψζεη κηα θφξκα απνζηνιήο
ζηνηρείσλ καδί κε θάπνην κήλπκα θαη λα ηελ ζηείιεη ζηνλ δηαρεηξηζηή ψζηε λα κπνξέζεη λα
πιεξνθνξεζεί γηα θάπνην βηβιίν.

Απνζχλδεζε απφ ην ζχζηεκα.


Με ηελ ιεηηνπξγία απηή απνζπλδέεηαη ν ρξήζηεο- κέινο απφ ηελ ηζηνζειίδα, θαη επαλέξρεηαη
σο απιφο επηζθέπηεο ζηελ αξρηθή ζειίδα.

Πξνζζήθε Βηβιίσλ ζην Καιάζη.


Γίλεηαη ε δπλαηφηεηα ζην ρξήζηε-κέινο λα πξνζζέηεη φζα βηβιία επηζπκεί ζην θαιάζη ηνπ,
έηζη ψζηε λα πξνβεί ζηελ on-line αγνξά ηνπο.

Πξνζζήθε Βηβιίσλ ζηε Wishlist.


H Wishlist είλαη κία ιίζηα ζηελ νπνία ν ρξήζηεο-κέινο ζα κπνξεί λα πξνζζέηεη ηα αγαπεκέλα
ηνπ βηβιία.

4.1.3 Λεηηνπξγίεο Υξήζηε-Δπηζθέπηε


Ο απιφο επηζθέπηεο ελδηαθεξφκελνο ηεο ηζηνζειίδαο, είλαη ν ζηφρνο ηεο ζπγθεθξηκέλεο
εθαξκνγήο. Ο θάζε ρξήζηεο ζα πξέπεη λα πεξηεγείηαη κε άλεζε ζηηο ζειίδεο ηεο εθαξκνγήο, ρσξίο λα
ζπλαληά δπζθνιίεο ζηελ εθηέιεζε ησλ ιεηηνπξγηψλ πνπ δεκηνπξγήζεθαλ γηα απηφλ.
Γελ απαηηνχληαη απφ κέξνο ηνπ ηδηαίηεξεο γλψζεηο πιεξνθνξηθήο. Απαηηνχληαη φκσο νη
ζηνηρεηψδεηο γλψζεηο ζρεηηθά κε ην δηαδίθηπν θαη ηελ πινήγεζε ζε απηφ, θαη θπζηθά ε ρξήζε
ειεθηξνληθνχ ππνινγηζηή.

4.1.4 Γεκηνπξγία Υξεζηώλ θαη Πξνλνκίσλ


Σν ζχζηεκα πξνλνκίσλ ηεο MySQL ζρεδηάζηεθε κε ζηφρν λα πεξηνξίζεη ηελ πξφζβαζε
ζπγθεθξηκέλσλ ρξεζηψλ ζε ζπγθεθξηκέλεο δηαηαγέο γηα ζπγθεθξηκέλεο βάζεηο δεδνκέλσλ. Μ απηφ
ηνλ ηξφπν έλαο δηαθνκηζηήο Ηζηνχ εμαζθαιίδεη ηελ αζθαιή πξνζπέιαζε δηαθφξσλ βάζεσλ
δεδνκέλσλ απφ πνιινχο ρξήζηεο. Κάζε ρξήζηεο ζην ζχζηεκα ηεο MySQL κπνξεί λα έρεη
ζπγθεθξηκέλεο δπλαηφηεηεο ζε ζπγθεθξηκέλεο βάζεηο δεδνκέλσλ, νη νπνίεο βξίζθνληαη ζε δηάθνξνπο
ππνινγηζηέο ππεξεζίαο.
Ο βαζηθφο ρξήζηεο - ηεο MySQL, φρη ηνπ ζπζηήκαηνο – έρεη ηηο πεξηζζφηεξεο δπλαηφηεηεο
θαη κπνξεί λα δεκηνπξγεί άιινπο δεπηεξεχνληεο ρξήζηεο, ζηνπο νπνίνπο κπνξεί λα εθρσξεί
δπλαηφηεηεο παξφκνηεο αθφκε θαη κε ηνπ βαζηθνχ ρξήζηε.

Σελίδα | 39
H MySQL ειέγρεη πξψηα αλ ν ρξήζηεο έρεη ηελ άδεηα λα ζπλδεζεί κε ην δηαθνκηζηή θαη ζηε
ζπλέρεηα ειέγρεη αλ ν ρξήζηεο έρεη ην δηθαίσκα λα εθηειέζεη ηε ζπγθεθξηκέλε εληνιή SQL ζηηο
ζπγθεθξηκέλεο βάζεηο δεδνκέλσλ.

Πξνλόκηα ηεο MySQL


ΓΙΚΑΙΧΜΑΣΑ ΔΠΙΣΡΔΠΔΙ
SELECT Αλάγλσζε εγγξαθψλ απφ πίλαθεο.
INSERT Πξνζζήθε λέσλ γξακκψλ δεδνκέλσλ ζε πίλαθεο.
UPDATE Σξνπνπνίεζε δεδνκέλσλ πνπ ήδε ππάξρνπλ ζε πίλαθεο.
DELETE Γηαγξαθή δεδνκέλσλ απφ πίλαθεο.
INDEX Γεκηνπξγία θαη θαηάξγεζε επξεηεξίσλ πηλάθσλ.
ALTER Σξνπνπνίεζε ηεο δνκήο ελφο πίλαθα.
CREATE Γεκηνπξγία λέσλ πηλάθσλ ή βάζεσλ δεδνκέλσλ.
DROP Γηαγξαθή πηλάθσλ ή βάζεσλ δεδνκέλσλ.
RELOAD Δπαλαθφξησζε ησλ δηθαησκάησλ ζε πίλαθεο.
SHOUTDOWN Σεξκαηηζκφο ηνπ δηαθνκηζηή ηεο MySQL.
PROCESS Δμέηαζε θαη ηεξκαηηζκφο ησλ δηεξγαζηψλ ηεο MySQL.
FILE Δηζαγσγή δεδνκέλσλ ζε πίλαθεο απφ αξρεία θεηκέλνπ.
GRAND Γεκηνπξγία λέσλ ρξεζηψλ.
REVOKE Αθαίξεζε αδεηψλ απφ ρξήζηεο.

Πίλαθαο 4.1: Πξνλόκηα ηεο MySQL

Τπάξρνπλ πνιινί ηξφπνη θαζνξηζκνχ ρξεζηψλ ζηελ MySQL. Έλαο ηξφπνο είλαη κέζσ ηεο
δηαηαγήο GRAND ζηνλ πειάηε mysql.

GRAND πξνλόκηα ON βάζε_δεδνκέλσλ.* TO όλνκα_ρξήζηε@ππνινγηζηήο_ππεξεζίαο


IDENTIFIED BY „θσδηθόο‟

Ζ επεμεξγαζία φισλ ησλ βάζεσλ δεδνκέλσλ θαζνξίδεηε κε ηε ζχληαμε *.*


Αλ ν φξνο IDENTIFIED BY „θσδηθφο‟ παξαιεηθζεί ν ρξήζηεο δε ζα ρξεηάδεηαη λα θαηαρσξεί
θσδηθφ πξφζβαζεο. Δπίζεο, γηα λα επηηξαπεί νπνηνζδήπνηε ππνινγηζηήο ππεξεζίαο γξάθνπκε:
φλνκα_ρξήζηε@‟%‟

πρ. CREATE DATABASE example;


GRAND SELECT, INSERT, UPDATE, DELETE ON example.*
TO „someuser‟@‟localhost‟
IDENTIFIED BY „somepass‟;

Δηθόλα 4.1: Υξήζηεο κε δηθαηώκαηα

Σελίδα | 40
Δηθόλα 4.2: Δκθάληζε δηθαησκάησλ ρξεζηώλ

4.2 ΢ρεδηαζκόο Ιζηνρώξνπ

4.2.1 Μνξθνπνίεζε ΢ειίδσλ κε Φύιια CSS


Σα επικαλςπηόμενα θύλλα ζηςλ (CSS) είλαη κηα ζπιινγή θαλφλσλ κνξθνπνίεζεο πνπ ειέγρεη
ηελ εκθάληζε ηνπ πεξηερνκέλνπ ζε κηα ηζηνζειίδα. Με ηε ρξήζε ζηπι CSS γηα ηε κνξθνπνίεζε κηαο
ζειίδαο, ην πεξηερφκελν δηαρσξίδεηαη απφ ηνλ ηξφπν παξνπζίαζεο. Σν πεξηερφκελν ηεο ζειίδαο καο -
ν θψδηθαο HTML- βξίζθεηαη κέζα ζην αξρείν HTML, ελψ νη θαλφλεο CSS πνπ νξίδνπλ ηνλ ηξφπν
παξνπζίαζεο ηνπ θψδηθα βξίζθνληαη κέζα ζε έλα εμσηεξηθφ θχιιν ζηπι. Ο δηαρσξηζκφο ηνπ
πεξηερνκέλνπ απφ ηνλ ηξφπν παξνπζίαζεο δηεπθνιχλεη ζεκαληηθά ηε ζπληήξεζε ηεο εκθάληζεο ηεο
ηνπνζεζίαο καο απφ κηα θεληξηθή ζέζε, επεηδή δελ ρξεηάδεηαη λα ελεκεξψλνπκε θάζε ηδηφηεηα ζε
θάζε ζειίδα φπνηε ζέινπκε λα θάλεηε κηα αιιαγή. Δπίζεο, κε ηνλ δηαρσξηζκφ ηνπ πεξηερνκέλνπ απφ
ηνλ ηξφπν παξνπζίαζεο ν θψδηθα HTML γίλεηαη πην απιφο, πξάγκα πνπ ζεκαίλεη ηαρχηεξε θφξησζε
ζηα πξνγξάκκαηα πεξηήγεζεο.
Σα θχιια CSS ζάο δίλνπλ κεγάιε επειημία θαη δπλαηφηεηα ειέγρνπ κε αθξίβεηα ηεο
εκθάληζεο ηεο ζειίδαο ζαο. Με ηα θχιια CSS, κπνξείηε λα ειέγρεηε πνιιέο ηδηφηεηεο ηνπ θεηκέλνπ,
φπσο ζπγθεθξηκέλεο γξακκαηνζεηξέο θαη κεγέζε ραξαθηήξσλ, έληνλνπο, πιάγηνπο ή
ππνγξακκηζκέλνπο ραξαθηήξεο, ζθηέο θεηκέλνπ, ρξψκα θεηκέλνπ θαη θφληνπ, ρξψκα θαη ππνγξάκκηζε
ησλ ζπλδέζεσλ, θαη πνιιέο άιιεο. Υξεζηκνπνηψληαο CSS γηα ηνλ έιεγρν ησλ γξακκαηνζεηξψλ ζαο,
κπνξείηε επίζεο λα δηαζθαιίζεηε κεγαιχηεξε ζπλέπεηα ζηνλ ρεηξηζκφ ηεο δηακφξθσζεο θαη
εκθάληζεο ηεο ζειίδαο ζαο ζε δηαθνξεηηθά πξνγξάκκαηα πεξηήγεζεο.
Δθηφο απφ ηε κνξθνπνίεζε ηνπ θεηκέλνπ, κπνξνχκε λα ρξεζηκνπνηήζεηε θχιια CSS γηα λα
ειέγμνπκε ηε κνξθνπνίεζε θαη ηελ ηνπνζέηεζε ζηνηρείσλ κηαο ηζηνζειίδαο ζε επίπεδν ηκήκαηνο.
΢ηνηρείν επηπέδνπ ηκήκαηνο είλαη έλα απηφλνκν θνκκάηη πεξηερνκέλνπ, πνπ ζπλήζσο δηαρσξίδεηαη κε
κηα λέα γξακκή ζηελ HTML θαη κνξθνπνηείηαη νπηηθά σο έλα ηκήκα. Γηα παξάδεηγκα, ηα tag h1, p
θαη div δεκηνπξγνχλ ζηνηρεία επηπέδνπ ηκήκαηνο ζε κηα ζειίδα. Μπνξνχκε λα νξίζεηε πεξηζψξηα θαη

Σελίδα | 41
πεξηγξάκκαηα γηα ηα ζηνηρεία επηπέδνπ ηκήκαηνο, λα ηα ηνπνζεηήζνπκε ζε κηα ζπγθεθξηκέλε ζέζε,
λα ηνπο πξνζζέζνπκε ρξψκα θφληνπ, λα ξπζκίζεηε ην θείκελν σο θηλνχκελν γχξσ απφ απηά, θ.ν.θ. Ο
ρεηξηζκφο ησλ ζηνηρείσλ επηπέδνπ ηκήκαηνο είλαη, νπζηαζηηθά, ν ηξφπνο κε ηνλ νπνίν δηακνξθψλνπκε
ζειίδεο κε ηε ρξήζε CSS.
Σα ζηπι πνπ έρνπλ δεκηνπξγεζεί κε CSS κπνξνχλ λα απνζεθεπηνχλ απεπζείαο κέζα ζην
έγγξαθν ή, γηα πεξηζζφηεξε επειημία, ζε έλα εμσηεξηθφ θχιιν ζηπι. Αλ επηζπλάςνπκε έλα εμσηεξηθφ
θχιιν ζηπι ζε κεξηθέο ζειίδεο, ηφηε νη αιιαγέο πνπ θάλεηε ζην θχιιν ζηπι ζα απεηθνλίδνληαη
απηφκαηα ζε φιεο απηέο ηηο ζειίδεο.

Πιαίζην CSS

Δηθόλα 4.3: Πιαίζην CSS

Α. Δμσηεξηθφ Φχιιν CSS.


Β. Δκθάληζε κφλν ξπζκίζεσλ ηδηνηήησλ.
Γ. Πξνβνιή Λίζηαο.
Γ. Πξνβνιή θαηεγνξίαο
Δ. Παξάζπξν Καλφλσλ.
Ε. Δπηζχλαςε θχιινπ ζηπι.
Ζ. Νένο θαλφλαο CSS.
Θ. Δπεμεξγαζία θχιινπ ζηπι.
Η. Γηαγξαθή Δλζσκαησκέλνπ θχιινπ ζηπι.

Σελίδα | 42
Σύπνη θαλόλσλ CSS
Δηηθέηα (Tag) : Ο ζθνπφο κηαο εηηθέηαο είλαη ε αιιαγή ηεο εκθάληζεο κηαο ζπγθεθξηκέλεο
εηηθέηαο HTML. Σα ζηπι πνπ βαζίδνληαη ζε εηηθέηεο ζα κεηαβάινπλ ηελ εκθάληζε ηεο
εηηθέηαο θαη ησλ πεξηερφκελψλ ηεο.
Κιάζε (Class): Μηα πξνζαξκνζκέλε θιάζε κπνξεί λα απνθηήζεη έλα κνλαδηθφ φλνκα θαη λα
κε ζρεηίδεηαη κε κηα ζπγθεθξηκέλε εηηθέηα HTML. Μπνξνχκε λα ρξεζηκνπνηήζνπκε ηελ ίδηα
θιάζε γηα έλαλ πίλαθα, κηα παξάγξαθν, ή πεδίν θφξκαο φζεο θνξέο επηζπκνχκε. Ζ εθαξκνγή
κηαο θιάζεο ζε κηα εηηθέηα γίλεηαη κε ηνλ εμήο ηξφπν :
<body class="bookstore">….</body>
Όηαλ κνξθνπνηνχκε θείκελν απφ ην παξάζπξν Properties, ην Dreamweaver νλνκάδεη θαη
δεκηνπξγεί απηφκαηα ζηπι θιάζεο, ηα νπνία κπνξνχκε λα μαλαρξεζηκνπνηήζνπκε ζε άιια
ζηνηρεία. Σα ζηπι θιάζεηο κπνξνχκε εχθνια λα ηα αλαγλσξίζνπκε, γηαηί ην φλνκα ηνπο
αθνινπζεί πάληα κηα ηειεία. πρ. .bookstore

Δηθόλα 4.4: Παξάζπξν Properties

Πξνεγκέλε (Advanced) – Σαπηφηεηεο & Φεπδνθιάζζεηο: Ζ ηαπηφηεηα (ID) είλαη έλαο εηδηθφο
ηχπνο θαλφλα πνπ είλαη κνλαδηθφο γηα έλα ζπγθεθξηκέλν ζηνηρείν ηεο ζειίδαο. Οη ηαπηφηεηεο
πεξηέρνπλ πιεξνθνξίεο νη νπνίεο είλαη κνλαδηθέο γηα έλα πιαίζην, θαη έηζη δεκηνπξγείηαη κηα
κνλαδηθή ηαπηφηεηα απνθιεηζηηθά γηα ην ζπγθεθξηκέλν ζηνηρείν. Σέινο, ην φλνκα ηεο
ηαπηφηεηαο αθνινπζεί πάληα ην ζχκβνιν ηεο δίεζεο (#). ΢ε θάζε θαλφλα ηαπηφηεηαο
αληηζηνηρεί κηα εηηθέηα <div> κέζσ ηνπ ραξαθηεξηζηηθνχ ηαπηφηεηαο.
πρ. <div id="block">…..</div>

Δηθόλα 4.5: Γεκηνπξγία Καλόλα CSS

CSS Rule definition

Όηαλ πξνζζέηνπκε ζηπι απφ ην πιαίζην Styles εκθαλίδεηαη ην πιαίζην δηαιφγνπ CSS Rule
definition, ην νπνίν πεξηέρεη κία ζεηξά απφ θαηεγνξηνπνηεκέλα πεδία θεηκέλνπ θαη κελνχ πνπ
κπνξνχκε λα ρξεζηκνπνηήζνπκε γηα λα επηιέμνπκε ηδηφηεηεο γηα ην λέν καο θαλφλα.

Σελίδα | 43
΢ηελ θαξηέια Type πξνζζέηνπκε
ηδηφηεηεο γηα ηελ κνξθνπνίεζε ηνπ
θεηκέλνπ.

΢ηελ θαξηέια Background επηιέγνπκε


ην θφλην πνπ ζα έρεη ην πιαίζηφ καο
θαζνξίδνληαο επίζεο, αλ ζα
επαλαιακβάλεηαη ή φρη.

΢ηελ θαξηέια Block θαζνξίδνπκε ηελ


εκθάληζε ησλ παξαγξάθσλ,
ζπκπεξηιακβαλνκέλεο θαη ηεο
επζπγξάκκηζεο θαη ζηνίρηζεο ηνπ
θεηκέλνπ.

Δηθόλα 4.6: Καξηέια Type

Ζ θαξηέια Box είλαη πνιχ


ζεκαληηθή, γηαηί θαζνξίδεη ηνλ ρψξν
πνπ ζα θαηαιακβάλεη ην πιαίζην
κέζα ζηελ ζειίδα.

Width – Καζνξίδεη ην πιάηνο ηνπ


πιαηζίνπ.
Height - Καζνξίδεη ην χςνο ηνπ
πιαηζίνπ.
Padding – Δζσηεξηθφ θελφ, δειαδή
ε απφζηαζε ησλ πεξηερνκέλσλ απφ
ηελ πιεπξά ηνπ πιαηζίνπ.
Margin – Πεξηζψξην, δειαδή ε
δηαθαλήο πεξηνρή πνπ πεξηβάιεη ην
πιαίζην.

Δηθόλα 4.7: Καξηέια Box

Δμσηεξηθό θύιιν ζηπι


Μηα ζπιινγή θαλφλσλ πνπ απνζεθεχνληαη ζε έλα μερσξηζηφ αξρείν .css νλνκάδεηαη
εμσηεξηθφ θχιιν ζηπι. Με ηα εμσηεξηθά θχιια ζηπι φιεο νη ζειίδεο ηνπ ηζηνρψξνπ κνηξάδνληαη ηνπο
ίδηνπο θαλφλεο ζηπι. Όηαλ αιιάδνπκε έλα εμσηεξηθφ ζηπι, νη ζειίδεο πνπ είλαη ζπλδεδεκέλεο κε απηφ
ελεκεξψλνληαη.
Μέζσ ηεο εληνιήο Move CSS Rules κπνξνχκε λα εμάγνπκε θχιια CSS πνπ έρνπκε
δεκηνπξγήζεη ήδε κέζα ζε κηα ζειίδα θαη λα ηα απνζεθεχζνπκε σο έλα εμσηεξηθφ αξρείν κε
επέθηαζε .css .
Ζ επηζχλαςε ελφο εμσηεξηθνχ θχιινπ ζηπι γίλεηαη κέζσ ηνπ Πιαηζίνπ CSS επηιέγνληαο
Attach Style Sheet (Δπηζχλαςε θχιινπ ζηπι).

Σελίδα | 44
Δηθόλα 4.8: Move CSS Rules Δηθόλα 4.9: Attach Style Sheet

Δηθόλα 4.10: Απνζήθεπζε εμσηεξηθνύ αξρείνπ CSS

Δπηινγείο ςεπδνθιάζεσλ
Έλαο επηινγέαο ςεπδνθιάζεσλ επεξεάδεη έλα κέξνο ή θαηάζηαζε κηαο επηιεγκέλεο εηηθέηαο
ή θιάζεο. Μηα θαηάζηαζε αλαθέξεηαη ζπρλά ζηελ εκθάληζε ελφο ζηνηρείνπ θαζψο απηφ αληηδξά ζε
έλα ζπκβάλ, φπσο είλαη ην πέξαζκα ηνπ θέξζνξα πάλσ απφ απηφ. Έλαο επηινγέαο ςεπδνθιάζεο είλαη
ν a:hover, ν νπνίνο θαζνξίδεη ηελ εκθάληζε ησλ ζπλδέζκσλ φηαλ πεξλά πάλσ απφ απηνχο ν δείθηεο
ηνπ πνληηθηνχ.

Σελίδα | 45
Δηθόλα 4.11: Μνξθνπνίεζε Φεπδνθιάζεσλ

4.2.2 Γεκηνπξγία Γηαηάμεσλ κε Πίλαθεο


Καηά ηε κνξθνπνίεζε πηλάθσλ ζηελ πξνβνιή Design, κπνξείηε λα νξίζεηε ηδηφηεηεο γηα
νιφθιεξν ηνλ πίλαθα ή γηα επηιεγκέλεο γξακκέο, ζηήιεο ή θειηά ηνπ πίλαθα. Όηαλ κηα ηδηφηεηα, π.ρ.
ρξψκα θφληνπ ή ζηνίρηζε, έρεη νξηζηεί ζε κία ηηκή γηα νιφθιεξν ηνλ πίλαθα θαη ζε κία άιιε γηα
θάπνηα ζπγθεθξηκέλα θειηά, ε κνξθνπνίεζε ησλ θειηψλ έρεη πξνηεξαηφηεηα έλαληη ηεο κνξθνπνίεζεο
ησλ γξακκψλ, ε νπνία κε ηε ζεηξά ηεο έρεη πξνηεξαηφηεηα έλαληη ηεο κνξθνπνίεζεο ηνπ πίλαθα.
Ζ ζεηξά πξνηεξαηνηήησλ γηα ηε κνξθνπνίεζε ησλ πηλάθσλ είλαη ε εμήο:
Κειί
Γξακκέο
Πίλαθαο
Αλ, γηα παξάδεηγκα, νξίζεηε ην ρξψκα θφληνπ ελφο ζπγθεθξηκέλνπ θειηνχ ζε κπιε θαη, ζηε
ζπλέρεηα, νξίζεηε ην ρξψκα θφληνπ νιφθιεξνπ ηνπ πίλαθα ζε θίηξηλν, ην κπιε θειί δελ ζα αιιάμεη ζε
θίηξηλν, αθνχ ε κνξθνπνίεζε ηνπ θειηνχ ππεξηζρχεη ηεο κνξθνπνίεζεο ηνπ πίλαθα.
Όηαλ νξίδεηε ηδηφηεηεο ζε κηα ζηήιε, ην Dreamweaver αιιάδεη ηα ραξαθηεξηζηηθά ηνπ tag td
πνπ αληηζηνηρεί ζε θάζε θειί ηεο ζηήιεο.

Rows – Γξακκέο ηνπ πίλαθα.


Columns – ΢ηήιεο ηνπ πίλαθα.
Table width – Πιάηνο
Border thickness – Πάρνο ησλ θειηψλ.

Αλ ην Border thickness = 0 ηφηε ηα θειία


ηνπ πίλαθα δελ εκθαλίδνληαη ζηε ζειίδα
φηαλ ηελ ηξέρνπκε ζηνλ browser.

Δηθόλα 4.12: Γεκηνπξγία Πίλαθα ζην


Dreamweaver

Σελίδα | 46
Δηθόλα 4.13: Δπεμεξγαζία Πηλάθσλ από ην Παξάζπξν Properties

Ζ εηηθέηα <table> αλαθέξεηαη ζην πίλαθα.


Ζ εηηθέηα <tr> αλαθέξεηαη ζε κηα γξακκή ηνπ πίλαθα.
Ζ εηηθέηα <td> αλαθέξεηαη ζε κηα ζηήιε ηνπ πίλαθα.

Μπνξνχκε λα ρσξίζνπκε κηα γξακκή ηνπ πίλαθα ρξεζηκνπνηψληαο ην θνπκπί “Split cells”. Καζψο
θαη λα ελψζνπκε δχν πεδία ρξεζηκνπνηψληαο ην θνπκπί “Merge selected cells”.

4.2.3 ΢ύλδεζκνη
Οη ηζηνζειίδεο αιιεινζπλδένληαη θαη κπνξεί ν ρξήζηεο λα κεηαβεί απφ ηε κία ζηελ άιιε
θάλνληαο «θιηθ», επηιέγνληαο δειαδή ζπλδέζκνπο πνπ ππάξρνπλ ζην θείκελν ή ζηηο θσηνγξαθίεο ηεο
ηζηνζειίδαο.
Ζ δηαδηθαζία δεκηνπξγίαο ζπλδέζκσλ γηα λα κεηαβαίλνπκε απφ ηελ κία ζειίδα ζηελ άιιε
είλαη πνιχ απιή. Σν κφλν πνπ ρξεηάδεηαη λα θάλνπκε είλαη λα επηιέμνπκε ην «αληηθείκελν» πνπ
ζέινπκε λα κεηαηξέςνπκε ζε ζχλδεζκν θαη έπεηηα λα πιεθηξνινγήζνπκε ην φλνκα ηνπ αξρείνπ πνπ
ζέινπκε λα κεηαβνχκε ζην πιαίζην Link.

Δηθόλα 4.14: ΢ύλδεζκνη

4.2.4 Γηαδηθαζία θαηαζθεπήο ηνπ ηζηνρώξνπ

Γεκηνπξγία αξρηθήο εηθόλαο ζην Photoshop CS3.

Σελίδα | 47
Δηθόλα 4.15: Γεκηνπξγία αξρηθήο εηθόλαο ζην Photoshop CS3.

Γεκηνπξγία Animation ζην Flash CS3.

Δηθόλα 4.16: Γεκηνπξγία Animation ζην Flash CS3.

Σελίδα | 48
Γεκηνπξγία κελνύ

Δηθόλα 4.18: Γεκηνπξγία ηνπ κελνύ ησλ ρξεζηώλ.

Όπσο βιέπνπκε θαη απφ ηνλ θψδηθα ην menu πνπ δεκηνπξγήζεθε παξαπέκπεη ζε έμη ζειίδεο.
Σελ Αξρηθή ζηελ νπνία εκθαλίδνληαη νη Νέεο Κπθινθνξίεο (index.php)
΢ηα πξνηεηλφκελα βηβιία (suggestions.php)
΢ηα Best Sellers (best_sellers.php)
΢ηελ θφξκα επηθνηλσλίαο (contact.php)
΢ηελ πεξηνρή ηνπ forum (forum.php)
΢ηελ θφξκα εγγξαθήο (register.php)
΢ηα αξρεία απηά έρεη πξφζβαζε ν θάζε ρξήζηεο πνπ επηζθέπηεηαη ηελ ζειίδα. Αλ φκσο είλαη
εγγεγξακκέλνο, κεηά απφ ηελ είζνδφ ηνπ ηα αξρεία αιιάδνπλ πξνζθέξνληάο ηνπ πεξηζζφηεξεο
δπλαηφηεηεο.
Γηα ηνλ ρξήζηε-κέινο:
Ζ Αξρηθή ζειίδα είλαη ε loggedin.php
Σα Πξνηεηλφκελα βηβιία εκθαλίδνληαη ζηελ ζειίδα suggestions_after.php
Ta Best Sellers ζηελ best_sellers_after.php
Ζ θφξκα επηθνηλσλίαο ζηελ contact_after.php
Ζ πεξηνρή ηνπ forum ζηελ forum_after.php
Ζ θφξκα ηεο εγγξαθήο δελ ππάξρεη.
Οη ζειίδεο απηέο πξνζθέξνπλ πξφζβαζε ζην θαιάζη αγνξψλ, θαη ζηε Wishlist πνπ έρνπλ
δεκηνπξγεζεί γηα ηνπο εγγεγξακκέλνπο ρξήζηεο.

Σελίδα | 49
Δηθόλα 4.19: Γεκηνπξγία ηνπ κελνύ ησλ ρξεζηώλ-κειώλ.

Γηα ηνλ administrator:


Ζ Αξρηθή ζειίδα είλαη ε admin.php
Ζ ζειίδα γηα ηα πξνηεηλφκελα ε suggestions_admin.php
Ta Best Sellers ζηελ best_sellers_admin.php
Ζ πεξηνρή ηνπ forum ζηελ forum_admin.php
Καη ηέινο κηα ζειίδα πνπ εκθαλίδεη ηνλ Πίλαθα Αγνξψλ κε φλνκα pinakas_agorwn.php

Δηθόλα 4.20: Γεκηνπξγία ηνπ κελνύ γηα ηνλ administrator.

Σελίδα | 50
Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε
.bookstore #menu{ .bookstore #menu a {
margin-right: 30px; color: #FFFFFF;
margin-left: 30px; font-family: "Monotype Corsiva";
font-family: "Monotype Corsiva"; font-size: 20px;
font-size: 20px; text-decoration: none;
color: #FFFFFF; }
} .bookstore #menu a:hover {
color: #FFFFFF;
font-family: "Monotype Corsiva";
font-size: 20px;
text-decoration: underline;
}

Πίλαθαο 4.1: Φύιια CSS γηα ηελ κνξθνπνίεζε ηνπ κελνύ

Γεκηνπξγία θόξκαο login.


΢ηελ θφξκα εηζφδνπ δεκηνπξγνχκε δχν πεδία, έλα γηα ην email ηνπ ρξήζηε θαη έλα γηα ηνλ
θσδηθφ ηνπ. Σα δχν απηά πεδία πξέπεη λα ζπκπιεξψζεη γηα λα ζπλδεζεί ζηελ ηζηνζειίδα. Σν
ραξαθηεξηζηηθφ action καο δείρλεη φηη ε θφξκα είλαη παξακέλνπζα αθνχ ηα ζηνηρεία ζηέιλνληαη ζηνλ
εαπηφ ηεο. Μέζα απφ ηνλ θψδηθα PHP φκσο πνπ εθηειείηαη φηαλ ν ρξήζηεο παηήζεη ην θνπκπί
“Δίζνδνο κέινπο” αλάινγα κε ηα ζηνηρεία πνπ δφζεθαλ ν ρξήζηεο αλαδξνκνινγείηαη ζηελ αληίζηνηρε
ζειίδα.

Δηθόλα 4.21: Φόξκα Δηζόδνπ ρξήζηε ζηελ ηνπνζεζία.

Σελίδα | 51
Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε
.bookstore #table_flash_login { .bookstore #form_login {
margin-right: 30px; margin-right: 5px;
margin-left: 30px; margin-left: 5px;
padding-top: 20px; color: #CC9C0D;
color: #CC9C0D; font-size: 16px;
font-size: 18px; text-align: center;
font-family: "Monotype Corsiva"; }
font-weight: bold;
background-image: url(image_login.jpg);
background-repeat: no-repeat; }

Πίλαθαο 4.2: Φύιια CSS γηα ηελ κνξθνπνίεζε ηεο θόξκαο εηζόδνπ.

Μνξθνπνίεζε κελπκάησλ αξρηθήο εηθόλαο

Δηθόλα 4.22: Δκθάληζε ηζηνζειίδαο

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #title_1 { .bookstore #message {
margin-right: 30px; font-family: "Monotype Corsiva";
margin-left: 30px; color: #000000;
margin-top: 0px; font-weight: bold;
padding-top: 155px; height: 100px;
background-image: url(messages_1.jpg); }
background-repeat: no-repeat;
padding-bottom: 20px;
font-size: 18px;
font-weight: bold;}

Πίλαθαο 4.3: Φύιια CSS γηα ηελ κνξθνπνίεζε ησλ κελπκάησλ.

Σελίδα | 52
Γεκηνπξγία Φόξκαο Αλαδήηεζεο

Δηθόλα 4.23: Φόξκα απιήο αλαδήηεζεο

΢ηελ απιή θφξκα αλαδήηεζεο ν ρξήζηεο επηιέγεη αλάκεζα ζηνλ ηίηιν, ηνλ ζπγγξαθέα θαη ηνλ
εθδφηε γηα ηελ εχξεζε ηνπ βηβιίνπ πνπ επηζπκεί. Όηαλ ν ρξήζηεο παηήζεη ην θνπκπί “OK”
θαηεπζχλεηαη ζηελ ζειίδα search_result.php (φπσο θαίλεηαη απφ ηελ ηηκή ηεο action) ζηελ νπνία
εκθαλίδνληαη ηα απνηειέζκαηα ηεο αλαδήηεζεο. Δπίζεο παηψληαο ζην link “΢χλζεηε Αλαδήηεζε”
κεηαθεξφκαζηε ζηελ ζειίδα search.php ζηελ νπνία εκθαλίδεηαη ε θφξκα ηελ ζχλζεηεο αλαδήηεζεο.

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #search { .bookstore #search a{
margin-right: 90px; font-family: "Monotype Corsiva";
margin-left: 90px; color: #FFFFFF;
padding-top: 1px; font-size: 18px;
background-color: #CC9C0D; }
text-align: center;
font-family: "Monotype Corsiva";
font-size: 18px;
font-weight: bold; }

Πίλαθαο 4.4: Φύιια CSS γηα ηελ κνξθνπνίεζε ηεο θόξκαο απιήο αλαδήηεζεο

Γεκηνπξγία Φόξκαο ΢ύλζεηεο Αλαδήηεζεο

΢ηελ ζχλζεηε αλαδήηεζε ν ρξήζηεο κπνξεί λα ζπκπιεξψζεη πεξηζζφηεξα απφ έλα ζηνηρεία
γηα εχξεζε ηνπ βηβιίνπ πνπ επηζπκεί. Γηα ηνλ απιφ ρξήζηε ηα απνηειέζκαηα εκθαλίδνληαη ζηελ
ζειίδα search_result2.php, γηα ηνλ ρξήζηε-κέινο ζηελ ζειίδα search_result2_after.php θαη γηα ηνλ
administrator ζηελ ζειίδα search_result2_admin.php

Σελίδα | 53
Δηθόλα 4.24: Φόξκα ζύλζεηεο αλαδήηεζεο

Σελίδα | 54
Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε
.bookstore #search_erea { .bookstore #search_erea form{
margin-right: 30px; text-align: left;
margin-left: 30px; width: 570px;
color: #000000; font-weight: bold;
font-family: "Times New Roman", margin-right: 30px;
Times, serif; margin-left: 315px;
background-color: #000000; }
background-repeat: repeat-y;
background-image:
url(background%20img.jpg);
font-size: 16px;
padding-top: 50px; }

Πίλαθαο 4.5: Φύιια CSS γηα ηελ κνξθνπνίεζε ηελ θόξκα ζύλζεηεο αλαδήηεζεο

Γεκηνπξγία πίλαθα logout γηα ηνλ ρξήζηε-κέινο

Καηά ηελ είζνδν ηνπ ρξήζηε-κέινπο


ζηε ηζηνζειίδα (εκθάληζε ζειίδαο
loggedin.php) εκθαλίδεηαη ν πίλαθαο πνπ
πεξηέρεη ηελ θφξκα εμφδνπ. Ζ θφξκα απηή
απνηειείηαη απφ έλα θνπκπί “Έμνδνο
κέινπο” πνπ φηαλ ν ρξήζηεο ην παηήζεη
κέζσ ηνπ θψδηθα PHP θαηεπζχλεηαη ζηελ
ζειίδα logout.php. Ζ ζειίδα logout.php είλαη
ίδηα κε ηελ index.php κφλν πνπ πεξηέρεη θαη
έλα κήλπκα απνραηξεηηζκνχ.
Δπίζεο, ν πίλαθαο πνπ θαίλεηαη θαη
ζηελ Δηθόλα 4.25 εθηφο απφ ηελ θφξκα
εμφδνπ πεξηέρεη θαη ηξία link. Έλα πξνο ηελ
ζειίδα αιιαγήο ζηνηρείσλ ηνπ ρξήζηε
(allagh_stoixeiwn.php), έλα πξνο ην θαιάζη
αγνξψλ ηνπ ρξήζηε (kalathi_agorwn.php) θαη
έλα πξνο ηελ ιίζηα ησλ αγαπεκέλσλ βηβιίσλ
ηνπ ρξήζηε (wishlist.php).
Δηθόλα 4.25: ΢ύλδεζκνη ρξήζηε κέινπο

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #table_flash_logout { .bookstore #table_flash_logout a {
margin-right: 30px; color: #c05711;
margin-left: 30px; font-size: 19px;
padding-top: 20px; }
font-weight: bold; .bookstore #table_flash_logout a:hover {
background-image: color: #c05711;
url(image_logouut.jpg); font-size: 19px;
background-repeat: no-repeat; } text-decoration: underline; }

Πίλαθαο 4.6: Φύιια CSS γηα ηελ κνξθνπνίεζε ηνπ πίλαθα εμόδνπ

Σελίδα | 55
Δηθόλα 4.26: Κώδηθαο HTML ηνπ πίλαθα εμόδνπ.

Γεκηνπξγία πίλαθα logout γηα ηνλ administrator

Καηά ηελ είζνδν ηνπ administrator


εκθαλίδεηαη ν πίλαθαο ηεο Δηθόλαο 4.27 πνπ
πεξηέρεη ηελ ίδηα θφξκα εμφδνπ κε απηή ηνπ
ρξήζηε κέινπο. Δπίζεο, ν πίλαθαο απηφο πεξηέρεη
ηξία link. Έλα πξνο ηελ αιιαγή ησλ ζηνηρείσλ ηνπ
δηαρεηξηζηή (allagh_stoixeiwn_admin.php), έλα
πξνο ηελ θφξκα πξνζζήθεο βηβιίσλ
(add_book.php) θαη έλα πξνο ηελ ζειίδα φπνπ
εκθαλίδνληαη νη εγγεγξακκέλνη ρξήζηεο ηεο
ζειίδαο (view_users.php). Σα θχιια CSS είλαη
ίδηα κε εθείλα πνπ ρξεζηκνπνηήζεθαλ γηα ηελ
εκθάληζε ηνπ πίλαθα logout ηνπ ρξήζηε-κέινπο.

Δηθόλα 4.27: ΢ύλδεζκνη ηνπ administrator

Σελίδα | 56
Δηθόλα 4.28: Κώδηθαο HTML ηνπ πίλαθα εμόδνπ

Γεκηνπξγία Πίλαθα Καηεγνξηώλ

Σα link πνπ αληηζηνηρνχλ ζηελ θάζε θαηεγνξία αιιάδνπλ αλάινγα κε ηελ ηδηφηεηα ηνπ
ρξήζηε. Αλ είλαη απιφο ρξήζηεο ηα αξρεία πνπ αληηπξνζσπεχνπλ ηελ θάζε θαηεγνξία είλαη:
Δθπαίδεπζε – education.php
Λνγνηερλία – logotexnia.php
Φπρνινγία – psychology.php
Θξεζθεία – riligion.php
Φηινζνθία – philosophy.php
Ηζηνξία, Γεσγξαθία – history.php
Μαγεηξηθή – cooking.php

Αλ έρεη ζπλδεζεί σο administrator ηα αξρεία πνπ αληηπξνζσπεχνπλ ηελ θάζε θαηεγνξία είλαη:
Δθπαίδεπζε – education_admin.php
Λνγνηερλία – logotexnia_admin.php
Φπρνινγία – psychology_admin.php
Θξεζθεία – religion_admin.php
Φηινζνθία – philosophy_admin.php
Ηζηνξία, Γεσγξαθία – history_admin.php
Μαγεηξηθή – cooking_admin.php

Σελίδα | 57
Αλ έρεη ζπλδεζεί σο ρξήζηεο-κέινο εκθαλίδνληαη ηα αθφινπζα αξρεία:
Δθπαίδεπζε – education_after.php
Λνγνηερλία – logotexnia_after.php
Φπρνινγία – psychology_after.php
Θξεζθεία – religion_after.php
Φηινζνθία – philosophy_after.php
Ηζηνξία, Γεσγξαθία – history_after.php
Μαγεηξηθή – cooking_after.php

Δηθόλα 4.29: Πίλαθαο Καηεγνξηώλ

Σελίδα | 58
Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε
.bookstore #categories { .bookstore #categories a {
float: left; font-family: "Times New Roman", Times,
width: 270px; serif;
margin-left: 10px; font-size: 16px;
color: #FFFFFF; color: #F5F1CE;
font-family: "Times New Roman", }
Times, serif; .bookstore #categories a:hover {
font-size: 16px; font-family: "Times New Roman", Times,
font-weight: normal; serif;
} font-size: 16px;
text-decoration: none;
color: #C10000; }
Πίλαθαο 4.7: Φύιια CSS γηα ηελ κνξθνπνίεζε ηνπ πίλαθα θαηεγνξηώλ

Γεκηνπξγία Φόξκαο Δπηθνηλσλίαο

Δηθόλα 4.30: Φόξκα Δπηθνηλσλίαο

Σελίδα | 59
Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε
.bookstore #contact { .bookstore #contact form{
margin-right: 30px; text-align: right;
margin-left: 30px; width: 570px;
background-color: #000000; font-weight: bold;
background-repeat: repeat-y; margin-right: 30px;
background-image: margin-left: 280px;
url(background%20img.jpg); font-size: 16px;
padding-top: 50px; font-family: "Times New Roman",
color: #000000; Times, serif;
} color: #000000;
padding-top: 20px;
padding-bottom: 130px;
}

Πίλαθαο 4.8: Φύιια CSS γηα ηελ κνξθνπνίεζε ηεο θόξκαο επηθνηλσλίαο

Πίλαθα Σέινπο
Ζ θάζε ηζηνζειίδα πξέπεη λα έρεη έλα ηέινο. Οη πεξηζζφηεξεο ηζηνζειίδεο ηνπ Γηαδηθηχνπ ζην
ηέινο εκθαλίδνπλ δηάθνξνπο ρνξεγνχο. ΢ην δηθφ καο ηζηνρψξν ζην ηέινο θάζε ζειίδαο ππάξρεη έλαο
πίλαθαο πνπ έρεη ίδηεο ζηήιεο κε απηέο ηνπ κελνχ.

Δκθάληζε πίλαθα απινχ ρξήζηε:

Δηθόλα 4.31: Δκθάληζε πίλαθα απινύ ρξήζηε

Σελίδα | 60
Δκθάληζε πίλαθα ρξήζηε-κέινπο:

Δηθόλα 4.32: Δκθάληζε πίλαθα ρξήζηε-κέινπο

Δκθάληζε πίλαθα administrator:

Δηθόλα 4.33: Δκθάληζε πίλαθα administrator

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #end { .bookstore #end a {
padding-left: 275px; font-family: "Times New Roman", Times,
color: #000000; serif;
background-image: color: #000000;
url(background%20img.jpg); font-size: 16px;
padding-bottom: 20px; }
font-weight: bold; .bookstore #end a:hover {
margin-right: 30px; font-family: "Times New Roman", Times,
margin-left: 30px; serif;
padding-top: 30px; color: #C10000;
background-repeat: repeat-y; font-size: 16px;
} text-decoration: none;
}

Πίλαθαο 4.9: Φύιια CSS γηα ηελ κνξθνπνίεζε ηνπ πίλαθα

Σελίδα | 61
4.3 Γεκηνπξγία Flash Animation
Σν Flash κπνξεί λα ππνινγίδεη ηε δηαθνξά αλάκεζα ζε δχν δηαθνξεηηθέο θαηαζηάζεηο ελφο
αληηθεηκέλνπ θαη λα δεκηνπξγεί απηφκαηα ηα ελδηάκεζα ζηάδηα. Αλ έρνπκε, δειαδή, έλα αληηθείκελν
ζην αξηζηεξφ άθξν ελφο θακβά θαη ην κεηαθηλήζνπκε ζην δεμί άθξν ηνπ, κπνξνχκε λα πνχκε ζην
Flash “βξεο ηη άιιαμε θαη θηηάμε κνπ κηα θίλεζε”. Σν ίδην κπνξεί λα γίλεη κε ην κέγεζνο ελφο
αληηθεηκέλνπ, ην ρξψκα ηνπ θ.ιπ. Έηζη, ε δεκηνπξγία θίλεζεο κέζα απφ ην Flash είλαη, ηειηθά, αξθεηά
εχθνιε.

Βήκαηα Τινπνίεζεο Flash Animation Script

Δηζαγσγή εηθφλσλ ζηε Βηβιηνζήθε (Library)

Δηθόλα 4.34: Δηζαγσγή εηθόλσλ ζην Flash CS3

Αθφηνπ εηζάγνπκε ηελ εηθφλα πνπ επηζπκνχκε ζηε Βηβιηνζήθε έπεηηα ηελ ηνπνζεηνχκε ζηε
΢θελή καο. Απηνκάησο θαηαιακβάλεη ην πξψην Layer ηνπ Timeline κεηαβάιινληαο ην πξψην
frame ζε keyframe.

Γηα λα θαηαλνήζνπκε ηνλ ηξφπν ιεηηνπξγίαο ηνπ Flash, ζα πξέπεη λα αληηιεθζνχκε φηη
δεκηνπξγνχκε πάλσ ζην ρξφλν. Ο ρξφλνο θπιάεη πάλσ ζην Timeline θαη κεηξηέηαη ζε frames. Σν θάζε
Layer πεξηέρεη ην αληηθείκελν πνπ ζέινπκε λα εκθαληζηεί. Γηα λα κπνξεί λα είλαη νξαηφ έλα
αληηθείκελν ζα πξέπεη λα βξίζθεηαη κέζα ζηα πιαίζηα ηεο ζθελήο.
Αλ ην αληηθείκελφ καο είλαη κηα εηθφλα γηα λα ηεο δψζνπκε θίλεζε ζα πξέπεη λα θαζνξίζνπκε
ζην ρξφλν ην ζεκείν εθθίλεζεο θαη ην ζεκείν αθηλεηνπνίεζεο. Όπσο πξναλαθέξακε ν ρξφλνο
κεηξηέηαη ζε frames. Έηζη ην frame απφ ην νπνίν ζα μεθηλάεη ε θίλεζε ην κεηαβάισ ζε keyframe,
θαζψο θαη ην frame ζην νπνίν ζα ζηακαηάεη.

Σελίδα | 62
Δηθόλα 4.35: Δηζαγσγή keyframe
Αθνχ εηζάγακε ηα δχν keyframes, ηζεθάξνπκε ηελ απφζηαζε απφ ην έλα ζην άιιν θαη
επηιέγνπκε “Create Motion Teen”. Με απηφ ηνλ ηξφπν πξνζζέηνπκε θίλεζε ζε έλα
αληηθείκελν ηεο ζθελήο καο. Αλ εθηειέζακε ζσζηά ηελ δηεξγαζία απηή ηφηε έλα βέινο καο
δείρλεη ηελ αξρή θαη ην ηέινο ηεο κεηαθνξάο.

Δηθόλα 4.36: Γεκηνπξγία θίλεζεο

Σελίδα | 63
Γηα λα εκθαλίδνπκε θαη λα εμαθαλίδνπκε ζηαδηαθά κία εηθφλα πξέπεη πξψηα λα ηελ
κεηαηξέςνπκε ζε ζχκβνιν. Απηφ γίλεηαη κε ηελ επηινγή “Convert to Symbol”.

Δηθόλα 4.37: Μεηαηξνπή εηθόλαο ζε ζύκβνιν

Δηθόλα 4.38: Δπηινγέο ζπκβόισλ

Όπσο θαίλεηαη θαη απφ ηελ Δηθφλα, ην παξάζπξν “ Convert to Symbol” καο δίλεη ηξείο
επηινγέο γηα ηελ κεηαηξνπή ελφο αληηθεηκέλνπ:
Movie clip
Button
Graphic
Απηφο είλαη θαη ν ηξφπνο πνπ δεκηνπξγνχκε έλα θνπκπί. ΢ηελ πεξίπησζε ηεο εηθφλαο
επηιέγνπκε Graphic.

Μεηαηξέπνληαο κηα εηθφλα ζε ζχκβνιν, ζηελ θαξηέια ησλ Properties εκθαλίδεηαη ε επηινγή
Brightness. Αιιάδνληαο ηελ ηηκή ηνπ Brightness ε εηθφλα ράλεηαη.

Σελίδα | 64
Ζ δεκηνπξγία ελφο button γίλεηαη κε ηελ επηινγή
“Convert to Symbol”, φπσο είδακε πξηλ. Κάζε θνπκπί πνπ
δεκηνπξγείηαη ζην Flash έρεη 4 frame:
Up – Αξρηθά ραξαθηεξηζηηθά
Over – Καζνξηζκφο ηεο εκθάληζεο ελφο θνπκπηνχ
φηαλ πεξάζεη απφ πάλσ ηνπ ν θέξζνξαο.
Down – Καζνξηζκφο ηεο εκθάληζεο φηαλ ζα θχγεη
ν θέξζνξαο πάλσ απφ έλα θνπκπί.
Hit – Σα ραξαθηεξηζηηθά πνπ ζα πάξεη έλα θνπκπί
φηαλ παηεζεί.

Δηθόλα 4.39: Brightness

Δηθόλα 4.40: buttons in Flash

Σελίδα | 65
4.4 Γεκηνπξγία Βάζεο Γεδνκέλσλ – Bookstore

4.4.1 Ολνκαζία ΢ηνηρείσλ


Καηά ηελ δεκηνπξγία κηαο βάζεο δεδνκέλσλ, ζα πξέπεη λα πξνζέμνπκε νη πίλαθέο καο λα κελ
έρνπλ ην ίδην φλνκα, φπσο επίζεο θαη νη ζηήιεο ελφο πίλαθα. Μπνξνχκε φκσο λα δψζνπκε ην ίδην
φλνκα ζε ζηήιεο δηαθνξεηηθψλ πηλάθσλ.
Ζ βάζε δεδνκέλσλ πνπ δεκηνπξγήζεθε γηα ηηο αλάγθεο ηεο ηζηνζειίδαο, κε φλνκα
“Bookstore”, πεξηέρεη δέθα πίλαθεο.
authors => ΢πγγξαθείο
books => Βηβιία
categories => Καηεγνξίεο βηβιίσλ
editors => Δθδφηεο
kalathi => Καιάζη αγνξψλ
messages => Μελχκαηα Forum
orders => Υξήζηεο πνπ κεηέβεθαλ ζε αγνξά βηβιίσλ.
order_contents => Παξαγγειίεο ρξεζηψλ
users => ΢ηνηρεία ρξεζηψλ
wishlist => Λίζηα Αγαπεκέλσλ βηβιίσλ

4.4.2 Δπηινγή ηύπνπ ζηειώλ


Καηά ηελ δεκηνπξγία ελφο πίλαθα ε MySQL απαηηεί ηελ δήισζε ησλ πιεξνθνξηψλ πνπ ζα
πεξηέρεη θάζε ζηήιε. Τπάξρνπλ ηξείο θχξηνη ηχπνη δεδνκέλσλ:
Κείκελν (δειαδή, ζπκβνινζεηξά)
Αξηζκνί
Ζκεξνκελίεο θαη ψξεο
Ζ ζσζηή επηινγή γηα ηηο ζηήιεο φρη κφλν θαζνξίδεη ηη πιεξνθνξίεο ζα απνζεθεχνληαη ζε
απηέο θαη πσο, αιιά θαη επεξεάδεη ηε ζπλνιηθή απφδνζε ηεο βάζεο δεδνκέλσλ. Πνιινί απφ ηνπο
ηχπνπο δέρνληαη κία πξναηξεηηθή παξάκεηξν (κήθνο) πνπ πεξηνξίδεη ην κέγεζφο ηνπο. Γηα ηελ
θαιχηεξε απφδνζε πξέπεη λα βάδνπκε πεξηνξηζκνχο ζην πιήζνο ησλ δεδνκέλσλ πνπ κπνξνχλ λα
απνζεθεχνληαη ζε θάζε ζηήιε. Σν κήθνο πνπ θαζνξίδεηαη πξέπεη λα αληηζηνηρεί ζηε κέγηζηε πηζαλή
αξηζκεηηθή ηηκή ή ζηε κεγαιχηεξε πηζαλή ζπκβνινζεηξά πνπ πξφθεηηαη λα απνζεθεπηεί ζηε ζηήιε.

Σύπνη δεδνκέλσλ ηεο MySQL


ΣΤΠΟ΢ ΠΔΡΙΓΡΑΦΗ
CHAR[κήθνο] Πεδίν ζηαζεξνχ κήθνπο
VARCHAR[κήθνο] Πεδίν κεηαβιεηνχ κήθνπο
INT[κήθνο] Αθέξαηνο
MIDIUMINT [κήθνο] Αθέξαηνο κεζαίνπ κεγέζνπο
TINYINT[κήθνο] Αθέξαηνο κηθξνχ κεγέζνπο
DEMICAL[κήθνο, Αξηζκφο DOUBLE απνζεθεπκέλνο σο ζπκβνινζεηξά, ζηαζεξήο
δεθαδηθά ςεθία] ππνδηαζηνιήο
DATE Ζκεξνκελία ζηε κνξθή ΔΔΔΔ-ΜΜ-ΖΖ
DATETIME Ζκεξνκελία ζηε κνξθή ΔΔΔΔ-ΜΜ-ΖΖ ΧΧ:ΛΛ:ΓΓ
TIMESTAMP Ζκεξνκελία ζηε κνξθή ΔΔΔΔΜΜΖΖΧΧΛΛΓΓ

Πίλαθαο 4.10: Σύπνη δεδνκέλσλ ηεο MySQL

Σελίδα | 66
Σα δεδνκέλα ηχπνπ CHAR απνζεθεχνληαη σο ζπκβνινζεηξέο κε ην πιήξεο κήθνο ηνπο (αλ
ππάξρνπλ άδεηεο ζέζεηο, απηέο ζπκπιεξψλνληαη κε θελά δηαζηήκαηα θαη θαηά ηελ αλάθηεζε ηεο ηηκήο
ηνπο απφ ηε βάζε δεδνκέλσλ, ηα ηπρψλ θελά αθαηξνχληαη). Αληίζεηα ηα δεδνκέλα ηχπνπ VARCHAR
θαηαιακβάλνπλ ρψξν ίζν κε ην κήθνο ηεο ίδηαο ηεο ζπκβνινζεηξάο. Καηά απηφλ ηνλ ηξφπν αλ έλα
πεδίν ζπκβνινζεηξάο ζα έρεη ζηαζεξφ κήθνο ρξεζηκνπνηνχκε ηνλ ηχπν CHAR, αιιηψο
ρξεζηκνπνηνχκε ηνλ ηχπν VARCHAR.
Δπίζεο, ν ηχπνο πεδίνπ TIMESTAMP ελεκεξψλεηαη απηφκαηα κε ηελ ηξέρνπζα εκεξνκελία
θαη ψξα φηαλ εθηειείηαη ε εληνιή INSERT ή UPDATE.

Άιιεο ηδηόηεηεο ζηειώλ


Κάζε ζηήιε αλεμάξηεηα απφ ηνλ ηχπν ηεο, κπνξεί λα νξηζηεί σο NOT NULL. Ζ ηηκή NULL
ζηηο βάζεηο δεδνκέλσλ θαη ζηνλ πξνγξακκαηηζκφ ζεκαίλεη φηη ην πεδίν δελ έρεη ηηκή. ΢ε κηα ζσζηά
ζρεδηαζκέλε βάζε δεδνκέλσλ, θάζε ζηήιε θάζε γξακκήο ζε θάζε πίλαθα πξέπεη έρεη ηηκή. Γηα λα
ππνρξεψζνπκε έλα πεδίν λα έρεη ηηκή, πξνζζέηνπκε ηελ πεξηγξαθή NOT NULL ζηνλ ηχπν ηεο ζηήιεο
ηνπ.
Όηαλ δεκηνπξγνχκε έλαλ πίλαθα κπνξνχκε λα νξίζνπκε κηα πξνεπηιεγκέλε ηηκή γηα
νπνηαδήπνηε ζηήιε, αλεμάξηεηα απφ ηνλ ηχπν ηεο. Πξνθαζνξίδνληαο κηα πξνεπηιεγκέλε ηηκή δελ ζα
ρξεηάδεηαη λα ηελ πιεθηξνινγνχκε θάζε θνξά πνπ ζα πξνζζέηνπκε κηα θαηλνχξηα εγγξαθή.
Οη αξηζκεηηθνί ηχπνη κπνξνχλ λα δεισζνχλ σο INSIGNED , θαη έηζη πεξηνξίδνληαη ηα
δεδνκέλα κφλν ζε ζεηηθνχο αξηζκνχο θαη 0. Απηφ δηπιαζηάδεη ζηελ νπζία ην εχξνο ηνλ ζεηηθψλ
αξηζκψλ πνπ κπνξνχλ λα απνζεθεπζνχλ.
Πξνζζέηνληαο ηελ πεξηγξαθή AUTO_INCREMENT ζε κηα ζηήιε ε MySQL ζα ρξεζηκνπνηεί
απηφκαηα ζην πεδίν ηνλ επφκελν κεγαιχηεξν αξηζκφ γηα θάζε επφκελε εγγξαθή πνπ ζα πξνζηίζεληαη.

Δπξεηήξηα
Σα επξεηήξηα είλαη έλα εηδηθφ ζχζηεκα πνπ ρξεζηκνπνηνχλ νη βάζεηο δεδνκέλσλ γηα ηε
βειηίσζε ηεο απφδνζεο ησλ εξσηεκάησλ επηινγήο (SELECT). Σα επξεηήξηα ηνπνζεηνχληαη ζε κία ή
πεξηζζφηεξεο ζηήιεο νπνηαδήπνηε ηχπνπ, ιέγνληαο ζηε MySQL λα πξνζέμεη ηδηαίηεξα απηέο ηηο
ζηήιεο. Δπίζεο, εμππεξεηνχλ ζηηο αλαδεηήζεηο πνπ εθηεινχληαη ζπρλά ζην ίδην ζχλνιν ηηκψλ (πρ.
φλνκα θαη επψλπκν).
Ζ MySQL έρεη ηέζζεξα είδε επξεηεξίσλ:
INDEX (ηππηθφ)
UNIQUE (κνλαδηθφ – θάζε γξακκή πξέπεη λα έρεη δηαθνξεηηθή ηηκή ζηήιεο)
FULLTEXT ( γηα αλαδήηεζε πιήξνπο θεηκέλνπ)
PRIMARY KEY
Μηα ζηήιε ζα πξέπεη λα έρεη πάληα ην ίδην κνλαδηθφ επξεηήξην θαη φρη πεξηζζφηεξα.

Υξήζε δηαθνξεηηθώλ ηύπσλ πηλάθσλ


Ζ MySQL ππνζηεξίδεη πνιινχο δηαθνξεηηθνχο ηχπνπο πηλάθσλ. Κάζε ηχπνο πίλαθα
ππνζηεξίδεη δηαθνξεηηθέο δπλαηφηεηεο, έρεη ηνπο δηθνχο ηνπ πεξηνξηζκνχο θαη δηαθέξεη ζηελ απφδνζε
αλάινγα κε ηηο πεξηζηάζεηο.
Ο πην ζεκαληηθφο ηχπνο πίλαθα είλαη ν MyISAM, ν πξνεπηιεγκέλνο ηχπνο πίλαθα γηα φια ηα
ιεηηνπξγηθά ζπζηήκαηα εθηφο απφ ηα Windows. Οη πίλαθεο MyISAM είλαη ηδαληθνί γηα ηηο
πεξηζζφηεξεο εθαξκνγέο θαη ρεηξίδεηαη ηα εξσηήκαηα INSERT θαη SELECT πνιχ γξήγνξα.

Σελίδα | 67
Ζ επφκελε πην ζπλεζηζκέλε κεραλή απνζήθεπζεο είλαη ε InnoDB, ν πξνεπηιεγκέλνο ηχπνο
πίλαθα γηα ηα Windows. Οη πίλαθεο InnoDB είλαη θαηάιιεινη γηα ζπλαιιαγέο θαη εθηεινχλ
εξσηήκαηα ελεκέξσζεο ρσξίο πξφβιεκα. Σν κεηνλέθηεκα ηεο απέλαληη ζηε MyISAM είλαη φηη
ρξεηάδεηαη πεξηζζφηεξν ρψξν ζην δίζθν ηνπ δηαθνκηζηή, ιφγσ ηνπ φηη είλαη πην αξγή. Δπίζεο νη
πίλαθεο InnoDB δελ ππνζηεξίδνπλ FULLTEXT.
΢ηε δεκηνπξγία ησλ πηλάθσλ ηεο βάζεο δεδνκέλσλ “Bookstore” νη πίλαθεο είλαη ηχπνπ
InnoDB εθηφο απφ ηνλ πίλαθα ησλ ζπγγξαθέσλ ν νπνίνο πεξηέρεη επξεηήξην FULLTEXT.

4.4.3 Πεξηγξαθή Πηλάθσλ

Πίλαθαο authors
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
author_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
author_fn Μηθξφ φλνκα πξψηνπ ζπγγξαθέα
author_ln Δπψλπκν πξψηνπ ζπγγξαθέα
author2_fn Μηθξφ φλνκα δεχηεξνπ ζπγγξαθέα
author2_ln Δπψλπκν δεχηεξνπ ζπγγξαθέα

Πίλαθαο 4.11: ΢ηήιεο ηνπ πίλαθα authors


Όπσο βιέπνπκε θαη απφ ηελ παξαθάησ εηθφλα, ην πξσηεχσλ θιεηδί (author_id) είλαη έλαο
ζεηηθφο αθέξαηνο, νπνίνο απμάλεηαη κε θάζε εγγξαθή πνπ πξνζηίζεληαη ζηνλ πίλαθα authors (ιφγσ
ηεο πεξηγξαθήο AUTO_INCREMENT).
Σν κφλν πεδίν πνπ πξέπεη λα έρεη ηηκή, εθηφο απφ ην πξσηεχσλ θιεηδί πνπ δελ κπνξεί λα είλαη
NULL, είλαη ην Δπψλπκν ηνπ πξψηνπ ζπγγξαθέα. Όια ηα άιια πεδία θαηά ηε δεκηνπξγία ηνπ πίλαθα
ηνπο δφζεθε ε ηηκή DEFAULT NULL, ε νπνία αιιάδεη κφλν φηαλ εηζάγνπκε ηα νλφκαηα ησλ
ζπγγξαθέσλ απφ ηελ θφξκα πξνζζήθεο βηβιίσλ.

Δηθόλα 4.41: Γεκηνπξγία ηνπ πίλαθα authors

Σελίδα | 68
Δηθόλα 4.42: Δκθάληζε ζηειώλ ζηελ phpMyAdmin
΢ηελ ζχλζεζε ησλ νλνκάησλ επηιέγνπκε ηελ πεξηγξαθή greek_general_ci έηζη ψζηε λα
ελεκεξψλεηαη ε MySQL γηα ηελ γιψζζα πνπ ζα έρνπλ νη εγγξαθέο. ΢ηε ζπγθεθξηκέλε εληνιή
επηηξέπνληαη κφλν ηα Διιεληθά θαη Αγγιηθά. Αλ ζέινπκε λα ζπκπεξηιάβνπκε πεξηζζφηεξεο γιψζζεο
επηιέγνπκε ηελ ζχλζεζε utf8_general_ci.

Πίλαθαο editors
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
editor_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
editor_name Όλνκα ηνπ εθδφηε
Πίλαθαο 4.12: ΢ηήιεο ηνπ πίλαθα editors

Δηθόλα 4.43: Γεκηνπξγία ηνπ πίλαθα editors

Σελίδα | 69
Δηθόλα 4.44: Δκθάληζε ζηειώλ ζηελ phpMyAdmin

Πίλαθαο categories
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
category_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
category_name Όλνκα Καηεγνξίαο
Πίλαθαο 4.13: ΢ηήιεο ηνπ πίλαθα categories

Δηθόλα 4.45: Γεκηνπξγία ηνπ πίλαθα categories

Σελίδα | 70
Δηθόλα 4.46: Δκθάληζε ζηειώλ ζηελ phpMyAdmin

Πίλαθαο books
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
book_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
author_id Ξέλν θιεηδί ηνπ πίλαθα authors
editor_id Ξέλν θιεηδί ηνπ πίλαθα editors
category_id Ξέλν θιεηδί ηνπ πίλαθα categories
book_name Σίηινο βηβιίνπ
price Σηκή βηβιίνπ
ISBN Κσδηθφο βηβιίνπ
description Πεξηγξαθή
image_name_big Όλνκα κεγάιεο εηθφλαο
image_name_small Όλνκα κηθξήο εηθφλαο
url URL θαηεγνξίαο βηβιίνπ – Γηα ηνλ απιφ ρξήζηε
url_after URL θαηεγνξίαο βηβιίνπ – Γηα ηνλ ρξήζηε-κέινο
url_admin URL θαηεγνξίαο βηβιίνπ – Γηα ηνλ administrator
Ζ ζηήιε απηή έρεη default ηηκή 0. Αλ ηεο δψζνπκε ηελ ηηκή 1, ην βηβιίν
new_book
ζπκπεξηιακβάλεηαη ζηηο Νέεο Κπθινθνξίεο.
new_url URL βηβιίνπ λέαο θπθινθνξίαο – Γηα ηνλ απιφ ρξήζηε
new_url_after URL βηβιίνπ λέαο θπθινθνξίαο – Γηα ηνλ ρξήζηε-κέινο
new_url_admin URL βηβιίνπ λέαο θπθινθνξίαο – Γηα ηνλ administrator
Ζ ζηήιε απηή έρεη default ηηκή 0. Αλ ηεο δψζνπκε ηελ ηηκή 1, ην βηβιίν
best_book
ζπκπεξηιακβάλεηαη ζηα Best Sellers.
best_url URL βηβιίνπ-best seller – Γηα ηνλ απιφ ρξήζηε
best_url_after URL βηβιίνπ-best seller – Γηα ηνλ ρξήζηε-κέινο
best_url_admin URL βηβιίνπ-best seller – Γηα ηνλ administrator
Ζ ζηήιε απηή έρεη default ηηκή 0. Αλ ηεο δψζνπκε ηελ ηηκή 1, ην βηβιίν
sug_book
ζπκπεξηιακβάλεηαη ζηα Πξνηεηλφκελα βηβιία.
sug_url URL πξνηεηλφκελνπ βηβιίνπ – Γηα ηνλ απιφ ρξήζηε

Σελίδα | 71
sug_url_after URL πξνηεηλφκελνπ βηβιίνπ – Γηα ηνλ ρξήζηε-κέινο
sug_url_admin URL πξνηεηλφκελνπ βηβιίνπ – Γηα ηνλ administrator
Πίλαθαο 4.14: ΢ηήιεο ηνπ πίλαθα books

Δηθόλα 4.47: Δκθάληζε ζηειώλ ζηελ phpMyAdmin

Σελίδα | 72
Πίλαθαο users
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
user_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
user_name Δκθαληδφκελν φλνκα ρξήζηε
first_name Όλνκα
last_name Δπψλπκν
e_mail Γηεχζπλζε Ζιεθηξνληθνχ Σαρπδξνκείνπ
pass Κσδηθφο Υξήζηε
telefone Σειέθσλν
fax Ννχκεξν - fax
city Πφιε
zip_code Σαρπδξνκηθφο Κψδηθαο
address Γηεχζπλζε
registration_date Ζκέξα εγγξαθήο
Πίλαθαο 4.15: ΢ηήιεο ηνπ πίλαθα users

Δηθόλα 4.48: Γεκηνπξγία ηνπ πίλαθα books

Πίλαθαο Καιαζηνύ
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
kal_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
book_id Ξέλν θιεηδί ηνπ πίλαθα books
user_id Ξέλν θιεηδί ηνπ πίλαθα users
kal_book Σίηινο βηβιίνπ πνπ πξνζηέζεθε ζην θαιάζη
pr Σηκή βηβιίνπ

Σελίδα | 73
quantity Πνζφηεηα
k_url URL θαηεγνξίαο βηβιίνπ
date Ζκεξνκελία πξνζζήθεο ηνπ βηβιίνπ ζην θαιάζη
Πίλαθαο 4.16: ΢ηήιεο ηνπ πίλαθα kalathi

Δηθόλα 4.49: Δκθάληζε ζηειώλ ζηελ phpMyAdmin

Πίλαθαο Wishlist
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
w_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
book_id Ξέλν θιεηδί ηνπ πίλαθα books
user_id Ξέλν θιεηδί ηνπ πίλαθα users
b_name Σίηινο βηβιίνπ πνπ πξνζηέζεθε ζηε wishlist
img Δηθφλα βηβιίνπ
w_url URL θαηεγνξίαο βηβιίνπ
date Ζκεξνκελία πξνζζήθεο ηνπ βηβιίνπ ζηε wishlist
Πίλαθαο 4.17: ΢ηήιεο ηνπ πίλαθα Wishlist

Σελίδα | 74
Δηθόλα 4.50: Δκθάληζε ζηειώλ ζηελ phpMyAdmin

Πίλαθαο messages
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
msg_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
body_msg Μήλπκα Υξήζηε
date_entered Ζκεξνκελία απνζηνιήο κελχκαηνο
user_name Όλνκα Υξήζηε
user_email email Υξήζηε
Πίλαθαο 4.18: ΢ηήιεο ηνπ πίλαθα messages

Δηθόλα 4.51: Δκθάληζε ζηειώλ ζηελ phpMyAdmin

Σελίδα | 75
Πίλαθαο orders
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
order_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
user_id Ξέλν θιεηδί ηνπ πίλαθα users
total ΢πλνιηθφ πνζφ παξαγγειίαο
νrder_date Ζκεξνκελία Παξαγγειίαο
Πίλαθαο 4.19: ΢ηήιεο ηνπ πίλαθα orders

Δηθόλα 4.52: Δκθάληζε ζηειώλ ζηελ phpMyAdmin

Πίλαθαο order_contents
΢ΣΗΛΔ΢ ΠΔΡΙΓΡΑΦΗ
oc_id Πξσηεχσλ θιεηδί ηνπ πίλαθα
order_id Ξέλν θιεηδί ηνπ πίλαθα orders
book_id Ξέλν θιεηδί ηνπ πίλαθα books
quantity Πνζφηεηα
pr Σηκή βηβιίνπ
ship_date Ζκεξνκελία παξαγγειίαο βηβιίνπ
Πίλαθαο 4.20: ΢ηήιεο ηνπ πίλαθα order_contents

Σελίδα | 76
Δηθόλα 4.53: Δκθάληζε ζηειώλ ζηελ phpMyAdmin

4.5 Πξνγξακκαηηζκόο κε ηελ PHP

4.5.1 Δγγξαθή Υξήζηε


Ζ εγγξαθή ηνπ ρξήζηε πξαγκαηνπνηείηαη κέζσ δχν αξρείσλ. Σνπ register.php θαη ηνπ
register2.php. Απηφ ζπκβαίλεη γηα ιφγνπο εκθάληζεο. ΢ην πξψην αξρείν εκθαλίδεηαη ην θαηάιιειν
κήλπκα πνπ ελεκεξψλεη ηνλ ρξήζηε γηα ηελ ζπκπιήξσζε ησλ πεδίσλ κε αζηεξάθη. ΢ην δεχηεξν
αξρείν ην αξρηθφ κήλπκα αληηθαζηζηάηαη απφ ηα κελχκαηα ιαζψλ πνπ κπνξεί λα εκθαληζηνχλ, ή απφ
ηελ επηηπρή ελεκέξσζε ηεο εγγξαθήο.
Δπίζεο. Ο δεχηεξνο ιφγνο ρσξηζκνχ ηνπ θψδηθα ζε δχν αξρεία, είλαη ε εκθάληζε ησλ
ζηνηρείσλ ηεο επηηπρεκέλεο εγγξαθήο ζηα αλάινγα πεδία ηεο θφξκαο.

Κώδηθαο Φόξκαο (αξρείνπ register.php)


<form name="register" method="post" action="register_2.php">
<table width="100%" border="0">
<tr>
<td width="96%"><p align="justify">Πξνθεηκέλνπ λα πξνρσξήζεηε ζηελ αγνξά νπνηνπδήπνηε
πξντόληνο, είλαη απαξαίηεην λα ζπκπιεξώζηε ηα ζηνηρεία ζαο ζηελ αθόινπζε θόξκα. </p>
<p>* Η ζπκπιήξσζε ησλ πεδίσλ κε αζηεξίζθν είλαη ππνρξεσηηθή.</p></td>
</tr>
</table>
<p><span class="red">*</span> Όλνκα Υξήζηε:
<input type="text" name="user_name" size="40" maxlength="20" /></p>
<p><span class="red">*</span> Όλνκα :

Σελίδα | 77
<input type="text" name="first_name" size="40" maxlength="20" /></p>
<p><span class="red">*</span> Δπώλπκν :
<input type="text" name="last_name" size="40" maxlength="40" /></p>
<p><span class="red">*</span> Γηεύζπλζε :
<input type="text" name="address" size="40" maxlength="40" /></p>
<p><span class="red">*</span> Πόιε :
<input type="text" name="city" size="40" maxlength="30" /></p>
<p><span class="red">*</span> Σ.Κ. :
<input type="text" name="zip_code" size="40" maxlength="10" /></p>
<p><span class="red">*</span> Σειέθσλν :
<input type="text" name="telefone" size="40" maxlength="30" /></p>
<p><span class="red">*</span> Fax :
<input type="text" name="fax" size="40" maxlength="30" /></p>
<p><span class="red">*</span> Email :
<input type="text" name="e_mail" size="40" maxlength="30" /></p>
<p><span class="red">*</span> Κσδηθόο πξόζβαζεο :
<input type="password" name="pass1" size="40" maxlength="40" /></p>
<p><span class="red">*</span> Δπηβεβαίσζε θσδηθνύ πξόζβαζεο :
<input type="password" name="pass2" size="40" maxlength="40" /></p>

<p align="right">&nbsp;</p>
<p align="right">
<input type="submit" name="register" value="Καηαρώξεζε ΢ηνηρείσλ" />
</p>
<input type="hidden" name="registered" value="TRUE" />
</form>

Πεξηγξαθή Φόξκαο
Απηφ πνπ πξέπεη λα πξνζέμνπκε ζηνλ θψδηθα ηεο θφξκαο απηήο είλαη ηα ραξαθηεξηζηηθά
method θαη action. Με ηελ ηηκή post πνπ δίλνπκε ε θφξκα θαηαρσξεί ηα δεδνκέλα ησλ πεδίσλ ζην
κεηξψν $_POST. Μέζσ ηεο action θαζνξίδνπκε ην αξρείν ην νπνίν ζα παξαιάβεη ηα δεδνκέλα απηά.
Δπίζεο, ε ηηκή ηνπ ραξαθηεξηζηηθνχ size θαζνξίδεη ην κέγεζνο ηνπ πεδίνπ φηαλ εκθαλίδεηαη ε
θφξκα ζην θπιινκεηξεηή, ελψ ε ηηκή ηνπ maxlength πξέπεη λα ζπκθσλεί κε ην κέγεζνο ηεο ζηήιεο
ηνπ πίλαθα (ηεο βάζεο δεδνκέλσλ Bookstore) ζηνλ νπνίν ζα θαηαρσξεζνχλ ηα δεδνκέλα πνπ ν
ρξήζηεο ζα δψζεη.

Κώδηθαο PHP αξρείνπ register2.php


<?php

if (isset($_POST['registered']))
{
$errors = array();
$trimmed = array_map('trim',$_POST);
$un = $fn = $ln = $ad = $c = $zip = $tel = $fax = $e = $p =FALSE;
if (empty($trimmed['user_name']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Όλνκά ζαο.';
}else{
if (preg_match("|^\w.{2,20}$|i", $trimmed['user_name']))

Σελίδα | 78
{
$fn = mysqli_real_escape_string($dbc, $trimmed['user_name']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ην όλνκα ρξήζηε.';
}
}
if (empty($trimmed['first_name']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Όλνκά ζαο.';
}else{
if (preg_match("|^\w.{2,20}$|i", $trimmed['first_name']))
{
$fn = mysqli_real_escape_string($dbc, $trimmed['first_name']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ην κηθξό ζαο όλνκα.';
}
}
if (empty($trimmed['last_name']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Δπώλπκό ζαο.';
}else{
if (preg_match('/^\w.{2,40}$/i', $trimmed['last_name']))
{
$ln = mysqli_real_escape_string($dbc, $trimmed['last_name']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ην επώλπκν ζαο.';
}
}
if (empty($trimmed['address']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ηε Γηεύζπλζή ζαο.';
}else{
if (preg_match('/^\w.+[ ][0-9]{2,40}$/i', $trimmed['address']))
{
$ad = mysqli_real_escape_string($dbc, $trimmed['address']);
}else{
$errors[] = 'Μόλν ςεθία θαη ραξαθηήξεο επηηξέπνληαη γηα ην όλνκα
δηεύζπλζεο.';
}
}
if (empty($trimmed['city']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ηελ Πόιε ζαο.';
}else{
if (preg_match('/^\w.{2,30}$/i', $trimmed['city']))
{
$c = mysqli_real_escape_string($dbc, $trimmed['city']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ην όλνκα ηεο πόιεο ζαο.';
}
}

Σελίδα | 79
if (empty($trimmed['zip_code']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Σαρπδξνκηθό ζαο Κώδηθα.';
}else{
f (preg_match('/^[\d-]{2,10}$/i', $trimmed['zip_code']))
{
$zip = mysqli_real_escape_string($dbc, $trimmed['zip_code']);
}else{
$errors[] = 'Μόλν ςεθία θαη ε "-" επηηξέπνληαη γηα ηνv ηαρπδξνκηθό θώδηθα.';
}
}
if (empty($trimmed['telefone']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Σειέθσλό ζαο.';
}else{
if (preg_match('/^[\d-]{2,30}$/i', $trimmed['telefone']))
{
$tel = mysqli_real_escape_string($dbc, $trimmed['telefone']);
}else{
$errors[] = 'Μόλν ςεθία θαη ε "-" επηηξέπνληαη γηα ηνv αξηζκό ηειεθώλνπ.';
}
}
if (empty($trimmed['fax']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ηνv αξηζκό FAX.';
}else{
if (preg_match('/^[\d-]{2,30}$/i', $trimmed['fax']))
{
$fax = mysqli_real_escape_string($dbc, $trimmed['fax']);
}else{
$errors[] = 'Μόλν ςεθία θαη ε "-" επηηξέπνληαη γηα ηνv αξηζκό Fax.';
}
}
if (empty($trimmed['e_mail']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Email ζαο.';
}else{
if (preg_match('/^[\w.-]+@[\w.]+\.[A-Za-z]{2,40}$/i', $trimmed['e_mail']))
{
$e = mysqli_real_escape_string($dbc, $trimmed['e_mail']);
}else{
$errors[] = 'Σν email δελ είλαη έγθπξν.';
}
}
if (empty($trimmed['pass1']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Κσδηθό ζαο.';
}else{
if (preg_match('/^\w{2,40}$/i', $trimmed['pass1']))
{
if ($trimmed['pass1'] == $trimmed['pass2'])

Σελίδα | 80
{
$p = mysqli_real_escape_string($dbc, $trimmed['pass1']);
}else{
$errors[] = 'Ο Κσδηθόο δελ επηβεβαηώζεθε ζσζηά.';
}
}else{
$errors[] = 'Μόλν ςεθία θαη ραξαθηήξεο επηηξέπνληαη γηα ην θσδηθό
πξόζβαζεο.';
}
}
}
if (empty($errors))
{
$q = "SELECT user_id FROM users WHERE e_mail='$e'";
$r = mysqli_query($dbc, $q);

if (mysqli_num_rows($r) == 0)
{
$q2 = "INSERT INTO users (user_name, first_name, last_name, e_mail, address, city,
zip_code, telefone, fax, pass, registration_date) VALUES ('$un', '$fn', '$ln', '$e', '$ad', '$c', '$zip',
'$tel', '$fax', SHA1('$p'), NOW() )";
$r2 = mysqli_query($dbc, $q2);

if (mysqli_affected_rows($dbc) == 1)
{
echo '<p>Δπραξηζηνύκε γηα ηελ εγγξαθή ζαο. Μπνξείηε λα ζπλδεζείηε ζηε
ζειίδα καο</p>';

}else{
echo '<p>Η ζύλδεζε κε ηελ Βάζε Γεδνκέλσλ δελ ήηαλ εθηθηή. Παξαθαινύκε
πξνζπαζήζηε μαλά.</p>';
}
mysqli_close($dbc);
}else{
echo '<p>Σν email πνπ δώζαηε ππάξρεη ήδε.</p>';
}

}else{
echo '<p>Βξέζεθαλ ιάζε</p>';
foreach ($errors as $msg)
{
echo " $msg\n<br />";
}
}
?>

Πεξηγξαθή θώδηθα
Ο παξαπάλσ θψδηθαο ζέινπκε λα εθηειείηαη φηαλ ν ρξήζηεο παηήζεη “Καηαρψξεζε
΢ηνηρείσλ”. Απηφ ην επηηπγράλνπκε κε ηε ζπλζήθε:
if (isset($_POST['registered']))

Σελίδα | 81
΢ηελ δεκηνπξγία ηεο θφξκαο δψζακε ζην θνπκπί κε φλνκα “Καηαρψξεζε ΢ηνηρείσλ” ηελ
ηηκή registered.
<input type="submit" name="register" value="Καηαρώξεζε ΢ηνηρείσλ" />
<input type="hidden" name="registered" value="TRUE" />
Έηζη ε PHP θαηαιαβαίλεη πνην θνπκπί έρεη παηεζεί απφ ηνλ ρξήζηε θαη ηξέρεη ηνλ αλάινγν
θψδηθα.
΢ηε ζπλέρεηα δειψλνπκε ηνλ πίλαθα πνπ θαηαγξάθνληαη ηα ζθάικαηα:
$errors = array();
Μέζα ζην κεηξψν $_POST θαηαρσξνχληαη ηα δεδνκέλα πνπ πιεθηξνινγεί ν ρξήζηεο ζηα
πεδία ηεο θφξκαο. Απφ ηα δεδνκέλα απηά πξέπεη λα πεξηθνπνχλ φια ηα θελά δηαζηήκαηα. Απηφ
γίλεηαη κε ηελ ζπλάξηεζε trim().
$trimmed = array_map('trim',$_POST);
H arrey_map δέρεηαη ζαλ 1ν φξηζκα κηα ζπλάξηεζε θαη ζαλ 2ν έλα κεηξψν. ΢ε θάζε κεηξψν
$_POST εθαξκφδνπκε ηελ ζπλάξηεζε trim() θαη αλαζέηνπκε ηελ ηηκή ζε έλα θαηλνχξγην κεηξψν
$trimmed.
Φπζηθά ηίπνηα δελ είλαη ζίγνπξν, γη‟ απηφ θαη πξέπεη λα δψζνπκε αξρηθέο ηηκέο ζηηο
κεηαβιεηέο πνπ ζα ρξεζηκνπνηήζνπκε.
$un = $fn = $ln = $ad = $c = $zip = $tel = $fax = $e = $p =FALSE;
Γηα λα ειέγμνπκε αλ ν ρξήζηεο φληνο ζπκπιήξσζε ην πεδίν user_name – Όλνκα Υξήζηε
εθηεινχκε ηελ ζπλζήθε:
if (empty($trimmed['user_name']))
Με απηφ ηνλ ηξφπν ειέγρνπκε αλ είλαη άδεην ην κεηξψν $trimmed['user_name']. Αλ λαη ηφηε
ζηνλ πίλαθα errors[] πξνζζέηνπκε ην αλάινγν ζθάικα. Αλ φρη, δειαδή αλ ν ρξήζηεο έρεη δψζεη ηηκή,
ειέγρνπκε ηελ ηηκή απηή κέζσ ησλ παξαζηάζεσλ Perl:
if (preg_match("|^\w.{2,20}$|i", $trimmed['user_name']))
Σα δεδνκέλα πνπ ππνβάινπλ νη ρξήζηεο δελ είλαη πάληα αμηφπηζηα. Έλαο ζθνπφο ησλ
επηζέζεσλ κε "ελέζεηο" SQL είλαη ε δεκηνπξγία εζθαικέλσλ ζπληαθηηθά εξσηεκάησλ, πνπ ζα
απνθαιχςνπλ πιεξνθνξίεο γηα ην ζελάξην ή ηε ΒΓ ζην κήλπκα ζθάικαηνο πνπ ζα εκθαληζηεί. Ζ
mysql_real_escape_string() θηιηξάξεη("θαζαξίδεη") ηα δεδνκέλα γηα ιφγνπο αζθαιείαο ηνπνζεηψληαο
ην ραξαθηήξα δηαθπγήο πξηλ απφ ηνπο πηζαλφλ πξνβιεκαηηθνχο ραξαθηήξεο:
$fn = mysqli_real_escape_string($dbc, $trimmed['user_name']);
Οη ζπγθεθξηκέλνη έιεγρνη πξαγκαηνπνηνχληαη γηα φια ηα πεδία ηεο θφξκαο εγγξαθήο.
Σέινο, γηα λα ζηγνπξεπηνχκε φηη δελ ππήξμε θαλέλα ζθάικα θαηά ηελ θαηαρψξεζε ησλ
ζηνηρείσλ απφ ην ρξήζηε εθηεινχκε ηελ ζπλζήθε:
if (empty($errors))
Αλ δελ ππάξρνπλ ιάζε είλαη πνιχ βαζηθφ λα ειέγμνπκε αλ ην email πνπ έδσζε ν ρξήζηεο
ππάξρεη ήδε, γηαηί πξέπεη λα είλαη κνλαδηθφ γηα θάζε ρξήζηε. Γη‟ απηφ θαη εθηεινχκε ην εξψηεκα ηεο
επηινγήο (SELECT) κε ην νπνίν αλαθηάκε απφ ηελ βάζε δεδνκέλσλ φπνηα εγγξαθή έρεη δηεχζπλζε
ειεθηξνληθνχ ηαρπδξνκείνπ ίδηα κε απηή πνπ πιεθηξνιφγεζε ν ρξήζηεο.
$q = "SELECT user_id FROM users WHERE e_mail='$e'";
Ζ mysqli_query() είλαη ε ζπλάξηεζε πνπ εθηειεί ηα εξσηήκαηα. Γέρεηαη σο 1ν φξηζκα ηε
ζχλδεζε κε ηε βάζε δεδνκέλσλ θαη σο 2ν φξηζκα ην εξψηεκα. Ζ κεηαβιεηή $r (=result) ζα έρεη ηηκή
TRUE ή FALSE αλάινγα αλ ην εξψηεκα εθηειέζηεθε ζσζηά ή φρη:
$r = mysqli_query($dbc, $q);
Ζ ζπλάξηεζε mysqli_num_rows($r) επηζηξέθεη ην πιήζνο ησλ γξακκψλ πνπ έρεη επηζηξέςεη
ην εξψηεκα επηινγήο SELECT. Αλ ε ζπλάξηεζε mysqli_num_rows($r) = 0 γλσξίδνπκε φηη ην email

Σελίδα | 82
δελ έρεη ήδε θαηαρσξεζεί ζηε βάζε δεδνκέλσλ θαη επνκέλσο κπνξνχκε λα εθηειέζνπκε κε αζθάιεηα
ην εξψηεκα ηεο εηζαγσγήο (INSERT).
if (mysqli_num_rows($r) == 0)
{
$q2 = "INSERT INTO users (user_name, first_name, last_name, e_mail,
address, city, zip_code, telefone, fax, pass, registration_date) VALUES ('$un', '$fn', '$ln',
'$e', '$ad', '$c', '$zip', '$tel', '$fax', SHA1('$p'), NOW() )";
$r2 = mysqli_query($dbc, $q2);
Με ηελ εληνιή INSERT INTO κπνξνχκε λα εηζάγνπκε δεδνκέλα ζε φπνηνλ πίλαθα
επηζπκνχκε. Με φπνηα ζεηξά γξάςνπκε ηηο ζηήιεο ηνπ πίλαθα κε ηελ ίδηα ζεηξά πξέπεη λα γξάςνπκε
θαη ηηο κεηαβιεηέο απφ ηηο νπνίεο ζα πάξνπκε ηηο ηηκέο θαη ζα ηηο εθρσξήζνπκε ζηηο αλάινγεο ζηήιεο.
Αλ ην εξψηεκα ιεηηνχξγεζε ζσζηά ε ζπλάξηεζε mysqli_affected_rows() επηζηξέθεη ην
πιήζνο ησλ γξακκψλ πνπ έρνπλ επεξεαζηεί απφ έλα εξψηεκα εηζαγσγήο.
if (mysqli_affected_rows($dbc) == 1)
Έπεηηα δηαθφπηνπκε ηελ ζχλδεζε κε ηελ βάζε δεδνκέλσλ:
mysqli_close($dbc);
Όια ηα ζθάικαηα εκθαλίδνληαη κε ηε βνήζεηα ελφο βξφρνπ foreach:
foreach ($errors as $msg) { echo " $msg\n<br />"; }

Κώδηθαο Φόξκαο (αξρείνπ register2.php)

Δηθόλα 4.54: Κώδηθαο HTML γηα ηελ Φόξκα Δγγξαθήο

Σελίδα | 83
Πεξηγξαθή Φόξκαο
Οη δχν απηέο θφξκεο είλαη ζρεδφλ ίδηεο, αιιά έρνπλ δχν βαζηθέο δηαθνξέο. Ζ δεχηεξε θφξκα
είλαη κηα παξακέλνπζα θφξκα, δειαδή εθηειείηαη πάληα ζην ίδην αξρείν (action = register2.php), θαη
ηα ζηνηρεία πνπ θαηαρσξεί ν ρξήζηεο εκθαλίδνληαη ζηα αλάινγα πεδία ηεο.

Δηθόλα 4.55: Φόξκα Δγγξαθήο

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #text_register2 { .bookstore #text_register2 form{
margin-right: 30px; text-align: right;
margin-left: 30px; width: 560px;
color: #000000; font-weight: bold;
font-family: "Times New Roman", Times, serif; padding-bottom: 40px;
background-repeat: repeat; margin-left: 290px;
background-image: margin-right: 30px;
url(background%20img.jpg); padding-top: 20px;
font-size: 16px; }
padding-top: 80px;
width: 946px;
}

Πίλαθαο 4.21: Φύιια CSS γηα ηελ κνξθνπνίεζε ηεο θόξκαο εγγξαθήο

Σελίδα | 84
4.5.2 Δίζνδν – Έμνδν από ηνλ Λνγαξηαζκό ηνπ Υξήζηε

Κσδηθόο PHP (Δηζόδνπ)


<?php

require_once ('C:/xampp/config.inc.php');
require_once ('C:/xampp/connect_to_mysql.php');
$row = FALSE ;
$row2 = FALSE;
if (isset($_POST['entered_login']))
{
$trimmed = array_map('trim',$_POST);
$e = $p = FALSE;
if (empty($trimmed['e_mail']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Email ζαο.';
}else{
if (preg_match('/^[\w.-]+@[\w.]+\.[A-Za-z]{2,40}$/i', $trimmed['e_mail']))
{
$e = mysqli_real_escape_string($dbc, $trimmed['e_mail']);
}
}
if (empty($trimmed['pass']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Κσδηθό ζαο.';
}else{
if (preg_match('/^\w{2,30}$/i', $trimmed['pass']))
{
$p = mysqli_real_escape_string($dbc, $trimmed['pass']);
}
}
if (empty($errors))
{
$q = "SELECT user_id, user_name, first_name, last_name, e_mail, pass, address, city,
telefone, fax, zip_code FROM users WHERE (e_mail='$e' AND pass=SHA1('$p'))";
$r = mysqli_query($dbc, $q);

if (mysqli_num_rows($r) == 1)
{
$_SESSION = mysqli_fetch_array ($r, MYSQLI_ASSOC);
$_SESSION['agent'] = md5($_SERVER['HTTP_USER_AGENT']);
if ($_SESSION['e_mail'] == EMAIL)
{
mysqli_free_result($r);
mysqli_close($dbc);
$url = BASE_URL . 'admin.php' ;
ob_end_clean();
header("Location: $url");
exit();

Σελίδα | 85
}else{
mysqli_free_result($r);
mysqli_close($dbc);
$url = BASE_URL . 'loggedin.php' ;
ob_end_clean();
header("Location: $url");
exit();
}
}else{
echo '<p>Σα ζηνηρεία πνπ δώζαηε δελ ππάξρνπλ.</p>';
}
}else{
echo '<p>Βξέζεθαλ ιάζε</p>';
foreach ($errors as $msg)
{
echo " $msg\n<br />";
}
}
}
?>

Πεξηγξαθή Κώδηθα
H PHP πξνζζέηεη ηνλ θψδηθα δχν αξρεία κέζσ ηεο ζπλάξηεζεο require_once(). Σν έλα αξρείν
είλαη ην config.inc.php θαη ην άιιν αξρείν είλαη ην connect_to_mysql.php.

Δηθόλα 4.56: ΢ελάξην PHP γηα ηελ αλαθνξά ζθαικάησλ

Σελίδα | 86
΢ην αξρείν config.inc.php νξίδνπκε ηέζζεξεηο ζηαζεξέο, ηηο LIVE, EMAIL, BASE_URL θαη
MYSQL. Δπίζεο, δεκηνπξγνχκε κηα δηθή καο ζπλάξηεζε ρεηξηζκψλ ζθαικάησλ ηελ
my_error_handler ε νπνία καο εκθαλίδεη ην θαηάιιειν κήλπκα ζθάικαηνο.
Ζ ζηαζεξά LIVE είλαη κηα ζεκαία πνπ καο δείρλεη αλ ε ηνπνζεζία είλαη ζε ιεηηνπξγία ή φρη.
Ζ δηαθνξά είλαη ζεκαληηθή, επεηδή αιιηψο ρεηξηδφκαζηε ηα ζθάικαηα φηαλ ε ηνπνζεζία είλαη ζε
ιεηηνπξγία θαη αιιηψο φηαλ βξίζθεηαη ζηελ θάζε ηεο αλάπηπμεο. Όηαλ ε ηνπνζεζία δελ είλαη ζε
ιεηηνπξγία εκθαλίδεηαη έλα ιεπηνκεξέο κήλπκα ζθάικαηνο, ελψ αλ είλαη ζε ιεηηνπξγία ζα ηππσζεί
έλα απιφ απνινγεηηθφ κήλπκα πνπ ζα ελεκεξψλεη ην ρξήζηε φηη πξνέθπςε θάπνην ζθάικα.
Σέινο, κε ηελ εληνιή set_error_handler(„my_error_handler‟) ιέκε ζηελ PHP λα
ρξεζηκνπνηήζεη ηελ δηθή καο ζπλάξηεζε ρεηξηζκνχ ζθαικάησλ αληί γηα ηελ πξνεπηιεγκέλε.

Δηθόλα 4.57: ΢ελάξην PHP γηα ηελ ζύλδεζε κε ηε MySQL

Σν αξρείν connect_to_mysql.php εγθαζηζηά κηα ζχλδεζε κε ηελ MySQL θαη επηιέγεη ηε βάζε
δεδνκέλσλ. Αλ ε ζπλάξηεζε mysqli_connect() δελ κπνξεί λα επηζηξέςεη έλαλ έγθπξν ζχλδεζκν
πφξνπ εθηειείηαη ην ηκήκα OR die() ηεο εληνιήο. Ζ ζπλάξηεζε die() δερφκελε κηα ζπκβνινζεηξά πνπ
ζα εκθαληζηεί ζηνλ θπιινκεηξεηή ηεξκαηίδεη ηελ εθηέιεζε ηνπ ζελαξίνπ. ΢ην ζπγθεθξηκέλν αξρείν
ε ζπκβνινζεηξά απνηειείηε απφ ην θείκελν “Could not connect to MySQL:” θαη ην ζρεηηθφ κήλπκα
ζθάικαηνο ηεο MySQL.
localhost = ππνινγηζηήο ππεξεζίαο
epp1545 = φλνκα ρξήζηε
mybookstore = θσδηθφο πξφζβαζεο
bookstore = βάζε δεδνκέλσλ

Αλ ν ρξήζηεο παηήζεη ην θνπκπί “Δίζνδνο κέινπο” ζα εθηειεζηεί ην ζελάξην ηεο PHP:


if (isset($_POST['entered_login']))

Σα θελά δηαζηήκαηα απφ ηα δεδνκέλα πνπ εθρσξήζεθαλ ζα πεξηθνπνχλ:


$trimmed = array_map('trim',$_POST);

Αλ ν ρξήζηεο δελ έδσζε ηηκή γηα ην email ηνπ: if (empty($trimmed['e_mail']))

Πξνζηίζεηαη ην θαηάιιειν κήλπκα ζθάικαηνο ζηνλ πίλαθα errors[]:


$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Email ζαο.';

Αλ ν ρξήζηεο έρεη δψζεη ηηκή, ειέγρνπκε αλ ε ηηκή απηή ηαηξηάδεη κε ην θαηάιιειν κνηίβν
ησλ παξαηάζεσλ Perl:
if (preg_match('/^[\w.-]+@[\w.]+\.[A-Za-z]{2,6}$/i', $trimmed['e_mail']))
Σν κνηίβν γηα ην email ηνπ ρξήζηε είλαη ηεο κνξθήο: '/^[\w.-]+@[\w.]+\.[A-Za-z]{2,40}$/i'
Οη δηεπζχλζεηο ειεθηξνληθνχ ηαρπδξνκείνπ αξρίδνπλ απφ γξάκκαηα, αξηζκνχο, θαη ην ραξαθηήξα
ππνγξάκκηζεο (πνπ αληηπξνζσπεχνληαη απφ ηελ θιάζε \w), ζπλ κία ηειεία θαη κηα παχια. ΢ηε

Σελίδα | 87
ζπλέρεηα αθνινπζεί έλαο κφλν ραξαθηήξαο @. Μεηά απφ απηφ κπνξεί λα αθνινπζεί νπνηνδήπνηε
πιήζνο απφ γξάκκαηα, αξηζκνχο, ηειείεο θαη παχιεο. Σέινο, φιεο νη δηεπζχλζεηο νινθιεξψλνληαη κε
κηα ηειεία θαη απφ δχν έσο έμη γξάκκαηα.

Αλ ππάξρεη ηαχηηζε ηνπ κνηίβνπ θαη ηηο ηηκήο θαινχκε ηελ ζπλάξηεζε mysqli_real_escape_string ε
νπνία θηιηξάξεη ηα δεδνκέλα. Σν απνηέιεζκα εθρσξείηαη ζηε κεηαβιεηή $e:
$e = mysqli_real_escape_string($dbc, $trimmed['e_mail']);

Σελ ίδηα δηαδηθαζία εθηεινχκε θαη γηα ηνλ θσδηθφ ηνπ ρξήζηε. Έπεηηα αλ ν πίλαθαο ησλ ζθαικάησλ
είλαη άδεηνο - if (empty($errors)) – εθηεινχκε ην εξψηεκα SQL:
$q = "SELECT user_id, user_name, first_name, last_name, e_mail, pass, address, city, telefone,
fax, zip_code FROM users WHERE (e_mail='$e' AND pass=SHA1('$p'))";
$r = mysqli_query($dbc, $q);
Με ην εξψηεκα απηφ ηεο SQL επηιέγνπκε ηα ζηνηρεία ηνπ ρξήζηε-κέινπο πνπ αληηζηνηρνχλ ζην email
θαη ηνλ θσδηθφ πξφζβαζεο πνπ θαηαρσξήζεθαλ ζηα πεδία ηεο θφξκαο.

Αλ ηειηθά ην εξψηεκα έρεη επηζηξέςεη κηα ηηκή - if (mysqli_num_rows($r) == 1) – ηφηε ζην κεηξψν
$_SESSION θαηαρσξνχληαη ηα ζηνηρεία πνπ ην εξψηεκα SELECT έρεη επηζηξέςεη, δειαδή ηα
ζηνηρεία ηνπ ρξήζηε:
$_SESSION = mysqli_fetch_array ($r, MYSQLI_ASSOC);
Ζ mysqli_fetch_array() δέρεηαη σο φξηζκα ηα απνηειέζκαηα ηνπ εξσηήκαηνο θαη επηζηξέθεη κηα
γξακκή δεδνκέλσλ ηε θνξά ζε κνξθή πίλαθα πνπ ε κνξθή ηνπ θαζνξίδεηαη απφ ηελ
MYSQLI_ASSOC.

΢ΣΑΘΔΡΑ ΠΑΡΑΓΔΙΓΜΑ
MYSQLI_ASSOC $row[„ζηήιε‟];
MYSQLI_NUM $row[„0‟];
MYSQLI_BOTH $row[„0‟]; ή $row[„ζηήιε‟];
Πίλαθαο 4.22: ΢ηαζεξέο ηεο mysqli_fetch_array

Δπεηδή κέζα ζηηο πεξηφδνπο εξγαζίαο απνζεθεχνληαη ζεκαληηθά δεδνκέλα, είλαη πνιχ πηζαλφ
έλαο θαθφβνπινο ρξήζηεο λα επηρεηξήζεη λα ππνθιέςεη ηα δεδνκέλα κέζσ ηνπ αλαγλσξηζηηθνχ ηεο
πεξηφδνπ εξγαζίαο. Αλ κάζεη ην αλαγλσξηζηηθφ κπνξεί εχθνια λα μεγειάζεη ηνλ δηαθνκηζηή θαη λα ην
ζεσξεί σο δηθφ ηνπ. Με ηελ ηηκή HTTP_USER_AGENT γηα λα ππνθιέςεη θάπνηνο ηελ πεξίνδν
εξγαζίαο πξέπεη λα ρξεζηκνπνηεί αθξηβψο ηνλ ίδην θπιινκεηξεηή θαη ιεηηνπξγηθφ ζχζηεκα. Έηζη
απνζεθεχνπκε κηα θξππηνγξαθεκέλε κνξθή ηεο ηηκήο HTTP_USER_AGENT ζε κία πεξίνδν
εξγαζίαο:
$_SESSION['agent'] = md5($_SERVER['HTTP_USER_AGENT']);
Απειεπζέξσζε πφξσλ ηνπο νπνίνπο δεζκεχνπλ ηα απνηειέζκαηα θαη απνζχλδεζε απφ ηελ βάζε
δεδνκέλσλ:
mysqli_free_result($r);
mysqli_close($dbc);
΢ηε ζπλέρεηα ειέγρνπκε αλ ην email ηνπ ρξήζηε είλαη ίδην κε εθείλν ηνπ administrator:
if ($_SESSION['e_mail'] == EMAIL)
Αλ ηειηθά είλαη ίδην γίλεηαη ε αλαθαηεχζπλζε ηνπ ρξήζηε ζηε ζειίδα admin.php θαη δηαγξαθή ησλ
δεδνκέλσλ ηεο πξνζσξηλήο κλήκεο:

Σελίδα | 88
$url = BASE_URL . 'admin.php' ;
ob_end_clean();
header("Location: $url");
΢ην ηέινο θαινχκε ηελ ζπλάξηεζε exit() γηα λα ηεξκαηίζνπκε ηελ εθηέιεζε ηνπ ζελαξίνπ.
exit();
Αλ φκσο ν ρξήζηεο είλαη έλα απιφ κέινο ηεο ηζηνζειίδαο θαη φρη ν δηαρεηξηζηήο εθηεινχκε ηελ ίδηα
δηαδηθαζία κε ηελ δηαθνξά φηη αλαθαηεπζχλνπκε ηνλ ρξήζηε ζηε ζειίδα loggedin.php. Φπζηθά αλ ην
ζελάξην δελ εθηειέζηεθε ζσζηά εθηππψλνληαη ηα αλάινγα ζθάικαηα.

Κσδηθόο PHP (Δμόδνπ)


<?php
require_once ('c:/xampp/config.inc.php');
require_once ('C:/xampp/connect_to_mysql.php');

if (!isset($_SESSION['agent']) OR ($_SESSION['agent'] != md5($_SERVER['HTTP_USER_AGENT'])))


{
$url = BASE_URL .'false_login.php';
ob_end_clean();
header("Location : $url");
exit();
}else{
echo "<p>{$_SESSION['user_name']}, έρεηο ζπλδεζεί ζηε ζειίδα καο.</p>";
}

if (isset($_POST['entered_logout']))
{
$_SESSION = array();
session_destroy();
setcookie (session_name(), ' ', time()-3600, "/", ' ', 0, 0);
$url = BASE_URL .'logout.php';
ob_end_clean();
header("Location : $url");
exit();
}
?>

Πεξηγξαθή Κώδηθα
Πξψηα απφ φια πξέπεη λα ειέγμνπκε αλ έρεη νξηζηεί ε κεηαβιεηή $_SESSION['agent'] θαη αλ
ε θξππηνγξαθεκέλε ηηκή ηεο κεηαβιεηήο $_SERVER['HTTP_USER_AGENT'] δηαθέξεη απφ ηελ
ηηκή ηεο απνζεθεπκέλεο κεηαβιεηήο $_SESSION['agent']. Αλ θάπνηα απφ απηέο ηηο ζπλζήθεο
αιεζεχεη, ν ρξήζηεο ζα αλαθαηεπζπλζεί ζηελ ζειίδα false_login.php. Αιιηψο ζα εκθαληζηεί έλα
κήλπκα ελεκέξσζεο:
echo "<p>{$_SESSION['user_name']}, έρεηο ζπλδεζεί ζηε ζειίδα καο.</p>";
$_SESSION['user_name'] είλαη ην user_name ηνπ ρξήζηε πνπ είλαη απνζεθεπκέλν κέζα ζην
κεηξψν $_SESSION.

Αλ ν ρξήζηεο παηήζεη ην θνπκπί “Έμνδνο κέινπο” ζα εθηειεζηεί ην ζελάξην ηεο PHP:

Σελίδα | 89
if (isset($_POST['entered_logout']))

Γίλεηαη ε δηαγξαθεί φισλ ησλ κεηαβιεηψλ ηεο πεξηφδνπ εξγαζίαο: $_SESSION = array();

Έπεηηα δηαγξάθνληαη φια ηα δεδνκέλα ηεο πεξηφδνπ εξγαζίαο απφ ηνλ δηαθνκηζηή: session_destroy();

΢ηέιλεη έλα κπηζθφην πνπ έρεη ήδε ιήμεη γηα λα αληηθαηαζηήζεη ην ππάξρσλ κπηζθφην ζην
θπιινκεηξεηή. setcookie (session_name(), ' ', time()-3600, "/", ' ', 0, 0);

Σέινο γίλεηαη ε αλαθαηεχζπλζε ηνπ ρξήζηε ζηε ζειίδα logout.php, ε δηαγξαθή ησλ δεδνκέλσλ απφ
ηελ πξνζσξηλή κλήκε θαη ν ηεξκαηηζκφο εθηέιεζεο ηνπ ζελαξίνπ:
$url = BASE_URL .'logout.php';
ob_end_clean();
header("Location : $url");

4.5.3 Δπηθνηλσλία κε ηνλ δηαρεηξηζηή


Κώδηθαο PHP
<?php

if (isset($_POST['contacted']))
{
function spam_scrubber ($value)
{
$bad = array('to:', 'cc:', 'bcc:', 'contact-type:', 'mine-version:', 'multipart-mixed:',
'content-transfer-encoding:');
foreach ($bad as $v)
{
if (stripos($value, $v) !== FALSE) return ' ';
}
$value = str_replace (array("\r", "\n", "%a", "%0d"), ' ', $value);
trim($value);
}
$scrubbed = array_map('spam_scrubber', $_POST);
if (!empty($scrubbed['first_name']) && !empty($scrubbed['last_name']) &&
!empty($scrubbed['e-mail']) && !empty($scrubbed['comments']))
{
$body = "Όλνκα : {$scrubbed['first_name']}\nΔπώλπκν :
{$scrubbed['last_name']}\n\n΢ρόιηα : {$scrubbed['comments']}";
$body = wordwrap($body, 60);
mail('admin@localhost.com', 'Μήλπκα Υξήζηε', $body, "From: {$scrubbed['e-mail']}");
echo '<p>Δπραξηζηνύκε πνπ επηθνηλσλήζαηε καδί καο.</p>';
$_POST = array();
}else{
echo '<p>Παξαθαινύκε ζπκπιεξώζηε ζσζηά ηα ζηνηρεία ζαο.</p>';
}
}
?>

Σελίδα | 90
Πεξηγξαθή θώδηθα
Αλ ν ρξήζηεο παηήζεη ην θνπκπί “Απνζηνιή” ζα εθηειεζηεί ην ζελάξην ηεο PHP:
if (isset($_POST[„contacted‟]))

Οη πξνβιεκαηηθνί ραξαθηήξεο ηνπ κελχκαηνο ζα “ζπιιεθζνχλ” απφ ηε ζπλάξηεζε


spam_scrubber() ε νπνία δέρεηαη έλα φξηζκα, ηελ κεηαβιεηή $value: function spam_scrubber
($value)

Έπεηηα δεκηνπξγείηαη έλαο θαηάινγνο κε αλεπηζχκεηεο ζπκβνινζεηξέο πνπ αλ ππάξρνπλ ζηα


δεδνκέλα πνπ ππνβάιεη κηα θφξκα είλαη έλδεημε πξνζπάζεηαο απνζηνιήο αλεπηζχκεηεο
αιιεινγξαθίαο:
$bad = array('to:', 'cc:', 'bcc:', 'contact-type:', 'mine-version:', 'multipart-mixed:',
'content-transfer-encoding:');

Γηα λα δηεπθνιπλζεί ν έιεγρνο, νη ζπκβνινζεηξέο απνζεθεχνληαη ζε έλα κεηξψν πνπ


δηαηξέρεη έλαο βξφρνο: foreach ($bad as $v)

Γηαηξέρνληαο ηνλ πίλαθα κε έλαλ βξφρν ε ζπλάξηεζε stripos() ειέγρεη αλ ηα αλεπηζχκεηα


ζηνηρεία πεξηέρνληαη ζηε ζπκβνινζεηξά $value. Αλ λαη επηζηξέθεη κηα θελή ζπκβνινζεηξά θαη
ηεξκαηίδεη: if (stripos($value, $v) !== FALSE) return ' ';

΢ηε ζπλέρεηα γίλεηαη αληηθαηάζηαζε ησλ ραξαθηήξσλ αιιαγήο γξακκήο κε θελά δηαζηήκαηα.
Ζ ζπλάξηεζε str_replace() ειέγρεη ηελ ηηκή ηνπ 3νπ νξίζκαηνο ($value) θαη αληηθαζηζηά φιεο ηηο
παξνπζίεο ησλ ραξαθηήξσλ ηνπ 1νπ νξίζκαηνο κε ην ραξαθηήξα ή ηνπο ραξαθηήξεο ηνπ 2νπ
νξίζκαηνο: $value = str_replace (array("\r", "\n", "%a", "%0d"), ' ', $value);

Με ηελ ζπλάξηεζε trim() πεξηθφπηνπκε ηα θελά δηαζηήκαηα: trim($value);

Καινχκε ηελ ζπλάξηεζε spam_scrubber() κέζσ ηεο array_map() ε νπνία δέρεηαη ζαλ 1ν
φξηζκα ηελ ζπλάξηεζε θαη ζαλ 2ν έλα κεηξψν. Έηζη ε spam_scrubber θαιείηαη κηα θνξά γηα θάζε
ζηνηρείν ηνπ κεηξψνπ θαη ην απνηέιεζκα αλαζέηεηαη ζε κηα λέα κεηαβιεηή. ΢ην ζελάξην απηφ ην
κεηξψν $_POST πεξηέρεη έμη ζηνηρεία: first_name, last_name, e-mail, comments, contact θαη
contacted. Έηζη θαη ην κεηξψν $scrubbed ζα πεξηέρεη έμη ζηνηρεία: $scrubbed[„first_name‟],
$scrubbed[„last_name‟], $scrubbed[„e-mail‟], $scrubbed[„comments‟], $scrubbed[„contact‟],
$scrubbed[„contacted‟].
$scrubbed = array_map('spam_scrubber', $_POST);

Διέγρνπκε αλ ηα ηέζζεξα απηά κεηξψα έρνπλ ηηκή: if (!empty($scrubbed['first_name']) &&


!empty($scrubbed['last_name']) && !empty($scrubbed['e-mail']) &&
!empty($scrubbed['comments']))

Γεκηνπξγνχκε ην ζψκα ηνπ κελχκαηνο: $body = "Όλνκα : {$scrubbed['first_name']}\nΔπώλπκν :


{$scrubbed['last_name']}\n\n΢ρόιηα : {$scrubbed['comments']}";

Με ηελ ζπλάξηεζε wordwrap πξνζζέηνπκε έλαλ ραξαθηήξα αιιαγήο γξακκήο θάζε 60 ραξαθηήξεο:

Σελίδα | 91
$body = wordwrap($body, 60);

Με ηε ζπλάξηεζε mail() γίλεηαη ε απνζηνιή ηνπ κελχκαηνο - mail(πξνο, ζέκα, ζψκα, [θεθαιίδεο]).
mail('admin@localhost.com', 'Μήλπκα Υξήζηε', $body, "From: {$scrubbed['e-mail']}");

Δπεηδή ε θφξκα είλαη παξακέλνπζα νη ηηκέο ηεο θφξκαο αλ ε απνζηνιή ηνπ κελχκαηνο είλαη επηηπρήο
δελ ρξεηάδεηαη λα εκθαλίδνληαη μαλά ηα δεδνκέλα. Γηα λα ην απνθχγνπκε θαζαξίδνπκε ην κεηξψν
$_POST:
$_POST = array();

4.5.4 Γεκηνπξγία Forum


Κώδηθαο PHP
<?php

$q2 = "SELECT user_name, user_email, body_msg, date_entered FROM messages LIMIT 9";
$r2 = mysqli_query($dbc, $q2);

if (mysqli_num_rows($r2) >= 1)
{
while ($row2 = mysqli_fetch_array ($r2, MYSQLI_ASSOC))
{
echo "<p>{$row2['body_msg']}</p>";
echo "\n";
echo "<p>{$row2['date_entered']} - {$row2['user_name']}</p>";
echo "----------------------------------------------------------------------------------------------------------
-----------------------";
echo "\n";
}
}else{
echo “<p>Γελ ππάξρνπλ κελύκαηα.</p>”;
}
if (isset($_POST['sent']))
{
$errors = array();
$trimmed = array_map('trim',$_POST);
$un = $ue = $bmsg = FALSE;
if (empty($trimmed['user_name']))
{
$errors[] = 'Γελ ζπκπιεξώζαηε ηνλ όλνκά ζαο.';
}else{
if (preg_match("|^\w.{2,20}$|i", $trimmed['user_name']))
{
$un = mysqli_real_escape_string($dbc, $trimmed['user_name']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ην όλνκά ζαο.';
}

Σελίδα | 92
}

if (empty($trimmed['body_msg']))
{
$errors[] = 'Γελ δώζαηε ηα ζρόιηά ζαο.';
}else{
if (preg_match('|^\w.{2,400}$|i', $trimmed['body_msg']))
{
$bmsg = mysqli_real_escape_string($dbc, $trimmed['body_msg']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ηα ζρόιηά ζαο.';
}
}
if (!empty($trimmed['user_email']))
{
if (preg_match('/^[\w.-]+@[\w.]+\.[A-Za-z]{2,40}$/i', $trimmed['user_email']))
{
$ue = mysqli_real_escape_string($dbc, $trimmed['user_email']);
}else{
$errors[] = 'Σν email δελ είλαη έγθπξν.';
}
}
if (empty($errors))
{
$q = "INSERT INTO messages (user_name, user_email, body_msg, date_entered)
VALUES ('$un', '$ue', '$bmsg', NOW() )";
$r = mysqli_query($dbc, $q);
if ($r)
{
echo '<p>Η απνζηνιή νινθιεξώζεθε κε επηηπρία. Σν ζρόιηό ζαο δελ ζα
εκθαληζηεί κέρξη λα εγθξηζεί από ηνπο δηαρεηξηζηέο.</p>';

}else{
$errors[] = 'Η ζύλδεζε κε ηελ Βάζε Γεδνκέλσλ δελ ήηαλ εθηθηή. Παξαθαινύκε
πξνζπαζήζηε μαλά.';
}
mysqli_close($dbc);

}else{
echo '<p>Βξέζεθαλ ιάζε</p>';
foreach ($errors as $msg)
{
echo " $msg\n<br />";
}
}
}
?>

Σελίδα | 93
Πεξηγξαθή Κώδηθα
΢ηε αξρή εθηειείηαη έλα εξψηεκα SELECT κε ην νπνίν επηιέγνπκε ηηο θαηαρσξήζεηο πνπ
ππάξρνπλ ζηνλ πίλαθα messages. Σν ραξαθηεξηζηηθφ LIMIT δείρλεη πφζεο εγγξαθέο ζα εκθαληζηνχλ.
Απηφ γίλεηαη γηα λα κελ εκθαλίδεηαη ακέζσο ην κήλπκα πνπ ν θάζε ρξήζηεο ζα ζηέιλεη, αιιά φηαλ
θαη αλ ην απνθαζίζεη ν δηαρεηξηζηήο.
Έπεηηα κέζσ ελφο βξφρνπ (while) εκθαλίδνπκε ηα κελχκαηα πνπ αλαθηήζακε απφ ηνλ πίλαθα
κέζσ ηνπ εξσηήκαηνο.
Αλ ν ρξήζηεο παηήζεη ην θνπκπί “Απνζηνιή” ζα εθηειεζηεί ην ζελάξην ηεο PHP:
if (isset($_POST[„sent‟]))
Όπσο ζε άιια ζελάξηα έηζη θαη εδψ ειέγρνπκε αλ ν ρξήζηεο έρεη ζπκπιεξψζεη φια ηα πεδία
θαη αλ νη ηηκέο ζπκθσλνχλ κε ηα αλάινγα κνηίβα.
Μφλν αλ δελ ππάξρεη θαλέλα ιάζνο εθηειείηαη ην εξψηεκα εηζαγσγήο πνπ πξνζζέηεη ηα
θαηλνχξηα δεδνκέλα ζηνλ πίλαθα messages.
΢ην ηέινο αλ ε θαηαρψξεζε ησλ ζηνηρείσλ είλαη επηηπρήο εκθαλίδεηαη έλα κήλπκα
ελεκέξσζεο, αιιηψο ηππψλνληαη ηα ζθάικαηα πνπ πξνέθπςαλ.

Ο θψδηθάο γηα ηελ πεξίπησζε ηνπ administrator είλαη δηαθνξεηηθφο, γηαηί δελ ππάξρεη θφξκα
απνζηνιήο κελχκαηνο. Δκθαλίδνληαη κφλν ηα δεδνκέλα πνπ νη ρξήζηεο έρνπλ ζηείιεη, αιιά ρσξίο
πεξηνξηζκφ.

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #forum { .bookstore #forum form {
color: #000000; text-align: right;
font-size: 16px; }
font-weight: bolder;
margin-right: 30px;
margin-left: 30px;
padding-top: 50px;
background-image:
url(background%20img.jpg);
background-repeat: repeat-y;
}

Πίλαθαο 4.23: Φύιια CSS γηα ηελ κνξθνπνίεζε ηνπ Forum

Κώδηθαο PHP (forum_admin.php)


<?php

$q2 = "SELECT user_name, user_email, body_msg, date_entered FROM messages";


$r2 = mysqli_query($dbc, $q2);

if (mysqli_num_rows($r2) >= 1)
{
while ($row2 = mysqli_fetch_array ($r2, MYSQLI_ASSOC))
{
echo "<p>{$row2['body_msg']}</p>";

Σελίδα | 94
echo "\n";
echo "<p>{$row2['date_entered']} - {$row2['user_name']}</p>";
echo "----------------------------------------------------------------------------------------------------------
-----------------------";
echo "\n";
}
}else{
echo "<p>Γελ ππάξρνπλ κελύκαηα.</p>";
}
?>

4.5.5 Δκθάληζε Υξεζηώλ


Δίλαη πνιχ ζεκαληηθφ γηα ηνλ δηαρεηξηζηή κηαο ηζηνζειίδαο λα γλσξίδεη πνηνη ρξήζηεο είλαη
εγγεγξακκέλνη ζε απηή. Γηα ην ζθνπφ απηφ δεκηνπξγήζεθε κία ζειίδα (view_users.php) φπνπ
εθηππψλνληαη ηα ζηνηρεία ησλ ρξεζηψλ θαη ζηε νπνία έρεη πξφζβαζε κφλν ν δηαρεηξηζηήο

Κώδηθαο PHP
<?php

echo '
<tr>
<td height="55" class="style3"><div align="right" class="style6 style11">Πίλαθαο Υξεζηώλ</div></td>
</tr>
<tr>
<td><table width="100%" border="0">
<tr>
<td width="21%"><div align="left">Όλνκα Υξήζηε</div></td>
<td width="17%"><div align="center">Email</div></td>
<td width="15%"><div align="center">Πόιε</div></td>
<td width="14%"><div align="center">Γηεύζπλζε</div></td>
<td width="12%"><div align="center">Σ.Κ.</div></td>
<td width="13%"><div align="center">Ηκεξνκελία Δγγξαθήο</div></td>
<td width="8%"><div align="center">Αθαίξεζε</div></td>
</tr>
</table></td>
</tr>
<tr>
<td height="21">-------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------- </td>
</tr>';

$uid = $un = $un2 = $e = $c = $ad = $tel = $f = $zip = $date = FALSE;

$q = "SELECT user_id, CONCAT(first_name, ' ', last_name) AS user_name, e_mail, city, address,
zip_code, registration_date FROM users ORDER BY registration_date";
$r = mysqli_query($dbc, $q);

Σελίδα | 95
if (mysqli_num_rows($r) < 1)
{
echo '<p> Γελ ππάξρνπλ εγγεγξακκέλνη ρξήζηεο.</p>';
}else{

while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC))


{
$un = $row['user_name'];
$e = $row['e_mail'];
$c = $row['city'];
$ad = $row['address'];
$zip = $row['zip_code'];
$date = $row['registration_date'];

echo '<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="21%"><div align="left">'.$un.'</div></td>
<td width="17%"><div align="center">'.$e.'</div></td>
<td width="15%"><div align="center">'.$c.'</div></td>
<td width="14%"><div align="center">'.$ad.'</div></td>
<td width="12%"><div align="center">'.$zip.'</div></td>
<td width="13%"><div align="center">'.$date.'</div></td>
<td width="8%"><div align="center"><div id="but_delete">'."<a
href=\"delete_user.php?uid={$row['user_id']}\">".'<img src="includes/delete kal.gif" alt="butdel"
width="20" height="20" />'."</a>".'</div></div></td>
</tr>
</table>
</td>
</tr>
';
}
echo '
</tr>
<td height="30"></td>
<tr>
<td height="55" class="style3"><div align="right" class="style6 style11">
<div align="left" class="style7">Δπηθνηλσλία</div></div>
</td>
</tr>

<tr>
<td><table width="100%" border="0">
<tr>
<td width="25%"><div align="left">Όλνκα Υξήζηε</div></td>
<td width="17%"><div align="center">Σειέθσλν</div></td>
<td width="15%"><div align="center">Fax</div></td>
<td width="43%">&nbsp;</td>
</tr>
</table></td>

Σελίδα | 96
</tr>
<td height="21">------------------------------------------------------------------------------------------
-----------</td>';

$q2 = "SELECT CONCAT(first_name, ' ', last_name) AS user_name, telefone, fax


FROM users ORDER BY registration_date";
$r2 = mysqli_query($dbc, $q2);
if ($r2)
{
while ($row2 = mysqli_fetch_array ($r2, MYSQLI_ASSOC))
{
$un2 = $row2['user_name'];
$tel = $row2['telefone'];
$f = $row2['fax'];
echo '<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="25%"><div align="left">'.$un2.'</div></td>
<td width="17%"><div align="center">'.$tel.'</div></td>
<td width="15%"><div align="center">'.$f.'</div></td>
<td width="43%">&nbsp;</td>
</tr>
</table>
</td>
</tr>
';
}
}
}
?>

Πεξηγξαθή Κώδηθα
Σν ζελάξην απηφ δε δηαθέξεη πνιχ απφ ηα πξνεγνχκελα παξά κφλν ζηελ εθηέιεζε ηεο
εληνιήο echo(). Γηα λα εκθαλίδεηαη ν θψδηθαο ηεο HTML κέζσ ηεο echo πξέπεη λα πεξηθιείεηαη ζε
κνλά εηζαγσγηθά. Όηαλ φκσο επηζπκνχκε λα εθηππψζνπκε κηα κεηαβιεηή ηεο PHP πξέπεη λα
αιιάδνπκε ηα κνλά εηζαγσγηθά ζε δηπιά.
πρ. echo „θώδηθαο html‟.”κεηαβιεηή”.‟ θώδηθαο html‟;
΢ηελ αξρή εθηππψλνπκε κέζσ ηεο echo() ηα νλφκαηα ησλ ζηειψλ ( Όλνκα Υξήζηε, Email,
Πφιε…) θαη έπεηηα κέζσ ελφο εξσηήκαηνο επηινγήο αλαθηάκε ηα ζηνηρεία ηνπ πίλαθα users απφ ηε
βάζε δεδνκέλσλ. Με ηελ ζπλάξηεζε CONCAT() πξαγκαηνπνηείηαη ε ζπλέλσζε δχν ζηειψλ ηνπ
πίλαθα users. Σεο ζηήιεο first_name θαη ηεο ζηήιεο last_name. Έπεηηα ζηε ζπλέλσζε απηή δίλνπκε
έλα φλνκα: user_name.
Αλ ην εξψηεκα δελ επηζηξέςεη θακία ηηκή ηφηε δελ ππάξρνπλ εγγεγξακκέλνη ρξήζηεο ζηε
βάζε δεδνκέλσλ. Αιιηψο κέζσ ελφο βξφρνπ while εκθαλίδνπκε ηα δεδνκέλα ησλ ρξεζηψλ.
Μηα δπλαηφηαηα πνπ έρεη ν δηαρεηξηζηήο είλαη λα δηαγξάςεη φπνηνλ ρξήζηε επηζπκεί. Απηφ
επηηπγράλεηαη κέζσ ελφο θνπκπηνχ δηαγξαθείο πνπ καο κεηαβηβάδεη ζηε ζειίδα delete_user.php. Γηα
λα γλσξίδνπκε φκσο πνηνο είλαη ν ρξήζηεο πνπ ζα δηαγξαθεί πξέπεη λα κεηαβηβάζνπκε ζηε ζειίδα

Σελίδα | 97
delete_user.php ην θσδηθφ ηνπ ρξήζηε (user_id). Απηφ γίλεηαη κε ηελ πξνζάξηεζε ηεο κεηαβιεηήο
$uid ζηελ URL δηεχζπλζε ρξεζηκνπνηψληαο ηελ ζχληαμε:
page.php?name1=value1&name2=value2… => <a href=\"delete_user.php?uid={$row['user_id']}\">

page.php = delete_user.php, name1 = uid, value1 = {$row['user_id']}


Οη δχν μερσξηζηέο SELECT έγηλαλ γηα ιφγνπο κνξθνπνίεζεο. ΢ηελ δεχηεξε επηιέγνπκε ηα
ζηνηρεία επηθνηλσλίαο.

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #view_users { .bookstore #but_delete a{
background-color: #000000; color: #F5F1CE;
color: #000000; }
font-size: 14px;
font-weight: bolder;
background-repeat: repeat-y;
margin-right: 30px;
margin-left: 30px;
padding-top: 30px;
background-image: url(background%20img.jpg);
padding-bottom: 70px;
padding-left: 10px;
}

Πίλαθαο 4.24: Φύιια CSS γηα ηελ κνξθνπνίεζε ηνπ πίλαθα ρξεζηώλ

4.5.6 Γηαγξαθή Υξήζηε


Κώδηθαο PHP
<?php

echo '
<tr>
<td height="55" class="style3"><div align="right" class="style6 style11">Πίλαθαο Υξεζηώλ</div></td>
</tr>
<tr>
<td><table width="100%" border="0">
<tr>
<td width="21%"><div align="left">Όλνκα Υξήζηε</div></td>
<td width="17%"><div align="center">Email</div></td>
<td width="15%"><div align="center">Πόιε</div></td>
<td width="14%"><div align="center">Γηεύζπλζε</div></td>
<td width="12%"><div align="center">Σ.Κ.</div></td>
<td width="13%"><div align="center">Ηκεξνκελία Δγγξαθήο</div></td>
<td width="8%"><div align="center">Αθαίξεζε</div></td>
</tr>
</table></td>
</tr>
<tr>

Σελίδα | 98
<td height="21">-------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------- </td>
</tr>';

$un = $un2 = $e = $c = $ad = $tel = $f = $zip = $date = FALSE;


if (isset($_GET['uid']) && is_numeric($_GET['uid']))
{
$uid = (int) $_GET['uid'];
$q = "DELETE FROM users WHERE user_id = $uid ";
$r = mysqli_query($dbc, $q);
if ($r)
{
$q2 = "SELECT user_id, CONCAT(first_name, ' ', last_name) AS user_name, e_mail,
city, address, zip_code, registration_date FROM users ORDER BY registration_date";
$r2 = mysqli_query($dbc, $q2);
if (mysqli_num_rows($r2) < 1)
{
echo '<p> Γελ ππάξρνπλ εγγεγξακκέλνη ρξήζηεο.</p>';
}else{
while ($row = mysqli_fetch_array ($r2, MYSQLI_ASSOC))
{
$un = $row['user_name'];
$e = $row['e_mail'];
$c = $row['city'];
$ad = $row['address'];
$zip = $row['zip_code'];
$date = $row['registration_date'];

echo '<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="21%"><div align="left">'.$un.'</div></td>
<td width="17%"><div align="center">'.$e.'</div></td>
<td width="15%"><div align="center">'.$c.'</div></td>
<td width="14%"><div align="center">'.$ad.'</div></td>
<td width="12%"><div align="center">'.$zip.'</div></td>
<td width="13%"><div align="center">'.$date.'</div></td>
<td width="8%"><div align="center"><div id="but_delete">'."<a
href=\"delete_user.php?uid = {$row['user_id']}\">".'<img src="includes/delete kal.gif" alt="butdel"
width="20" height="20" />'."</a>".'</div></div></td>
</tr>
</table>
</td>
</tr>
';
}
echo '
</tr>
<td height="30"></td>
<tr>

Σελίδα | 99
<td height="55" class="style3"><div align="right" class="style6 style11">
<div align="left" class="style7">Δπηθνηλσλία</div>
</div></td>
</tr>

<tr>
<td><table width="100%" border="0">
<tr>
<td width="25%"><div align="left">Όλνκα Υξήζηε</div></td>
<td width="17%"><div align="center">Σειέθσλν</div></td>
<td width="15%"><div align="center">Fax</div></td>
<td width="43%">&nbsp;</td>
</tr>
</table></td>
</tr>
<td height="21">-----------------------------------------------------------------------------
------------------------</td>';

$q3 = "SELECT CONCAT(first_name, ' ', last_name) AS user_name, telefone,


fax FROM users ORDER BY registration_date";
$r3 = mysqli_query($dbc, $q3);
if ($r3)
{
while ($row2 = mysqli_fetch_array ($r3, MYSQLI_ASSOC))
{
$un2 = $row2['user_name'];
$tel = $row2['telefone'];
$f = $row2['fax'];
echo '<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="25%"><div align="left">'.$un2.'</div></td>
<td width="17%"><div align="center">'.$tel.'</div></td>
<td width="15%"><div align="center">'.$f.'</div></td>
<td width="43%">&nbsp;</td>
</tr>
</table>
</td>
</tr>
';
}
}
}
}
}
?>

Σελίδα | 100
Πεξηγξαθή Κώδηθα
Ζ εκθάληζε ησλ ζηνηρείσλ γίλεηαη κε ηνλ ίδην ηξφπν φπσο θαη ζην ζελάξην ηεο ζειίδαο
view_users.php. Ζ δηαθνξά βξίζθεηαη ζηελ πξφζζεζε ηνπ εξσηήκαηνο DELETE κε ην νπνίν γίλεηαη ε
δηαγξαθή ηνπ ρξήζηε.
Μέζσ ηνπ κεηξψνπ $_GET παίξλνπκε ηνλ θσδηθφ ηνπ ρξήζηε ($uid) θαη ειέγρνπκε αλ είλαη
αξηζκφο θαη κάιηζηα αθέξαηνο. Απηφο ν έιεγρνο γίλεηαη γηα λα κελ πξνθχςεη ζθάικα θαηά ηελ
εθηέιεζε ηνπ εξσηήκαηνο.

4.5.7 Αιιαγή ΢ηνηρείσλ Λνγαξηαζκνύ


Κώδηθαο PHP
<?php
$un = $_SESSION['user_name'];
$fn = $_SESSION['first_name'];
$ln = $_SESSION['last_name'];
$ad = $_SESSION['address'];
$c = $_SESSION['city'];
$zip = $_SESSION['zip_code'];
$tel = $_SESSION['telefone'];
$fax = $_SESSION['fax'];
$e = $_SESSION['e_mail'];
$p = $_SESSION['pass'];

if (isset($_POST['changed']))
{
$errors = array();
$trimmed = array_map('trim',$_POST);
if (empty($trimmed['user_name']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Όλνκά ζαο.';
}else{
if (preg_match("|^\w.{2,20}$|i", $trimmed['user_name']))
{
$un = mysqli_real_escape_string($dbc, $trimmed['user_name']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ην όλνκα ρξήζηε.';
}
}
if (empty($trimmed['first_name']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Όλνκά ζαο.';
}else{
if (preg_match("|^\w.{2,20}$|i", $trimmed['first_name']))
{
$fn = mysqli_real_escape_string($dbc, $trimmed['first_name']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ην κηθξό ζαο όλνκα.';
}

Σελίδα | 101
}
if (empty($trimmed['last_name']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Δπώλπκό ζαο.';
}else{
if (preg_match('/^\w.{2,40}$/i', $trimmed['last_name']))
{
$ln = mysqli_real_escape_string($dbc, $trimmed['last_name']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ην επώλπκό ζαο.';
}
}
if (empty($trimmed['address']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ηε Γηεύζπλζή ζαο.';
}else{
if (preg_match('/^\w.+[ ][0-9]{2,40}$/i', $trimmed['address']))
{
$ad = mysqli_real_escape_string($dbc, $trimmed['address']);
}else{
$errors[] = 'Μόλν ςεθία θαη ραξαθηήξεο επηηξέπνληαη γηα ην όλνκα
δηεύζπλζεο.';
}
}
if (empty($trimmed['city']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ηελ Πόιε ζαο.';
}else{
if (preg_match('/^\w.{2,30}$/i', $trimmed['city']))
{
$c = mysqli_real_escape_string($dbc, $trimmed['city']);
}else{
$errors[] = 'Μόλν ραξαθηήξεο επηηξέπνληαη γηα ην όλνκα ηεο πόιεο ζαο.';
}
}
if (empty($trimmed['zip_code']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Σαρπδξνκηθό ζαο Κώδηθα.';
}else{
if (preg_match('/^[\d-]{2,10}$/i', $trimmed['zip_code']))
{
$zip = mysqli_real_escape_string($dbc, $trimmed['zip_code']);
}else{
$errors[] = 'Μόλν ςεθία θαη ε "-" επηηξέπνληαη γηα ηνv ηαρπδξνκηθό θώδηθα.';
}
}
if (empty($trimmed['telefone']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Σειέθσλό ζαο.';
}else{
if (preg_match('/^[\d-]{2,30}$/i', $trimmed['telefone']))

Σελίδα | 102
{
$tel = mysqli_real_escape_string($dbc, $trimmed['telefone']);
}else{
$errors[] = 'Μόλν ςεθία θαη ε "-" επηηξέπνληαη γηα ηνv αξηζκό ηειεθώλνπ.';
}
}
if (empty($trimmed['fax']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ηνv αξηζκό FAX.';
}else{
if (preg_match('/^[\d-]{2,30}$/i', $trimmed['fax']))
{
$fax = mysqli_real_escape_string($dbc, $trimmed['fax']);
}else{
$errors[] = 'Μόλν ςεθία θαη ε "-" επηηξέπνληαη γηα ηνv αξηζκό Fax.';
}
}
if (empty($trimmed['e_mail']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Email ζαο.';
}else{
if (preg_match('/^[\w.-]+@[\w.]+\.[A-Za-z]{2,40}$/i', $trimmed['e_mail']))
{
$e = mysqli_real_escape_string($dbc, $trimmed['e_mail']);
}else{
$errors[] = 'Σν email δελ είλαη έγθπξν.';
}
}
if (empty($trimmed['pass1']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην Κσδηθό ζαο.';
}else{
if (preg_match('/^\w{2,40}$/i', $trimmed['pass1']))
{
if ($trimmed['pass1'] == $trimmed['pass2'])
{
$p = mysqli_real_escape_string($dbc, $trimmed['pass1']);
}else{
$errors[] = 'Ο Κσδηθόο δελ επηβεβαηώζεθε ζσζηά.';
}
}else{
$errors[] = 'Μόλν ςεθία θαη ραξαθηήξεο επηηξέπνληαη γηα ην θσδηθό
πξόζβαζεο.';
}
}

if (empty($errors))
{
$q = "UPDATE users SET user_name = '$un', first_name = '$fn', last_name = '$ln',
e_mail = '$e', address = '$ad', city = '$c', zip_code = '$zip', telefone = '$tel', fax = '$fax', pass =
SHA1('$p'), registration_date = NOW() WHERE user_id={$_SESSION['user_id']}";

Σελίδα | 103
$r = mysqli_query($dbc, $q);
if (mysqli_affected_rows($dbc) == 1)
{
echo '<p>Η αιιαγή ησλ ζηνηρείσλ ήηαλ επηηπρείο.</p>';
$q2 = "SELECT user_id, user_name, first_name, last_name, e_mail, address,
city, telefone, fax, zip_code FROM users WHERE user_id={$_SESSION['user_id']}";
$r2 = mysqli_query($dbc, $q2);
if ($r2)
{
$_SESSION = array();
$_SESSION = mysqli_fetch_array ($r2, MYSQLI_ASSOC);
}else{
echo '<p>Η ζύλδεζε κε ηελ Βάζε Γεδνκέλσλ δελ ήηαλ εθηθηή.
Παξαθαινύκε πξνζπαζήζηε μαλά.</p>';
}
}else{
echo '<p>Γελ ήηαλ δπλαηή ε αλαλέσζε ησλ ζηνηρείσλ ζαο.</p>';
}
mysqli_close($dbc);
}else{
echo '<p>Βξέζεθαλ ιάζε</p>';
foreach ($errors as $msg)
{
echo " $msg\n<br />";
}
}
}
?>

Πεξηγξαθή Κώδηθα
΢ηελ αξρή δίλνπκε αξρηθέο ηηκέο ζηηο κεηαβιεηέο πνπ ζα ρξεζηκνπνηήζνπκε γηα ηελ εθηέιεζε
ηνπ ζελαξίνπ. Οη κεηαβιεηέο απηέο παίξλνπλ ηα δεδνκέλα πνπ είλαη απνζεθεπκέλα ζην κεηξψν
S_SESSION θαη αληηζηνηρνχλ ζηα ζηνηρεία ηνπ ρξήζηε.
Όηαλ ινηπφλ ν ρξήζηεο θαηαρσξίζεη ηηο θαηλνχξγηεο ηηκέο ζηα πεδία ηηο θφξκαο θαη παηήζεη
ην θνπκπί “Καηαρψξεζε ΢ηνηρείσλ” - if (isset($_POST['changed'])) – πξψηα ζα γίλεη έιεγρνο ησλ
θαηλνχξησλ δεδνκέλσλ φπσο ζηελ θφξκα εγγξαθήο ρξεζηψλ θαη αλ δελ ππάξμνπλ ζθάικαηα ζα
εθηειεζηή ην εξψηεκα ηεο SQL γηα ηελ αλαλέσζε ησλ ζηνηρείσλ ηνπ ρξήζηε.
$q = "UPDATE users SET user_name = '$un', first_name = '$fn', last_name = '$ln', e_mail = '$e', address
= '$ad', city = '$c', zip_code = '$zip', telefone = '$tel', fax = '$fax', pass = SHA1('$p'), registration_date =
NOW() WHERE user_id={$_SESSION['user_id']}";
Με ην εξψηεκα UPDATE αιιάδνπκε ηηο ππάξρνπζεο θαηαρσξίζεηο ηνπ πίλαθα users κε ηα λέα
δεδνκέλα. Ζ αιιαγή φκσο δελ γίλεηαη ζε φιεο ηηο εγγξαθέο παξά κφλν ζε εθείλε πνπ ν θσδηθφο ηνπ
εγγεγξακκέλνπ ρξήζηε (user_id) ηζνχηαη κε ηνλ θσδηθφ ηνπ ρξήζηε πνπ εθηειεί ηελ θφξκα
{$_SESSION['user_id']}.
Αλ ε εθηέιεζε ηνπ εξσηήκαηνο είλαη επηηπρήο επηιέγνπκε ηα θαηλνχξηα δεδνκέλα ηνπ ρξήζηε
απφ ηνλ πίλαθα users θαη θαηαρσξνχκε ηηο λέεο ηηκέο ζην κεηξψν $_SESSION αθνχ πξψηα ην
αδεηάζνπκε.

Σελίδα | 104
$_SESSION = array();
$_SESSION = mysqli_fetch_array ($r2, MYSQLI_ASSOC);

Φόξκα Αιιαγήο ζηνηρείσλ

<form name="register" method="post" action="allagh_stoixeiwn.php">


<table width="100%" border="0"><tr>
<td width="96%" height="55" class="style3"><div align="right" class="style8
style11">Αιιαγή ΢ηνηρείσλ</div></td></tr>
</table>

<p><span class="red">*</span> Όλνκα Υξήζηε:


<input type="text" name="user_name" size="40" maxlength="20" value="<?php echo $un; ?>" /></p>
<p><span class="red">*</span> Όλνκα :
<input type="text" name="first_name" size="40" maxlength="20" value="<?php echo $fn; ?>" /></p>
<p><span class="red">*</span> Δπώλπκν :
<input type="text" name="last_name" size="40" maxlength="40" value="<?php echo $ln; ?>" /></p>
<p><span class="red">*</span> Γηεύζπλζε :
<input type="text" name="address" size="40" maxlength="40" value="<?php echo $ad; ?>" /></p>
<p><span class="red">*</span> Πόιε :
<input type="text" name="city" size="40" maxlength="30" value="<?php echo $c; ?>" /></p>
<p><span class="red">*</span> Σ.Κ. :
<input type="text" name="zip_code" size="40" maxlength="10" value="<?php echo $zip; ?>" /></p>
<p><span class="red">*</span> Σειέθσλν :
<input type="text" name="telefone" size="40" maxlength="30" value="<?php echo $tel; ?>" /></p>
<p><span class="red">*</span> Fax :
<input type="text" name="fax" size="40" maxlength="30" value="<?php echo $fax; ?>" /></p>
<p><span class="red">*</span> Email :
<input type="text" name="e_mail" size="40" maxlength="30" value="<?php echo $e; ?>" /></p>
<p><span class="red">*</span> Κσδηθόο πξόζβαζεο :
<input type="password" name="pass1" size="40" maxlength="40" /></p>
<p><span class="red">*</span> Δπηβεβαίσζε θσδηθνύ πξόζβαζεο :
<input type="password" name="pass2" size="40" maxlength="40" /></p>

<p>&nbsp;</p>
<p align="right"><input type="submit" name="change" value="Καηαρώξεζε ΢ηνηρείσλ" /></p>
<input type="hidden" name="changed" value="TRUE" />

</form>

Σν ίδην ζελάξην θαη ε ίδηα θφξκα εθηειείηαη θαη γηα ηελ αιιαγή ησλ ζηνηρείσλ ηνπ δηαρεηξηζηή.

Σελίδα | 105
Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε
.bookstore #text_erea { .bookstore #text_erea form{
margin-right: 30px; text-align: right;
margin-left: 30px; width: 570px;
color: #000000; font-weight: bold;
font-family: "Times New Roman", Times, serif; margin-right: 30px;
background-color: #000000; margin-left: 280px;
background-repeat: repeat-y; padding-bottom: 20px;
background-image: }
url(background%20img.jpg);
font-size: 16px;
padding-top: 50px;
}

Πίλαθαο 4.25: Φύιια CSS γηα ηελ κνξθνπνίεζε ηεο θόξκαο αιιαγήο ζηνηρείσλ

4.4.8 Δκθάληζε Βηβιίσλ


Σα βηβιία ηεο ηζηνζειίδαο είλαη ρσξηζκέλα ζε δηάθνξεο θαηεγνξίεο (Best Sellers, Μαγεηξηθή,
Δθπαίδεπζε, Πξνηεηλφκελα θ.α.) φπνπ εκθαλίδνληαη κφλν ηξία απφ ηα ζηνηρεία ηνπο: ν ηίηινο, ν
ζπγγξαθέαο θαη ν εθδφηεο. Ο ρξήζηεο κπνξεί λα έρεη πξφζβαζε ζε φια ηα ραξαθηεξηζηηθά ηνπ
βηβιίνπ πνπ επηζπκεί παηψληαο πάλσ ζηνλ ηίηιν ηνπ θάζε βηβιίνπ ν νπνίνο απνηειεί ζχλδεζκν πξνο
ηελ αληίζηνηρε ζειίδα εκθάληζεο φισλ ησλ ραξαθηεξηζηηθψλ.

΢ελάξην Δκθάληζε Βηβιίσλ Best Seller


<?php

$ath_fn = $ath_ln = $ath_fn2 = $img = FALSE;


$q2 = "SELECT book_name, author_fn, author_ln, author2_fn, author2_ln, editor_name,
image_name_small, best_url FROM books, authors, editors WHERE best_book =1 AND
books.author_id = authors.author_id AND books.editor_id = editors.editor_id ORDER BY book_id
DESC";
$r2 = mysqli_query($dbc, $q2);
if ($r2)
{
while ($row = mysqli_fetch_array ($r2, MYSQLI_ASSOC))
{
$ath_fn = $row['author_fn'];
$ath_fn2 = $row['author2_fn'];
$ath_ln = $row['author2_ln'];
$img = "includes/books images/{$row['image_name_small']}";
echo '
<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="27%">'."<img src=\"".$img."\" />".'</td>

Σελίδα | 106
<td width="73%">
<div id="details">
<table width="100%" border="0">
<tr>
<td width="24%" height="21">Σίηινο: </td>
<td width="76%">'."<a href=\"".$row['best_url']."\"> <p>{$row['book_name']}</p> </a>".'</td>
</tr>
<tr>
<td width="24%" height="21">΢πγγξαθέαο:</td>
<td width="76%">';
if ($ath_fn != 'NULL')
{
echo "$ath_fn, ";
}

echo "{$row['author_ln']}";

if ($ath_fn2 != 'NULL')
{
echo " / $ath_fn2";
}
if ($ath_ln != 'NULL')
{
echo ", $ath_ln";
}
echo '</td>
</tr>
<tr>
<td width="24%" height="21">Δθδόηεο: </td>
<td width="76%">'."{$row['editor_name']}".'</td>
</tr>
<tr>
</table>
</div>
</td>
</tr>
</table> </td>
</tr>
<td height="23">--------------------------------------------------------------------------------
-----------------------------------------</td>
</tr>
';
}}?>

Σελίδα | 107
Πεξηγξαθή ΢ελαξίνπ
΢ηελ αξρή επηιέγνπκε ηα δεδνκέλα ησλ πηλάθσλ books, authors θαη editors απφ ηελ βάζε
δεδνκέλσλ. ΢ηνλ πίλαθα books ππάξρνπλ ηξείο ζηήιεο πνπ θαζνξίδνπλ αλ ην βηβιίν αλήθεη ζηα Best
sellers, ζηηο Νέεο Κπθινθνξίεο ή ζηα Πξνηεηλφκελα. Απηέο είλαη νη new_book, best_book θαη
sug_book. Αλ θάπνηα απφ απηέο έρεη ηηκή 1 ηφηε ην βηβιίν αλήθεη ζε κηα απφ απηέο ηηο θαηεγνξίεο.
Γηα λα επηιέμνπκε ηα βηβιία πνπ αλήθνπλ ζηα Best Sellers γξάθνπκε:
WHERE best_book =1
Ζ ζπλέλσζε ησλ πηλάθσλ γίλεηαη κέζσ ησλ μέλσλ θιεηδηψλ:
books.author_id = authors.author_id AND books.editor_id = editors.editor_id
΢ην ηέινο ηαμηλνκνχκε ηα δεδνκέλα κε βάζε ηνλ θσδηθφ (book_id) θαη κε θζίλνπζα ζεηξά
(DESC) έηζη ψζηε φηαλ πξνζζέηνπκε έλα βηβιίν ζηελ ιίζηα λα εκθαλίδεηαη πξψην.
Αλ δελ πξνθχςεη θάπνην ζθάικα κε ηελ εθηέιεζε ηνπ εξσηήκαηνο εκθαλίδνπκε ηα δεδνκέλα
κέζσ ελφο βξφρνπ. Σα δεδνκέλα απηά αθνξνχλ ηνλ ηίηιν, ηνπο ζπγγξαθείο, ηνλ εθδφηε, κηα εηθφλα
θαη ην url πνπ αληηζηνηρεί ζην θάζε βηβιίν (ην url αιιάδεη αλάινγα κε ηελ ηδηφηεηα ηνπ ρξήζηε).
Δπίζεο είλαη πνιχ πηζαλφ ην φλνκα θάπνηνπ ζπγγξαθέα λα έρεη NULL ηηκή, αθνχ ην κφλν
ππνρξεσηηθφ πεδίν είλαη ην επψλπκν ηνπ πξψηνπ ζπγγξαθέα. Γη‟ απηφ ην ιφγν πξέπεη πξψηα λα
γίλεηαη έιεγρνο απηψλ ησλ ηηκψλ θαη κεηά ε εθηχπσζή ηνπο.
Σν ζελάξην απηφ είλαη ίδην γηα φιεο ηηο θαηεγνξίεο ηεο ηζηνζειίδαο. Ζ κφλν πνπ δηαθέξεη είλαη
ην εξψηεκα ηεο SQL, αθνχ ηα δεδνκέλα αιιάδνπλ γηα θάζε θαηεγνξία.

Νέεο Κπθινθνξίεο SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,


editor_name, image_name_small, new_url FROM books, authors, editors
WHERE new_book =1 AND books.author_id = authors.author_id AND
books.editor_id = editors.editor_id ORDER BY book_id DESC
Πξνηεηλόκελα βηβιία SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,
editor_name, image_name_small, sug_url FROM books, authors, editors
WHERE sug_book =1 AND books.author_id = authors.author_id AND
books.editor_id = editors.editor_id ORDER BY book_id DESC
Δθπαίδεπζε SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,
editor_name, image_name_small, url FROM books, authors, editors
WHERE category_id =1 AND books.author_id = authors.author_id AND
books.editor_id = editors.editor_id ORDER BY book_id DESC
Λνγνηερλία SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,
editor_name, image_name_small, url FROM books, authors, editors
WHERE category_id =2 AND books.author_id = authors.author_id AND
books.editor_id = editors.editor_id ORDER BY book_id DESC
Φπρνινγία SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,
editor_name, image_name_small, url FROM books, authors, editors
WHERE category_id =3 AND books.author_id = authors.author_id AND
books.editor_id = editors.editor_id ORDER BY book_id DESC
Θξεζθεία SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,
editor_name, image_name_small, url FROM books, authors, editors

Σελίδα | 108
WHERE category_id =5 AND books.author_id = authors.author_id AND
books.editor_id = editors.editor_id ORDER BY book_id DESC
Φηινζνθία SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,
editor_name, image_name_small, url FROM books, authors, editors
WHERE category_id =6 AND books.author_id = authors.author_id AND
books.editor_id = editors.editor_id ORDER BY book_id DESC
Ιζηνξία, Γεσγξαθία SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,
editor_name, image_name_small, url FROM books, authors, editors
WHERE category_id =4 AND books.author_id = authors.author_id AND
books.editor_id = editors.editor_id ORDER BY book_id DESC
Μαγεηξηθή SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,
editor_name, image_name_small, url FROM books, authors, editors
WHERE category_id =7 AND books.author_id = authors.author_id AND
books.editor_id = editors.editor_id ORDER BY book_id DESC

Πίλαθαο 4.26: Δξσηήκαηα SQL γηα ηελ επηινγή ησλ δεδνκέλσλ από θάζε θαηεγνξία

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #details { .bookstore #view_books {
font-size: 16px; background-color: #000000;
font-family: "Times New Roman", color: #000000;
Times, serif; font-size: 16px;
} font-weight: bolder;
.bookstore #details a { background-repeat: repeat-y;
color: #000000; margin-right: 30px;
font-family: "Times New Roman", margin-left: 30px;
Times, serif; padding-top: 50px;
font-size: 18px; background-image:
font-style: italic; url(background%20img.jpg);
} }
.bookstore #details a:hover {
color: #C10000;
font-family: "Times New Roman",
Times, serif;
font-size: 18px;
font-style: italic;
}

Πίλαθαο 4.27: Φύιια CSS γηα ηελ κνξθνπνίεζε ηεο εκθάληζεο ησλ θαηεγνξηώλ

Σελίδα | 109
Δηθόλα 4.58: Δκθάληζε βηβιίσλ θαηεγνξηώλ

΢ελάξην Δκθάληζε ελόο βηβιίνπ

<table width="620" border="0">


<tr>
<td height="24" colspan="2"><div align="right" class="style8 style11">Best Sellers</div></td>
<td>
<?php

$q2 = "SELECT book_name, author_fn, author_ln, author2_fn, author2_ln, editor_name,


image_name_big, category_name, price, ISBN, description FROM books, authors, editors, categories
WHERE best_book =1 AND books.author_id = authors.author_id AND books.editor_id =
editors.editor_id AND books.category_id = categories.category_id ORDER BY book_id LIMIT 3, 1";
$r2 = mysqli_query($dbc, $q2);
$row = mysqli_fetch_array ($r2, MYSQLI_ASSOC);
$img = "includes/books images/{$row['image_name_big']}";
?>
<tr>
<td width="28%"><?php echo "<img src=\"".$img."\" />"; ?></td>
<td width="72%" rowspan="2" bordercolor="#000000">

<table width="101%" border="0">


<tr>
<td colspan="3"><div align="center" class="style9"><strong><?php echo
"<p>{$row['book_name']}</p>"; ?></strong></div></td>

Σελίδα | 110
</tr>
<tr>
<td width="45%" height="24"><div align="right"><span
class="stele4">΢πγγξαθέαο:</span></div></td>
<td class="stele4">&nbsp;</td>
<td class="stele4"><?php echo "<p>{$row['author_fn']}, {$row['author_ln']} / {$row['author2_fn']},
{$row['author2_ln']}</p>"; ?></td>
</tr>
<tr>
<td width="45%"><div align="right"><span class="stele4">Δθδόζεηο:</span></div></td>
<td class="stele4">&nbsp;</td>
<td class="stele4"><?php echo "<p>{$row['editor_name']}</p>"; ?></td>
</tr>
<tr>
<td width="45%"><div align="right"><span class="stele4">ISBN: </span></div></td>
<td class="stele4">&nbsp;</td>
<td class="stele4"><?php echo "<p>{$row['ISBN']}</p>"; ?></td>
</tr>
<tr>
<td width="45%"><div align="right"><span class="stele4">Καηεγνξία: </span></div></td>
<td width="2%" class="stele4">&nbsp;</td>
<td width="53%" class="stele4"><?php echo "<p>{$row['category_name']}</p>"; ?></td>
</tr>
<tr>
<td width="45%"><div align="right"><span class="stele4">Σηκή:</span></div></td>
<td class="stele4">&nbsp;</td>
<td colspan="2" class="stele4"><?php echo "<p>{$row['price']} €</p>"; ?></td>
<td height="211" colspan="2"><p class="style10"><strong>Πεξηγξαθή</strong></p>
<p align="justify" class="style5"><?php echo "{$row['description']}"; ?></p>
</td>
</tr>
</table>

Πεξηγξαθή ΢ελαξίνπ
΢ην ζελάξην απηφ δε ρξεηάδεηαη λα ρξεζηκνπνηήζνπκε θάπνην βξφρν γηα ηελ εκθάληζε ησλ
δεδνκέλσλ, γηαηί επηιέγνπκε κφλν έλα βηβιίν απφ ηελ βάζε δεδνκέλσλ. ΢αλ απνηέιεζκα έρνπκε ηελ
δηάζπαζε ηνπ θψδηθα PHP κέζα ζηα πεδία ελφο πίλαθα.
΢ην ζπγθεθξηκέλν ζελάξην επηιέγνπκε ην ηέηαξην βηβιίν απφ ηελ ιίζηα πνπ δεκηνπξγείηαη
θαζψο εθηεινχκε ην εξψηεκα SELECT.
SELECT book_name, author_fn, author_ln, author2_fn, author2_ln, editor_name, image_name_big,
category_name, price, ISBN, description FROM books, authors, editors, categories WHERE best_book =1
AND books.author_id = authors.author_id AND books.editor_id = editors.editor_id AND
books.category_id = categories.category_id ORDER BY book_id

Σελίδα | 111
Δηθόλα 4.59: Πεξηερόκελα πίλαθα books

Με ηελ πξφζζεζε ηνπ ραξαθηεξηζηηθνχ LIMIT 3, 1 δεηάκε λα επηιεγνχλ 1 εγγξαθέο μεθηλψληαο απφ ηελ
εγγξαθή 3. Γειαδή επηιέγνπκε ην βηβιίν “Γέθα εηψλ, δηαδεπγκέλε”. Απηή ηε θνξά δηαιέγνπκε φια ηα
ζηνηρεία ηνπ βηβιίνπ καδί κε ηελ κεγάιε εηθφλα πνπ ζέινπκε λα εκθαλίδεηαη.
Με ηνλ ίδην ηξφπν επηιέγνπκε απφ ηελ βάζε δεδνκέλσλ ην βηβιίν πνπ επηζπκνχκε αλάινγα
ηελ θαηεγνξία ζηελ νπνία αλήθεη θαη ηελ ζεηξά πνπ έρεη θαηά ηελ εθηέιεζε ηνπ εξσηήκαηνο.

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #view_one_book {
background-image: url(background%20img.jpg);
color: #000000;
font-size: 16px;
font-style: normal;
font-weight: normal;
background-repeat: repeat;
margin-right: 30px;
margin-left: 30px;
padding-top: 80px;
padding-bottom: 40px;
}

Πίλαθαο 4.28: Φύιια CSS γηα ηελ κνξθνπνίεζε ηεο εκθάληζε ησλ ζηνηρείσλ ελόο βηβιίνπ

Σελίδα | 112
Δηθόλα 4.59: Δκθάληζε ζηνηρείσλ ελόο βηβιίνπ

4.5.9 Αλαδήηεζε Βηβιίσλ


΢ελάξην Απιήο Αλαδήηεζεο
<?php

if (isset($_POST['searching']))
{
$errors = array();
$trimmed = array_map('trim',$_POST);
$ath_fn = $ath_ln = $ath_fn2 = $f = FALSE;
if (empty($trimmed['find']))
{
$table[] = 'Γελ ζπκπιεξώζαηε ηνλ όξν αλαδήηεζήο ζαο.';
}else{
$f = mysqli_real_escape_string($dbc, $trimmed['find']);
}
if (empty($errors))
{
$q2 = "SELECT book_name, author_fn, author_ln, author2_fn, author2_ln,
editor_name, category_name, url
FROM books, authors, editors, categories

Σελίδα | 113
WHERE ( MATCH (author_fn, author_ln) AGAINST ('$f') OR MATCH (author2_fn, author2_ln)
AGAINST ('$f') OR {$trimmed['field']} LIKE '%$f%')
AND books.author_id = authors.author_id
AND books.editor_id = editors.editor_id
AND books.category_id = categories.category_id";

$r2 = mysqli_query($dbc, $q2);


if ($r2)
{
while ($row = mysqli_fetch_array ($r2, MYSQLI_ASSOC))
{
$ath_fn = $row['author_fn'];
$ath_fn2 = $row['author2_fn'];
$ath_ln = $row['author2_ln'];
echo "<a href=\"".$row['url']."\"><p>{$row['book_name']}</p></a>";
echo "\n";
if ($ath_fn != 'NULL')
{
echo "$ath_fn, ";
}
echo "{$row['author_ln']}";
if ($ath_fn2 != 'NULL')
{
echo " / $ath_fn2";
}
if ($ath_ln != 'NULL')
{
echo ", $ath_ln";
}
echo "\n";
echo "<p>{$row['editor_name']}</p>";
echo "\n";
echo "<p>{$row['category_name']}</p>";
echo "\n";
echo "---------------------------------------------------------";
echo "\n";
}
}else
$table[] = 'Γελ βξέζεθαλ απνηειέζκαηα.';
}else{
echo '<p>Βξέζεθαλ ιάζε</p>';
foreach ($table as $t)
{
echo " $t\n<br />";
}
}
echo "<p>Αλαδήηεζε γηα: $f</p>";
}
?>

Σελίδα | 114
Πεξηγξαθή ΢ελαξίνπ
΢ηελ αξρή ειέγρνπκε αλ ν ρξήζηεο έρεη ζπκπιεξψζεη ηνλ φξν αλαδήηεζεο, δειαδή αλ έρεη
δψζεη ηηκή ζην πεδίν find ηεο θφξκαο. Αλ λαη ηφηε εθηειείηαη ην εξψηεκα SELECT ην νπνίν
επηζηξέθεη ηελ θαηαρψξηζε ηεο βάζεο δεδνκέλσλ πνπ πεξηέρεη ηνλ φξν αλαδήηεζεο.
Αθνχ έρνπκε νξίζεη επξεηήξην ηχπνπ FULLTEXT ζηνλ πίλαθα authors κπνξνχκε κε ηνλ φξν
MATCH…AGAINST λα εκθαλίζνπκε ηηο εγγξαθέο πνπ ηαηξηάδνπλ κε ηνλ φξν αλαδήηεζεο.
SELECT * FROM όλνκα_πίλαθα WHERE MATCH (ζηήιεο) AGAINST (ιέμεηο-θιεηδηά)

Δπίζεο κε ηνλ φξν LIKE ειέγρνπκε αλ δχν ζπκβνινζεηξέο είλαη ίζεο. Σν ζχκβνιν ηνπ
πνζνζηνχ (%) αληηπξνζσπεχεη θαλέλαλ, έλαλ, ή πεξηζζφηεξνπο ραξαθηήξεο.
πρ. SELECT * FROM users WHERE first_name LIKE „%Sofia%‟
Απηφ ην εξψηεκα ζα επηζηξέςεη φιεο ηηο γξακκέο πνπ ζην πεδίν first_name έρνπλ ηηκή πνπ μεθηλάεη
θαη ηειεηψλεη κε ηε ζπκβνινζεηξά Sofia.
΢ην ζπγθεθξηκέλν ζελάξην ν φξνο {$trimmed['field']} αληηζηνηρεί ζηελ ζηήιε πνπ ζα
επηιέμεη ν ρξήζηεο απφ ηελ θφξκα (ηίηινο, ζπγγξαθέαο, εθδφηεο) θαη ε κεηαβιεηή $f απνηειεί ηνλ
φξν αλαδήηεζεο.

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #search_result { .bookstore #search_result a {
color: #000000; color: #F5F1CE;
font-size: 16px; font-family: "Times New Roman",
font-weight: bolder; Times, serif;
margin-right: 30px; font-size: 16px;
margin-left: 30px; }
padding-top: 50px;
background-image: .bookstore #search_result a:hover {
url(background%20img.jpg); color: #C10000;
background-repeat: repeat-y; font-family: "Times New Roman",
font-family: "Times New Roman", Times, serif;
Times, serif; font-size: 16px;
} }

Πίλαθαο 4.29: Φύιια CSS γηα ηελ κνξθνπνίεζε ησλ απνηειεζκάησλ αλαδήηεζεο

Σελίδα | 115
Δηθόλα 4.60: Δκθάληζε απνηειεζκάησλ αλαδήηεζεο

4.5.10 Λίζηα αγαπεκέλσλ βηβιίσλ


Τπάξρνπλ ηξείο ζειίδεο πνπ απεπζχλνληαη ζηελ ιίζηα κε ηα αγαπεκέλα. Ζ πξψηε ζειίδα
αθνξά ηελ πξνζζήθε ελφο βηβιίνπ ζηελ ιίζηα (wishlist_add.php) ζηελ νπνία κεηαθεξφκαζηε απφ ηνλ
ζχλδεζκν “πξνζζήθε ζηε wishlist” πνπ εκπεξηέρεηαη ζηηο ζειίδεο ησλ βηβιίσλ. ΢ηε δεχηεξε
(wishlist.php) κεηαθεξφκαζηε απφ ηνλ ζχλδεζκν “Wishlist” πνπ βξίζθεηαη ζηνλ πίλαθα πνχ πεξηέρεη
ηελ θφξκα logout. Ζ ηξίηε ζειίδα (wishlist_delete.php) δηαγξάθεη ην βηβιίν απφ ηελ ιίζηα φηαλ
παηάκε ζηνλ ζχλδεζκν “Γηαγξαθή απφ ηελ Wishlist”.

΢ελάξην PHP (wishlist_add.php)


<?php

if (isset($_GET['bid']) && is_numeric($_GET['bid']))


{
$bid = (int) $_GET['bid'];
$q = "SELECT book_id, book_name, image_name_small, url_after, FROM books WHERE
book_id = $bid";
$r = mysqli_query($dbc, $q);
if ($r)
{
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
$imgs = "includes/books images/{$row['image_name_small']}";
$q2 = "SELECT * FROM wishlist WHERE book_id = $bid";
$r2 = mysqli_query($dbc, $q2);
if (mysqli_num_rows($r2) == 1)
{
echo '<p>Σν βηβιίν ππάξρεη ήδε ζηα αγαπεκέλα ζαο.</p>';

Σελίδα | 116
exit();
}else{

$q3 = "INSERT INTO wishlist (book_id, user_id, b_name, img, w_url, date)
VALUES ('{$row['book_id']}', '".$_SESSION['user_id']."', '{$row['book_name']}', '$imgs',
'{$row['url_after']}', NOW() )";
$r3 = mysqli_query($dbc, $q3);
if ($r3)
{
$wurl = $wb = $wi = $imgs = FALSE;
$q4 = "SELECT * FROM wishlist WHERE user_id = {$_SESSION['user_id']}
ORDER BY date";
$r4 = mysqli_query($dbc, $q4);
if ($r4)
{
while ($row = mysqli_fetch_array ($r4, MYSQLI_ASSOC))
{
$wurl = $row['w_url'];
$wb = $row['b_name'];
$wi = $row['img'];

echo '
<td>
<table width="100%" border="0">
<tr>
<td width="24%" height="27" rowspan="3">'."<img src=\"".$wi."\" />".'<div align="left">
</div></td>
<td height="60" colspan="2"><span class="style10">'."<a href=\"".$wurl."\"><p>$wb</p>
</a>".'</span></td>
</tr>
<tr>
<td height="45"><img src="includes/button kalathi.gif" alt="kal" width="42" height="60" /></td>
<td height="45">'."<a href=\"kalathi_add.php?bid={$row['book_id']}\">".'Πξνζζήθε ζην
Καιάζη'."</a>".'</td>
</tr>
<tr>
<td width="8%"><img src="includes/delete.gif" alt="delete" width="30" height="30" /></td>
td width="68%">'."<a href=\"wishlist_delete.php?bid={$row['book_id']}\">".'Γηαγξαθή από ηε
Wishlist'."</a>".'</td>
</tr>
</table> </td></tr>
<tr>
<td height="21">------------------------------------------------
-----------------------------------------------------</td>
</tr>
';
}
}else{
echo '<p>Πξνζπαζήζηε μαλά.</p>';
}}}}}
?>

Σελίδα | 117
Πεξηγξαθή ΢ελαξίνπ
Όηαλ έλαο ρξήζηεο εηζέξρεηαη ζηνλ ινγαξηαζκφ ζηηο ζειίδεο πνπ εκθαλίδνληαη ηα ζηνηρεία
ησλ βηβιίσλ πξνζζέηνληαη δχν ζχλδεζκνη. Ο έλαο είλαη γηα ηελ πξνζζήθε ηνπ βηβιίνπ ζην θαιάζη θαη
ν άιινο γηα ηελ πξνζζήθε ηνπ βηβιίνπ ζηε Wishlist.
<div id="buttons">
<?php
echo "<p><a href=\"kalathi_add.php?bid={$row['book_id']}\">Πξνζζήθε ζην
Καιάζη</a></p>";
echo "<p><a href=\"wishlist_add.php?bid={$row['book_id']}\">Πξνζζήθε ζηε
Wishlist</a></p>"; ?>
</div>

΢ην θνκκάηη απηφ ηνπ θψδηθα έρνπκε δχν URL. Σν έλα καο κεηαθέξεη ζηελ ζειίδα
kalathi_add.php θαη ην άιιν ζηελ ζειίδα wishlist_add.php. Καη ζηηο δχν δηεπζχλζεηο πξνζζέηνπκε
ηνλ θσδηθφ ηνπ βηβιίνπ γηα λα γλσξίδεη ε ζειίδα πνπ ζα κεηαβνχκε πνην βηβιίν ζα πξνζηεζεί.

Δηθόλα 4.61: ΢ύλδεζκνη πξνο ην θαιάζη θαη ηελ wishlist

Σν ζελάξην μεθηλάεη κε ηνλ έιεγρν ηνπ book_id (θσδηθφο βηβιίνπ) θαη ζπλερίδεη κε ηελ
επηινγή ησλ ραξαθηεξηζηηθψλ ηνπ απφ ηελ βάζε δεδνκέλσλ. Αλ ην εξψηεκα εθηειέζηεθε ζσζηά
εθρσξνχκε ζηε κεηαβιεηή $imgs ηελ δηαδξνκή πξνο ηελ εηθφλα ηνπ βηβιίνπ.
Έπεηηα ειέγρνπκε αλ ην βηβιίν ππάξρεη ήδε ζηε Wishlist. Αλ φρη ηφηε εθηειείηε ην εξψηεκα
εηζαγσγήο INSERT πνπ πξνζζέηεη ζηνλ πίλαθα wishlist ηεο βάζεο δεδνκέλσλ ηνλ θσδηθφ ηνπ
βηβιίνπ, ηνλ θσδηθφ ηνπ ρξήζηε, ηνλ ηίηιν ηνπ βηβιίνπ, ηελ εηθφλα ηνπ θαη ην φλνκα ηεο ζειίδαο πνπ
εκθαλίδεη ηα ραξαθηεξηζηηθά ηνπ.
΢ηε ζπλέρεηα επηιέγνπκε ηα βηβιία πνπ έρεη θαηαρσξήζεη ν ζπγθεθξηκέλνο ρξήζηεο ζηνλ
πίλαθα wishlist θαη εκθαλίδνπκε ηνλ ηίηιν θαη ηελ εηθφλα ηνπ θάζε βηβιίνπ καδί κε δχν ζπλδέζκνπο.
Ο έλαο ζχλδεζκνο επηηξέπεη ηελ πξνζζήθε ηνπ βηβιίνπ ζην θαιάζη θαη ν δεχηεξνο ηελ δηαγξαθή ηνπ
βηβιίνπ απφ ηελ Wishlist.

Σελίδα | 118
Δηθόλα 4.62: Δκθάληζε βηβιίσλ ζηε wishlist

΢ελάξην PHP (wishlist.php)


<?php

$wbid = $wb = $wi = $imgs = FALSE;


$q = "SELECT * FROM wishlist WHERE user_id = {$_SESSION['user_id']} ORDER BY date";
$r = mysqli_query($dbc, $q);
if (mysqli_num_rows($r) < 1)
{
echo '<p>Η ιίζηα κε ηα αγαπεκέλα ζαο είλαη θελή.</p>';
}else{

while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC))


{
$wurl = $row['w_url'];
$wb = $row['b_name'];
$wi = $row['img'];
echo '
<td>
<table width="100%" border="0">
<tr>
<td width="24%" height="27" rowspan="3">'."<img src=\"".$wi."\" />".'<div align="left">
</div></td>
<td height="60" colspan="2"><span class="style10">'."<a href=\"".$wurl."\"><p>$wb</p>
</a>".'</span></td>
</tr>
<tr>
<td height="45"><img src="includes/button kalathi.gif" alt="kal" width="42" height="60" /></td>
<td height="45">'."<a href=\"kalathi_add.php?bid={$row['book_id']}\">".'Πξνζζήθε ζην
Καιάζη'."</a>".'</td>
</tr>

Σελίδα | 119
<tr>
<td width="8%"><img src="includes/delete.gif" alt="delete" width="30" height="30" /></td>
<td width="68%">'."<a href=\"wishlist_delete.php?bid={$row['book_id']}\">".'Γηαγξαθή από ηε
Wishlist'."</a>".'</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="21">----------------------------------------------------------------------
-------------------------------</td>
</tr>
';
}
}
?>

Σν ζελάξην απηφ είλαη ίδην κε εθείλν ηεο ζειίδαο wishlist_add.php γηα ηελ εκθάληζε ησλ βηβιίσλ ηεο
wishlist.

΢ελάξην PHP (wishlist_delete.php)


<?php

$wurl = $wb = $wi = $imgs = FALSE;


if (isset($_GET['bid']) && is_numeric($_GET['bid']))
{
$bid = (int) $_GET['bid'];
$q = "DELETE FROM wishlist WHERE book_id = '$bid' ";
$r = mysqli_query($dbc, $q);

$q2 = "SELECT * FROM wishlist WHERE user_id = {$_SESSION['user_id']}";


$r2 = mysqli_query($dbc, $q2);
if (mysqli_num_rows($r2) < 1)
{
echo '<p>Η ιίζηα κε ηα αγαπεκέλα ζαο είλαη θελή.</p>';
}else{
while ($row = mysqli_fetch_array ($r2, MYSQLI_ASSOC))
{
$wurl = $row['w_url'];
$wb = $row['b_name'];
$wi = $row['img'];
echo '
<td>
<table width="100%" border="0">
<tr>
<td width="24%" height="27" rowspan="3">'."<img src=\"".$wi."\" />".'<div align="left">
</div></td>
<td height="60" colspan="2"><span class="style10">'."<a href=\"".$wurl."\"><p>$wb</p>
</a>".'</span></td></tr>

Σελίδα | 120
<tr>
<td height="45"><img src="includes/button kalathi.gif" alt="kal" width="42" height="60" /></td>
<td height="45">'."<a href=\"kalathi_add.php?bid={$row['book_id']}\">".'Πξνζζήθε ζην
Καιάζη'."</a>".'</td></tr>
<tr>
<td width="8%"><img src="includes/delete.gif" alt="delete" width="30" height="30" /></td>
<td width="68%">'."<a href=\"wishlist_delete.php?bid={$row['book_id']}\">".'Γηαγξαθή από ηε
Wishlist'."</a>".'</td>
</tr></table>
</td></tr>
<tr>
<td height="21">----------------------------------------------------------------------
-------------------------------</td>
</tr> ';
}}} ?>

Πεξηγξαθή ΢ελαξίνπ
Ο θψδηθαο πνπ πξνζηίζεηαη είλαη ε δηαγξαθή ηνπ βηβιίνπ κε έλα εξψηεκα DELETE. Ζ
ζπλέρεηα ηνπ ζελαξίνπ είλαη ίδηα κε ηα δχν πξνεγνχκελα.
DELETE FROM wishlist WHERE book_id = '$bid'
Σν θψδηθα ηνπ βηβιίνπ ηνλ παίξλνπκε κέζσ ηνπ κεηξψνπ $_GET() αθνχ πξψηα ηνλ έρνπκε
πξνζαξηήζεη ζηελ δηεχζπλζε URL.

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #wishlist { .bookstore #wish_details a:hover {
background-color: #000000; font-family: "Monotype Corsiva";
color: #c05711; font-size: 20px;
font-size: 20px; color: #c05711;
font-weight: normal; text-decoration: underline;
background-repeat: repeat-y; }
margin-right: 30px; .bookstore #buttons a {
margin-left: 30px; font-family: "Times New Roman",
padding-top: 50px; Times, serif;
background-image: font-size: 16px;
url(background%20img.jpg); color: #000000;
padding-bottom: 70px; }
font-family: "Monotype Corsiva"; .bookstore #buttons a:hover {
} font-family: "Times New Roman",
.bookstore #wish_details a { Times, serif;
font-family: "Monotype Corsiva"; font-size: 16px;
font-size: 20px; color: #C10000;
color: #c05711; text-decoration: none;
} }
Πίλαθαο 4.30: Φύιια CSS γηα ηελ κνξθνπνίεζε ηεο Wishlist

Σελίδα | 121
4.5.11 Καιάζη Αγνξώλ
΢ην θαιάζη αγνξψλ ν ρξήζηεο κπνξεί λα θαηαρσξήζεη ηα βηβιία πνπ ζέιεη λα αγνξάζεη. Ζ
πξνζζήθε ελφο βηβιίνπ γίλεηαη κέζσ ηνπ ζπλδέζκνπ “Πξνζζήθε ζην θαιάζη” πνπ βξίζθεηαη ζηελ
ζειίδα εκθάληζεο ησλ ραξαθηεξηζηηθψλ ηνπ θάζε βηβιίνπ. Δπίζεο κπνξεί λα έρεη πξφζβαζε ζην
θαιάζη ηνπ γηα λα επεμεξγαζηεί ηηο θαηαρσξίζεηο ηνπ απφ ηνλ ζχλδεζκν “Καιάζη αγνξψλ” (ζηνλ
πίλαθα κε ηελ θφξκα logout) θαη λα κεηαβεί ζηελ αγνξά ηνπο – Οινθιήξσζε Αγνξάο .
Γηα ζθνπφ απηφ δεκηνπξγήζεθαλ ηέζζεξεηο ζειίδεο:
kalathi_add.php – Πξνζζήθε βηβιίνπ ζην θαιάζη
kalathi_agorwn.php – Δκθάληζε πεξηερνκέλσλ θαιαζηνχ
kalathi_delete.php – Γηαγξαθή ελφο βηβιίνπ απφ ην θαιάζη
kalathi_en.php – Δλεκέξσζε θαιαζηνχ

΢ελάξην PHP (kalathi_add.php)


<?php

if (isset($_GET['bid']) && is_numeric($_GET['bid']))


{
$bid = (int) $_GET['bid'];
$qty = FALSE;
$q = "SELECT book_id, book_name, price, url_after, category_id, new_book, best_book,
sug_book FROM books WHERE book_id = $bid";
$r = mysqli_query($dbc, $q);
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
if ($r)
{
$q2 = "SELECT * FROM kalathi WHERE book_id = $bid";
$r2 = mysqli_query($dbc, $q2);
$row2 = mysqli_fetch_array ($r2, MYSQLI_ASSOC);
$qty = $row2['quantity'];
if (mysqli_num_rows($r2) == 1)
{
$qty = $qty + 1;
$q3 = "UPDATE kalathi SET quantity = $qty WHERE book_id = $bid";
$r3 = mysqli_query($dbc, $q3);
}else{
$qty = 1;
$q3 = "INSERT INTO kalathi (book_id, user_id, kal_book, pr, quantity, k_url,
date) VALUES ('{$row['book_id']}', '".$_SESSION['user_id']."', '{$row['book_name']}', '{$row['price']}',
'$qty', '{$row['url_after']}', NOW() )";
$r3 = mysqli_query($dbc, $q3);
}
if ($r3)
{
q4 = "SELECT * FROM kalathi WHERE user_id = {$_SESSION['user_id']}
ORDER BY date";
$r4 = mysqli_query($dbc, $q4);
if ($r4)

Σελίδα | 122
{
$t = $kurl = $kb = $kp = $subtotal = FALSE;
$qu = array();
$total = 0;
while ($row3 = mysqli_fetch_array ($r4, MYSQLI_ASSOC))
{
$kurl = $row3['k_url'];
$kb = $row3['kal_book'];
$kp = $row3['pr'];
$qty = $row3['quantity'];
$subtotal = $qty * $kp;
$total = $total + $subtotal;

echo '
<form name="update_kal" action="kalathi_en.php" method="post">
<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="52%"><div align="left">'."<a href=\"".$kurl."\"><p>$kb</p></a>".'</div></td>
<td width="12%"><div align="left">'.$kp.' €</div></td>
<td width="19%"><div align="center"><input type="text" size="2"
name="qu['.$row3['kal_id'].']"" value="'.$qty.'" /></div></td>
<td width="17%"><div align="center"><div id="but_delete">'."<a
href=\"kalathi_delete.php?bid={$row3['book_id']}\">".'<img src="includes/delete kal.gif" alt="butdel"
width="20" height="20" />'."</a>".'</div></div></td>
</tr>
</table></td></tr>
';
}
echo '
<tr>
<td height="23">----------------------------------------------------------------------------------------------------------------
---------</td></tr>
<tr>
<td>
<table width="100%" border="0">
<tr>
<td><p align="left"><input type="submit" name="update" value="Δλεκέξσζε Καιαζηνύ" /></p>
<input type="hidden" name="updated" value="TRUE" /></td>
<td><div align="right">
<table width="135" border="0">
<tr>
<td width="47%">΢ύλνιν:</td>
<td width="53%"><p>'.$total.' €</p></td>
</tr>
</table></div></td></tr>
<tr>
<td><div align="left"><div id="but_agora">'."<p><a href=\"order.php?t=$total\">".'<img
src="includes/oloklirwsh_agoras.gif" alt="agora" />'."</a></p>".'</div></td>

Σελίδα | 123
<td><div align="right"><div id="but_paraggelia">'."<p><a href=\"paraggelies.php?t=$total\">".'<img
src="includes/paraggelies.gif" alt="paraggelies" />'."</a></p>".'</div></td>
</tr>
</table></td></tr>
</form>';

}}}}
?>

Πεξηγξαθή ΢ελαξίνπ
Ξεθηλψληαο ην ζελάξην επηιέγνπκε ηα ζηνηρεία ηνπ βηβιίνπ απφ ηνλ πίλαθα books. Έπεηηα
ειέγρνπκε αλ ην βηβιίν ππάξρεη ήδε ζηνλ θαιάζη. Αλ λαη απμάλνπκε ηελ πνζφηεηα θαηά έλα , αιιηψο
ηελ θάλνπκε ίζε κε ηε κνλάδα θαη εηζάγνπκε ηα ζηνηρεία ηνπ βηβιίνπ ζηνλ πίλαθα kalathi ηεο βάζεο
δεδνκέλσλ. ΢ηε ζπλέρεηα επηιέγνπκε ηα βηβιία πνπ ν ζπγθεθξηκέλνο ρξήζηεο έρεη θαηαρσξίζεη ζηνλ
πίλαθα kalathi θαη ηα εκθαλίδνπκε κέζσ ελφο βξφρνπ while.
Δπίζεο δεκηνπξγήζεθε κηα θφξκα ε νπνία έρεη έλα πεδίν θεηκέλνπ. Δθεί ν ρξήζηεο θαηαρσξεί
ηελ πνζφηεηα ησλ βηβιίσλ πνπ επηζπκεί λα παξαγγείιεη.
<input type="text" size="2" name="qu['.$row3['kal_id'].']"" value="'.$qty.'" />
Ζ ηηκή ηεο πνζφηεηαο ηνπ θάζε βηβιίνπ απνζεθεχεηαη ζηνλ πίλαθα qu[]. Όηαλ ν ρξήζηεο αιιάδεη ηελ
πνζφηεηα θάπνηνπ βηβιίνπ πξέπεη λα παηήζεη ην θνπκπί ηεο θφξκαο “Δλεκέξσζε θαιαζηνχ” έηζη
ψζηε λα ελεκεξσζεί ε βάζε δεδνκέλσλ κε ηηο λέεο ηηκέο.
Γηα ηελ δηαγξαθή ελφο βηβιίνπ δεκηνπξγήζεθε κηα εηθφλα πνπ είλαη ζχλδεζκνο πξνο ηελ
ζειίδα kalathi_delete.php. Με ηνλ ίδην ηξφπν ν ρξήζηεο κεηαβαίλεη ζηελ αγνξά ησλ βηβιίσλ
(order.php) θαη ζηελ εκθάληζε ησλ παξαγγειηψλ ηνπ (paraggelies.php).

Δηθόλα 4.63: Δκθάληζε βηβιίσλ ζην θαιάζη αγνξώλ

Σελίδα | 124
΢ελάξην PHP (kalathi_agorwn.php)
<?php

$q = "SELECT * FROM kalathi WHERE user_id = {$_SESSION['user_id']} ORDER BY date";


$r = mysqli_query($dbc, $q);
if (mysqli_num_rows($r) < 1)
{
echo '<tr>
<td>Σν θαιάζη ζαο είλαη άδεην.</td>
</tr>
<tr>
<td><div align="right"><div id="but_paraggelia">'."<p><a href=\"paraggelies.php\">".'<img
src="includes/paraggelies.gif" alt="paraggelies" />'."</a></p>".'</div></td>
</tr>';
}else{
$t = $kurl = $kid = $kb = $kp = $qty = $subtotal = FALSE;
$qu = array();
$total = 0;
while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC))
{
$kurl = $row['k_url'];
$kb = $row['kal_book'];
$kp = $row['pr'];
$qty = $row['quantity'];
$subtotal = $qty * $kp;
$total = $total + $subtotal;
echo '
<form name="update_kal" action="kalathi_en.php" method="post">
<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="52%"><div align="left">'."<a href=\"".$kurl."\"><p>$kb</p></a>".'</div></td>
<td width="12%"><div align="left">'.$kp.' €</div></td>
<td width="19%"><div align="center"><input type="text" size="2"
name="qu['.$row3['kal_id'].']"" value="'.$qty.'" /></div></td>
<td width="17%"><div align="center"><div id="but_delete">'."<a
href=\"kalathi_delete.php?bid={$row3['book_id']}\">".'<img src="includes/delete kal.gif" alt="butdel"
width="20" height="20" />'."</a>".'</div></div></td>
</tr>
</table></td></tr>
';
}
echo '
<tr>
<td height="23">----------------------------------------------------------------------------------------------------------------
---------</td></tr>
<tr>
<td>
<table width="100%" border="0">

Σελίδα | 125
<tr>
<td><p align="left"><input type="submit" name="update" value="Δλεκέξσζε Καιαζηνύ" /></p>
<input type="hidden" name="updated" value="TRUE" /></td>
<td><div align="right">
<table width="135" border="0">
<tr>
<td width="47%">΢ύλνιν:</td>
<td width="53%"><p>'.$total.' €</p></td>
</tr>
</table></div></td></tr>
<tr>
<td><div align="left"><div id="but_agora">'."<p><a href=\"order.php?t=$total\">".'<img
src="includes/oloklirwsh_agoras.gif" alt="agora" />'."</a></p>".'</div></td>
<td><div align="right"><div id="but_paraggelia">'."<p><a href=\"paraggelies.php?t=$total\">".'<img
src="includes/paraggelies.gif" alt="paraggelies" />'."</a></p>".'</div></td>
</tr>
</table></td></tr>
</form>';
}
?>

Πεξηγξαθή ΢ελαξίνπ
Ζ εκθάληζε ησλ απνηειεζκάησλ αθνινπζεί ηελ ίδηα δηαδηθαζία κε ην ζελάξην ηεο ζειίδαο
kalathi_add.php. Απηφ πνπ πξνζηίζεηαη είλαη ν έιεγρνο γηα ηελ χπαξμε θαηαρσξίζεσλ ζην θαιάζη. Αλ
φρη ηφηε εκθαλίδεηαη έλα θαηάιιειν κήλπκα καδί κε ηνλ ζχλδεζκν ησλ παξαγγειηψλ, αιιηψο ην
ζελάξην ζπλερίδεη κε ηελ εθηχπσζε ησλ πεξηερνκέλσλ ηνπ πίλαθα kalathi.

΢ελάξην PHP (kalathi_en.php)


<?php

if (isset($_POST['updated']))
{
foreach ($_POST['qu'] as $k => $value)
{
$kid = (int) $k;
$qty = (int) $value;

if ($qty == 0){
$q2 = "DELETE FROM kalathi WHERE kal_id = '$kid'";
$r2 = mysqli_query($dbc, $q2);
}elseif ($qty >= 1){
$q2 = "UPDATE kalathi SET quantity = $qty WHERE kal_id = $kid";
$r2 = mysqli_query($dbc, $q2);
}
}
}
$q = "SELECT * FROM kalathi WHERE user_id = {$_SESSION['user_id']} ORDER BY date";
$r = mysqli_query($dbc, $q);

Σελίδα | 126
if (mysqli_num_rows($r) < 1)
{
echo '<p>Σν θαιάζη ζαο είλαη άδεην.</p>';
}else{
$t = $kurl = $kb = $kp = $qty = $subtotal = FALSE;
$qu = array();
$total = 0;
while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC))
{
$kurl = $row['k_url'];
$kb = $row['kal_book'];
$kp = $row['pr'];
$qty = $row['quantity'];
$subtotal = $qty * $kp;
$total = $total + $subtotal;
echo '
<form name="update_kal" action="kalathi_en.php" method="post">
<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="52%"><div align="left">'."<a href=\"".$kurl."\"><p>$kb</p></a>".'</div></td>
<td width="12%"><div align="left">'.$kp.' €</div></td>
<td width="19%"><div align="center"><input type="text" size="2"
name="qu['.$row3['kal_id'].']"" value="'.$qty.'" /></div></td>
<td width="17%"><div align="center"><div id="but_delete">'."<a
href=\"kalathi_delete.php?bid={$row3['book_id']}\">".'<img src="includes/delete kal.gif" alt="butdel"
width="20" height="20" />'."</a>".'</div></div></td>
</tr>
</table></td></tr>
';
}
echo '
<tr>
<td height="23">----------------------------------------------------------------------------------------------------------------
---------</td></tr>
<tr>
<td>
<table width="100%" border="0">
<tr>
<td><p align="left"><input type="submit" name="update" value="Δλεκέξσζε Καιαζηνύ" /></p>
<input type="hidden" name="updated" value="TRUE" /></td>
<td><div align="right">
<table width="135" border="0">
<tr>
<td width="47%">΢ύλνιν:</td>
<td width="53%"><p>'.$total.' €</p></td>
</tr>
</table></div></td></tr>
<tr>

Σελίδα | 127
<td><div align="left"><div id="but_agora">'."<p><a href=\"order.php?t=$total\">".'<img
src="includes/oloklirwsh_agoras.gif" alt="agora" />'."</a></p>".'</div></td>
<td><div align="right"><div id="but_paraggelia">'."<p><a href=\"paraggelies.php?t=$total\">".'<img
src="includes/paraggelies.gif" alt="paraggelies" />'."</a></p>".'</div></td>
</tr>
</table></td></tr>
</form>';
}
?>

Πεξηγξαθή ΢ελαξίνπ
Ζ ζειίδα απηή δεκηνπξγήζεθε γηα ηελ αλαλέσζε ησλ πνζνηήησλ ησλ βηβιίσλ πνπ ν ρξήζηεο
επηζπκεί λα αγνξάζεη. Απηφ επηηπγράλεηαη κε έλαλ βξφρν foreach. Ο βξφρνο απηφο παίξλεη ηηο ηηκέο
πνπ πίλαθα qu[] (qu['.$row3['kal_id'].'] = $qty). Οη θάζε ζηήιε ηνπ πίλαθα αληηπξνζσπεχεη ηνλ
θσδηθφ ηνπ βηβιίνπ θαη ε θάζε απνζεθεπκέλε ηηκή ηελ πνζφηεηα απηνχ.
Κάζε θνξά πνπ ηξέρεη ν βξφρνο foreach δίλνπκε ζηελ κεηαβιεηή $k ηνλ θσδηθφ ηνπ θάζε
βηβιίνπ θαη ζηελ κεηαβιεηή $value ηελ πνζφηεηα απηνχ. Έπεηηα κεηαβάινπκε ηηο ηηκέο ηνπο ζε
αθέξαηεο θαη ηηο θαηαρσξνχκε ζηηο κεηαβιεηέο $kid θαη $qty.
foreach ($_POST['qu'] as $k => $value)
$kid = (int) $k;
$qty = (int) $value;
Αλ ε πνζφηεηα έρεη ηηκή κεδέλ δηαγξάθνπκε ην βηβιίν απφ ηνλ πίλαθα kalathi ηεο βάζεο
δεδνκέλσλ, αιιηψο εθηεινχκε ην εξψηεκα UPDATE ην νπνίν θαηαρσξεί ηηο θαηλνχξγηα ηηκή ηεο
πνζφηεηαο ζην πίλαθα.
΢ηε ζπλέρεηα ν θψδηθαο εθηειείηαη φπσο θαη ζηα πξνεγνχκελα ζελάξηα.

΢ελάξην PHP (kalathi_delete.php)


<?php

if (isset($_GET['bid']) && is_numeric($_GET['bid']))


{
$bid = (int) $_GET['bid'];

$q = "DELETE FROM kalathi WHERE book_id = '$bid' ";


$r = mysqli_query($dbc, $q);
if ($r)
{
$t = $kurl = $kb = $kp = $qty = $subtotal = FALSE;
$total = 0;
$qu = array();
while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC))
{
$kurl = $row['k_url'];
$kb = $row['kal_book'];
$kp = $row['pr'];
$qty = $row['quantity'];
$subtotal = $qty * $kp;

Σελίδα | 128
$total = $total + $subtotal;
echo '
<form name="update_kal" action="kalathi_en.php" method="post">
<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="52%"><div align="left">'."<a href=\"".$kurl."\"><p>$kb</p></a>".'</div></td>
<td width="12%"><div align="left">'.$kp.' €</div></td>
<td width="19%"><div align="center"><input type="text" size="2"
name="qu['.$row3['kal_id'].']"" value="'.$qty.'" /></div></td>
<td width="17%"><div align="center"><div id="but_delete">'."<a
href=\"kalathi_delete.php?bid={$row3['book_id']}\">".'<img src="includes/delete kal.gif" alt="butdel"
width="20" height="20" />'."</a>".'</div></div></td>
</tr>
</table></td></tr>
';
}
echo '
<tr>
<td height="23">----------------------------------------------------------------------------------------------------------------
---------</td></tr>
<tr>
<td>
<table width="100%" border="0">
<tr>
<td><p align="left"><input type="submit" name="update" value="Δλεκέξσζε Καιαζηνύ" /></p>
<input type="hidden" name="updated" value="TRUE" /></td>
<td><div align="right">
<table width="135" border="0">
<tr>
<td width="47%">΢ύλνιν:</td>
<td width="53%"><p>'.$total.' €</p></td>
</tr>
</table></div></td></tr>
<tr>
<td><div align="left"><div id="but_agora">'."<p><a href=\"order.php?t=$total\">".'<img
src="includes/oloklirwsh_agoras.gif" alt="agora" />'."</a></p>".'</div></td>
<td><div align="right"><div id="but_paraggelia">'."<p><a href=\"paraggelies.php?t=$total\">".'<img
src="includes/paraggelies.gif" alt="paraggelies" />'."</a></p>".'</div></td>
</tr>
</table></td></tr>
</form>';
}}}
?>

Πεξηγξαθή ΢ελαξίνπ
Μέζσ ηνπ URL κεηαβηβάδνπκε ηνλ θσδηθφ ηνπ βηβιίνπ (φπσο θαη ζηα πξνεγνχκελα ζελάξηα)
γη‟ απηφ έρνπκε ηελ δπλαηφηεηα λα δηαγξάςνπκε ην ζπγθεθξηκέλν βηβιίν απφ ηελ βάζε δεδνκέλσλ
θαη έπεηηα λα εκθαλίζνπκε ηηο απνκείλαληεο θαηαρσξίζεηο ηνπ πίλαθα.

Σελίδα | 129
Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε
.bookstore #kalathi { .bookstore #kalathi a{
background-color: #000000; color: #000000;
color: #000000; font-family: "Times New Roman",
font-size: 16px; Times, serif;
font-weight: bolder; font-size: 16px;
background-repeat: repeat-y; }
margin-right: 30px;
margin-left: 30px;
padding-top: 50px;
background-image:
url(background%20img.jpg);
padding-bottom: 70px;
}

Πίλαθαο 4.31: Φύιια CSS γηα ηελ κνξθνπνίεζε ηνπ θαιαζηνύ αγνξώλ

4.5.12 Οινθιήξσζε Αγνξάο


΢ην θαιάζη ηνπ ρξήζηε ππάξρεη έλαο ζχλδεζκνο “Οινθιήξσζε Αγνξάο”. Ο ζχλδεζκνο απηφο
καο κεηαθέξεη ζηε ζειίδα order.php. Δπίζεο κέζσ ηνπ URL κεηαβηβάδνπκε ην ζπλνιηθφ πνζφ ηεο
παξαγγειίαο.

΢ελάξην PHP (order.php)


<?php

if (isset($_GET['t']))
{
$total = $_GET['t'];
$oid = $ord_bid = $ord_book = $ord_pr = $ord_qty = FALSE;
$q = "INSERT INTO orders (user_id, total) VALUES ('".$_SESSION['user_id']."', '$total')";
$r = mysqli_query($dbc, $q);
if (mysqli_affected_rows($dbc) == 1)
{
$q2 = "SELECT order_id FROM orders WHERE user_id = {$_SESSION['user_id']}";
$r2 = mysqli_query($dbc, $q2);
if ($r2)
{
$row = mysqli_fetch_array ($r3, MYSQLI_ASSOC);
$oid = $row['order_id'];

$q3 = "SELECT * FROM kalathi WHERE user_id = {$_SESSION['user_id']}";


$r3 = mysqli_query($dbc, $q3);
if ($r3)
{
while ($row2 = mysqli_fetch_array ($r3, MYSQLI_ASSOC))
{
$ord_bid = $row2['book_id'];

Σελίδα | 130
$ord_pr = $row2['pr'];
$ord_qty = $row2['quantity'];
$q4 = "INSERT INTO order_contents (order_id, book_id, quantity, price, ship_date)
VALUES ('$oid', '$ord_bid', '$ord_qty', '$ord_pr', NOW() )";
$r4 = mysqli_query($dbc, $q4);
}
if ($r4)
{
$q5 = "DELETE FROM kalathi WHERE user_id = {$_SESSION['user_id']} ";
$r5 = mysqli_query($dbc, $q5);
if ($r5)
{
$q6 = "SELECT * FROM order_contents WHERE order_id = $oid ORDER BY
ship_date";
$r6 = mysqli_query($dbc, $q6);
if ($r6)
{
while ($row3 = mysqli_fetch_array ($r6, MYSQLI_ASSOC))
{
$ord_bid = $row3['book_id'];
$ord_prise = $row3['price'];
$ord_qty = $row3['quantity'];
$ord_date = $row3['ship_date'];
$q7 = "SELECT book_name, url_after FROM books WHERE
book_id = $ord_bid";
$r7 = mysqli_query($dbc, $q7);
$row4 = mysqli_fetch_array ($r7, MYSQLI_ASSOC);
if ($r7)
{
$book_url = $row4['url_after'];
$ord_book = $row4['book_name'];

echo '
<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="45%" height="27">
<div align="left">'."<a href=\"".$book_url."\"><p>$ord_book</p> </a>".'</div></td>
<td width="13%"><div align="left">'.$ord_prise.'</div></td>
<td width="14%"><div align="center">'.$ord_qty.'</div></td>
<td width="28%"><div align="right">'.$ord_date.'</div></td>
</tr>
</table>
</td>
</tr>
';
}}}}}
}}}
}
?>

Σελίδα | 131
Πεξηγξαθή ΢ελαξίνπ
΢ηνλ πίλαθα orders ηεο βάζεο δεδνκέλσλ απνζεθεχνληαη ν θσδηθφο ηνπ ρξήζηε, ην ζπλνιηθφ
πνζφ θαη ε εκέξα πνπ έγηλε ε παξαγγειία. ΢ην πίλαθα order_contents ηα βηβιία πνπ ζέιεη λα
αγνξάζεη ν ρξήζηεο.
Σν ζελάξην αξρίδεη κε ηελ πξνζζήθε ησλ δεδνκέλσλ ζηνλ πίλαθα orders. Αλ ην εξψηεκα
εθηειεζηή κε επηηπρία επηιέγνπκε ην πξσηεχσλ θιεηδί ηνπ πίλαθα orders γηα λα γίλεη μέλν θιεηδί ηνπ
πίλαθα order_contents. ΢ηε ζπλέρεηα επηιέγνπκε ηα βηβιία πνπ ν ρξήζηεο είρε θαηαρσξίζεη ζην
θαιάζη ηνπ θαη ηα πξνζζέηνπκε ζηνλ πίλαθα order_contents. Αθνχ ηα δεδνκέλα κεηαθεξζνχλ κε
επηηπρία πξνβαίλνπκε ζηελ δηαγξαθή ηνπο απφ ηνλ θαιάζη.
Δπηιέγνληαο ηα δεδνκέλα ηνπ πίλαθα order_contents πνπ αληηζηνηρνχλ ζηνλ ζπγθεθξηκέλν
ρξήζηε ηα εκθαλίδνπκε κέζσ ελφο βξφρνπ while θαη ηελ ζπλάξηεζεο echo (φπσο θαη ζηα
πξνεγνχκελα ζελάξηα).

Δηθόλα 4.64: Δκθάληζε παξαγγειηώλ

4.5.13 Παξαγγειία ηνπ ρξήζηε


΢ηε ζειίδα απηή κπνξεί ν ρξήζηεο λα βιέπεη ηηο παξαγγειίεο πνπ έρεη θάλεη έσο ηψξα
(paraggelies.php). Ο θψδηθαο απηφο είλαη έλα θνκκάηη ηνπ πξνεγνχκελν ζελαξίνπ πνπ αθνξνχζε ηελ
αγνξά ησλ βηβιίσλ, αθνχ ν ηξφπνο εκθάληζεο ησλ απνηειεζκάησλ είλαη ν ίδηνο.

Σελίδα | 132
΢ελάξην PHP
<?php

$oid = $ord_bid = $ord_book = $ord_pr = $ord_qty = FALSE;


$q = "SELECT order_id FROM orders WHERE user_id = {$_SESSION['user_id']}";
$r = mysqli_query($dbc, $q);
if ($r)
{
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
$oid = $row['order_id'];
$q2 = "SELECT * FROM order_contents WHERE order_id = $oid ORDER BY ship_date";
$r2 = mysqli_query($dbc, $q2);
if (mysqli_num_rows($r) < 1)
{
echo '<tr>
<td>Γελ έρεηε παξαγγειίεο.</td>
</tr>';
}else{

while ($row2 = mysqli_fetch_array ($r2, MYSQLI_ASSOC))


{
$ord_bid = $row2['book_id'];
$ord_prise = $row2['price'];
$ord_qty = $row2['quantity'];
$ord_date = $row2['ship_date'];
$q3 = "SELECT book_name, url_admin FROM books WHERE book_id =
$ord_bid";
$r3 = mysqli_query($dbc, $q3);
$row3 = mysqli_fetch_array ($r3, MYSQLI_ASSOC);
if ($r3)
{
$book_url = $row3['url_admin'];
$ord_book = $row3['book_name'];

echo '
<tr>
<td>
<table width="100%" border="0">
tr>
<td width="45%" height="27"><div align="left">'."<a href=\"".$book_url."\"><p>$ord_book</p>
</a>".'</div></td>
<td width="13%"><div align="left">'.$ord_prise.'</div></td>
<td width="14%"><div align="center">'.$ord_qty.'</div></td>
<td width="28%"><div align="right">'.$ord_date.'</div></td>
</tr>
</table>
</td>
</tr>
';
}}}}?>

Σελίδα | 133
4.5.14 Πίλαθαο αγνξώλ
Ο πίλαθαο αγνξψλ αθνξά κφλν ην δηαρεηξηζηή ηεο ηζηνζειίδαο ν νπνίνο ζα κπνξεί λα
ελεκεξψλεηαη γηα ηηο παξαγγειίεο φισλ ησλ ρξεζηψλ. Δπίζεο, κπνξεί λα δηαγξάςεη φπνηα παξαγγειία
επηζπκεί (delete_order.php).

΢ελάξην PHP (pinakas_agorwn.php)


<?php

$oid = $ord_uid = $ord_total = $ord_date = FALSE;


$qu = array();
$q = "SELECT * FROM orders ORDER BY order_date";
$r = mysqli_query($dbc, $q);
if (mysqli_num_rows($r) < 1)
{
echo '<p>Γελ ππάξρνπλ θαηαρσξεκέλεο αγνξέο.</p>';
}else{

while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC))


{
$oid = $row['order_id'];
$ord_uid = $row['user_id'];
$ord_total = $row['total'];
$ord_date = $row['order_date'];
$q2 = "SELECT CONCAT(first_name, ' ', last_name) AS un FROM users WHERE user_id =
$ord_uid";
$r2 = mysqli_query($dbc, $q2);
$row2 = mysqli_fetch_array ($r2, MYSQLI_ASSOC);
$ord_un = $row2['un'];
if ($r2)
{
echo '<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="40%" height="27"><div align="left">'."<a href=\"order_contents.php?
oid={$row['order_id']}\">$ord_un".'</div></td>
<td width="17%"><div align="center">'.$ord_total.'€</div></td>
<td width="31%"><div align="center">'.$ord_date.'</div></td>
<td width="12%"><div align="center"><div id="but_delete">'."<a
href=\"delete_order.php?oid={$row['order_id']}\">".'<img src="includes/delete kal.gif" alt="butdel"
width="20" height="20" />'."</a>".'</div></div></td>
</tr>
</table>
</td>
</tr>
';
}}}
?>

Σελίδα | 134
Πεξηγξαθή Κώδηθα
Πξψηα απφ φια επηιέγνπκε ηνπο θαηαρσξεκέλνπο ρξεζηψλ απφ ηνλ πίλαθα orders, δειαδή
απηνχο πνπ έρνπλ θάλεη θάπνηα παξαγγειία. Αλ δελ ππάξρνπλ θαηαρσξήζεηο ζηνλ πίλαθα
εθηππψλνπκε έλα θαηάιιειν κήλπκα, αιιηψο εθηεινχκε έλαλ βξφρν while κέζα ζηνλ νπνίν
επηιέγνπκε ηα νλφκαηα ησλ ρξεζηψλ απφ ησλ πίλαθα users έηζη ψζηε λα εθηππσζνχλ ζηελ ζειίδα
κέζσ ηεο ζπλάξηεζεο echo().
Δπίζεο, ην φλνκα ηνπ θάζε ρξήζηε γίλεηαη ζχλδεζκνο πξνο ηελ ζειίδα order_contents έηζη
ψζηε λα έρεη πξφζβαζε ν δηαρεηξηζηήο ζηα βηβιία πνπ έρεη παξαγγείιεη ν θάζε ρξήζηεο.
Ζ ζπλάξηεζε echo() εθηππψλεη ηα νλφκαηα ησλ ρξεζηψλ, ην ζπλνιηθφ πνζφ θαη ηελ
εκεξνκελία ηεο παξαγγειίαο.

Δηθόλα 4.65: Πίλαθαο αγνξώλ

4.5.15 Αγνξέο Υξεζηώλ


Όπσο είδακε θαη ζην πξνεγνχκελν ζελάξην ν δηαρεηξηζηήο παηψληαο πάλσ ζην φλνκα ηνπ
ρξήζηε κπνξεί λα ελεκεξψλεηαη γηα ηα βηβιία πνπ έρεη παξαγγείιεη θαη κάιηζηα αλάινγα κε ηελ
εκέξα παξαγγειίαο. Απηφ γίλεηαη κέζσ ηεο ζειίδαο order_contents.php ζηελ νπνία κεηαβηβάδνπκε
ηνλ θσδηθφ παξαγγειίαο ηνπ θάζε ρξήζηε ($oid). Με ηνλ ηξφπν απηφ κπνξνχκε κέζσ ελφο
εξσηήκαηνο SELECT λα επηιέμνπκε ηα βηβιία απφ ηνλ πίλαθα order_contents ηεο βάζεο δεδνκέλσλ
κε βάζε ηνλ θσδηθφ παξαγγειίαο ηνπ θάζε ρξήζηε.

΢ελάξην PHP (order_contents.php)


<?php

$ord_bid = $ord_book = $ord_prise = $ord_qty = $ord_date = $book_url = FALSE;


if (isset($_GET['oid']) && is_numeric($_GET['oid']))

Σελίδα | 135
{
$oid = (int) $_GET['oid'];
$q = "SELECT * FROM order_contents WHERE order_id = '$oid' ORDER BY ship_date";
$r = mysqli_query($dbc, $q);
if ($r)
{
while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC))
{
$ord_bid = $row['book_id'];
$ord_prise = $row['price'];
$ord_qty = $row['quantity'];
$ord_date = $row['ship_date'];

$q2 = "SELECT book_name, url_admin FROM books WHERE book_id = $ord_bid";


$r2 = mysqli_query($dbc, $q2);
$row2 = mysqli_fetch_array ($r2, MYSQLI_ASSOC);
if ($r2)
{
$book_url = $row2['url_admin'];
$ord_book = $row2['book_name'];
echo '<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="38%" height="27"><div align="left">'."<a href=\"".$book_url."\">
<p>$ord_book</p></a>".'</div></td>
<td width="9%"><div align="left">'.$ord_prise.'</div></td>
<td width="13%"><div align="center">'.$ord_qty.'</div></td>
td width="28%"><div align="center">'.$ord_date.'</div></td>
</tr>
</table>
</td>
</tr>
';
}}}}
?>

4.5.16 Γηαγξαθή Παξαγγειίαο


Σν κφλν πνπ ρξεηάδεηαη είλαη λα δηαγξάςνπκε απφ ηνπο πίλαθεο orders θαη order_contents, ηεο
βάζεο δεδνκέλσλ, ηηο παξαγγειίεο ηνπ ρξήζηε κε βάζε ηνλ θσδηθφ παξαγγειίαο ηνπ ($oid).

$q = "DELETE FROM orders WHERE order_id = '$oid' ";


$q2 = "DELETE FROM order_contents WHERE order_id = '$oid' ";

΢ελάξην PHP (delete_order.php)

Σελίδα | 136
<?php

if (isset($_GET['oid']) && is_numeric($_GET['oid']))


{
$oid = (int) $_GET['oid'];
$q = "DELETE FROM orders WHERE order_id = '$oid' ";
$r = mysqli_query($dbc, $q);
if ($r)
{
$q2 = "DELETE FROM order_contents WHERE order_id = '$oid' ";
$r2 = mysqli_query($dbc, $q2);
if ($r2)
{
$oid = $ord_uid = $ord_total = $ord_date = FALSE;
$q3 = "SELECT * FROM orders ORDER BY order_date";
$r3 = mysqli_query($dbc, $q3);
if (mysqli_num_rows($r3) < 1)
{
echo '<p>Γελ ππάξρνπλ θαηαρσξεκέλεο αγνξέο.</p>';
}else{

while ($row = mysqli_fetch_array ($r3, MYSQLI_ASSOC))


{
$ord_uid = $row['user_id'];
$ord_total = $row['total'];
$ord_date = $row['order_date'];

$q4 = "SELECT CONCAT(first_name, ' ', last_name) AS un FROM


users WHERE user_id = $ord_uid";
$r4 = mysqli_query($dbc, $q4);
$row2 = mysqli_fetch_array ($r4, MYSQLI_ASSOC);
$ord_un = $row2['un'];
if ($r4)
{
echo '<tr>
<td>
<table width="100%" border="0">
<tr>
<td width="40%" height="27"><div align="left">'."<a
href=\"order_contents.php?oid={$row['order_id']}\">$ord_un".'</div></td>
td width="17%"><div align="center">'.$ord_total.'€</div></td>
<td width="31%"><div align="center">'.$ord_date.'</div></td>
<td width="12%"><div align="center"><div id="but_delete">'."<a
href=\"delete_order.php?oid={$row['order_id']}\">".'<img src="includes/delete kal.gif" alt="butdel"
width="20" height="20" />'."</a>".'</div></div></td>
</tr>
</table>
</td>
</tr>
';
}}}}}}?>

Σελίδα | 137
4.5.17 Πξνζζήθε Βηβιίνπ
Κώδηθαο Φόξκαο
<form enctype="multipart/form-data" action="add_book.php" method="post">

<input type="hidden" name="MAX_FILE_SIZE" value="524288" />

<p><span class="style12">Σίηινο Βηβιίνπ:</span>


<input type="text" name="book_name" size="80" maxlengh="80"
value="<?php if (isset($_POST['book_name'])) echo htmlspecialchars($_POST['book_name']); ?>"
/></p>

<p><b class="style12">Μηθξή Δηθόλα:</b> <input type="file" name="image_small" />


<p><b class="style12">Μεγάιε Δηθόλα:</b> <input type="file" name="image_big" />
<p>
_________________________________________________________________________________________
Δπεηδή απηή ε θφξκα ζα επηηξέπεη ζηνπ ρξήζηεο λα αλεβάδνπλ αξρεία, ζηελ εηηθέηα <form> πξέπεη
λα πεξηιακβάλεη ην ραξαθηεξηζηηθφ enctype θαη ηελ θξπθή είζνδν MAX_FILE_SIZE. Σν ηκήκα
enctype δείρλεη φηη ε θφξκα πξέπεη λα ρεηξίδεηαη δηάθνξνπο ηχπνπ δεδνκέλσλ. Δπίζεο, ε θξπθή
είζνδνο MAX_FILE_SIZE είλαη έλαο πεξηνξηζκφο ηεο θφξκαο γηα ην κέγηζην κέγεζνο ηνπ επηιεγκέλνπ
αξρείνπ. Ζ παξακέλνπζα θφξκα ρξεζηκνπνηεί ηε ζπλάξηεζε htmlspecialchars() γηα λα κεηαηξέςεη
ηνπο εηδηθνχο ραξαθηήξεο ζε νληφηεηεο HTML, επεηδή δεκηνπξγνχλ πξφβιεκα ζην ραξαθηεξηζηηθφ
value ησλ εηζφδσλ. Σέινο, ε είζνδνο ηχπνπ file δεκηνπξγεί ζηε θφξκα ην θαηάιιειν θνπκπί. Όηαλ
ππνβιεζεί ε θφξκα ην αξρείν πνπ αλέβεθε ζα απνζεθεπζεί ζηελ ππεξθαζνιηθή κεηαβιεηή $_FILES.
$_FILES[„name‟] => Σν αξρηθφ φλνκα ηνπ αξρείνπ
$_FILES[„tmp_name‟] => Σν πξνζσξηλφ φλνκα ηνπ αξρείνπ ζην δηαθνκηζηή

Πρώηος Σσγγραθέας

Τπάξρσλ ΢πγγξαθέαο
<b class="style12">1νο ΢πγγξαθέαο:</b>
<p><input type="radio" name="author1" value="existing_author1" <?php if (isset($_POST['author1'])
&& ($_POST['author1'] == 'existing_author1') ) echo ' checked="checked"'; ?> />

Τπάξρoλ ΢πγγξαθέαο => <select name ="existing_author1"> <option>Δπηινγή ΢πγγξαθέα</option>


<?php
$q7= "SELECT author_id, author_fn, author_ln FROM authors ORDER BY author_ln, author_fn";
$r7 = mysqli_query ($dbc, $q7);
if ($r7)
{
while ($row5 = mysqli_fetch_array ($r7, MYSQLI_ASSOC))
{
$afn = $row5['author_fn'];
$aln = $row5['author_ln'];
if ($afn == 'NULL')
{
$afn = NULL;
}

Σελίδα | 138
if (isset($_POST['existing_author1']) && ($_POST['existing_author1'] ==
$row5['author_id']) ) echo ' selected="selected"';
echo "<option value=\"{$row5['author_id']}\">$aln $afn<option>";
}
}else{
echo '<option>Δηζαγσγή λένπ ζπγγξαθέα.</option>';
} ?>
</select>
</p>]

__________________________________________________________________________________________
Γεκηνπξγείηαη έλα ξαδηνπιήθηξν γηα ηελ επηινγή ηνπ ζπγγξαθέα απφ έλα πηπζζφκελν κελνχ. Με ην
εξψηεκα SELECT επηιέγνπκε ηα νλφκαηα ησλ ζπγγξαθέσλ ηα νπνία κεηαβηβάδνπκε ζην πηπζζφκελν
κελνχ. Δπίζεο ειέγρνπκε ην κηθξφ φλνκα ηνπ ζπγγξαθέα ψζηε αλ έρεη ηηκή „NULL‟ λα ηνπ δίλνπκε
«θελή» ηηκή. Σα ξαδηνπιήθηξα ηεο ίδηαο θαηεγνξίαο κπνξνχλ λα έρνπλ ην ίδην φλνκα, αθνχ θάζε
θνξά επηιέγεηαη έλα απφ απηά. ΢ηε ζπγθεθξηκέλε θφξκα έρνπλ δηαθνξεηηθά νλφκαηα γηα ιφγνπο
επθνιίαο εθηέιεζεο ηνπ ζελαξίνπ.

Δηζαγσγή Νένπ ΢πγγξαθέα


<p><input type="radio" name="author1" value="new_author1" <?php if (isset($_POST['author1']) &&
($_POST['author1'] == 'new_author1') ) echo ' checked="checked"'; ?> />

Νένο ΢πγγξαθέαο => </p>


<p>Όλνκα: <input type="text" name="author_fn" size="20" maxlength="20"
value=" <?php if (isset($_POST['author_fn'])) echo $_POST['author_fn']; ?>" />

<?php echo ' ';?>

Δπώλπκν: <input type="text" name="author_ln" size="40" maxlength="40"


value="<?php if (isset($_POST['author_ln'])) echo $_POST['author_ln']; ?>" />
</p>
_________________________________________________________________________________________
Δθηφο απφ έλα ξαδηνπιήθηξν δεκηνπξγνχληαη δχν πεδία θεηκέλνπ γηα ηελ εηζαγσγή ησλ ζηνηρείσλ ηνπ
λένπ ζπγγξαθέα.

Δεύηερος Σσγγραθέας

Τπάξρσλ ΢πγγξαθέαο
<b class="style12">2νο ΢πγγξαθέαο:</b>
<p><input type="radio" name="author2" value="existing_author2" <?php if (isset($_POST['author2'])
&& ($_POST['author2'] == 'existing_author2') ) echo ' checked="checked"'; ?> />

Τπάξρoλ ΢πγγξαθέαο => <select name="existing_author2"><option>Δπηινγή ΢πγγξαθέα</option>


<?php
$q8= "SELECT author_id, author2_fn, author2_ln FROM authors WHERE author2_ln != 'NULL'
ORDER BY author2_ln, author2_fn";
$r8 = mysqli_query ($dbc, $q8);

Σελίδα | 139
if ($r8)
{
while ($row6 = mysqli_fetch_array($r8, MYSQLI_ASSOC))
{
$afn2 = $row6['author2_fn'];
$aln2 = $row6['author2_ln'];
if ($afn2 == 'NULL')
{
$afn2 = NULL;
}
if (isset($_POST['existing_author2']) && ($_POST['existing_author2'] ==
$row6['author_id']) ) echo ' selected="selected"';
echo "<option value=\"{$row6['author_id']}\">$aln2 $afn2<option>";
}
}else{
echo '<option>Δηζαγσγή λένπ ζπγγξαθέα.</option>';
} ?>
</select>
</p>

Δηζαγσγή Νένπ ΢πγγξαθέα


<p><input type="radio" name="author2" value="new_author2" <?php if (isset($_POST['author2']) &&
($_POST['author2'] == 'new_author2') ) echo ' checked="checked"'; ?> />

Νένο ΢πγγξαθέαο => </p>


<p>Όλνκα: <input type="text" name="author2_fn" size="20" maxlength="20"
value=" <?php if (isset($_POST['author2_fn'])) echo $_POST['author2_fn']; ?>" />
<?php echo ' ';?>

Δπώλπκν: <input type="text" name="author2_ln" size="40" maxlength="40"


value="<?php if (isset($_POST['author2_ln'])) echo $_POST['author2_ln']; ?>" />
</p>

Αλύπαξθηνο ΢πγγξαθέαο
<p><input type="radio" name="author2" value="none" <?php if (isset($_POST['author2']) &&
($_POST['author2'] == 'none') ) echo ' checked="checked"'; ?> />
Κελό
_________________________________________________________________________________________
Ο δεχηεξνο ζπγγξαθέαο κπνξεί λα κελ ππάξρεη γη‟ απηφ ππάξρεη κηα ηξίηε επηινγή πνπ δίλεη ηηκή
NULL ζην κηθηφ φλνκα θαη ζην επψλπκν ηνπ δεχηεξνπ ζπγγξαθέα.

Εκδόηης

Τπάξρσλ Δθδόηεο
<b class="style12">Δθδόηεο:</b>
<p><input type="radio" name="editor" value="existing_editor" <?php if (isset($_POST['editor']) &&
($_POST['editor'] == 'existing_editor') ) echo ' checked="checked"'; ?> />

Τπάξρoλ Δθδόηεο => <select name="existing_editor"><option>Δπηινγή Δθδόηε</option>

Σελίδα | 140
<?php
$q9 = "SELECT editor_id, editor_name FROM editors ORDER BY editor_name";
$r9 = mysqli_query ($dbc, $q9);
if ($r9)
{
while ($row7 = mysqli_fetch_array ($r9, MYSQLI_ASSOC))
{
if (isset($_POST['existing_editor']) && ($_POST['existing_editor'] ==
$row7['editor_id']) ) echo ' selected="selected"';
echo "<option value=\"{$row7['editor_id']}\">{$row7['editor_name']}<option>";
}
}else{
echo '<option>Δηζαγσγή λένπ εθδόηε.</option>';
}
?>
</select>
</p>

Δηζαγσγή λένπ εθδόηε


<p><input type="radio" name="editor" value="new_editor" <?php if (isset($_POST['editor']) &&
($_POST['editor'] == 'new_editor') ) echo ' checked="checked"'; ?> />

Νένο Δθδόηεο => Όλνκα Δθδόηε: <input type="text" name="editor_name" size="60" maxlength="60"
value="<?php if (isset($_POST['editor_name'])) echo $_POST['editor_name']; ?>" />
</p>

Καηηγορίες

Τπάξρσλ Καηεγνξία
<b class="style12">Καηεγνξία:</b>
<p><input type="radio" name="category" value="existing_category" <?php if
(isset($_POST['category']) && ($_POST['category'] == 'existing_category') ) echo ' checked="checked"';
?> />

Τπάξρoλ Καηεγνξία => <select name="existing_category"><option>Δπηινγή Καηεγνξίαο</option>


<?php
$q10= "SELECT category_id, category_name FROM categories ORDER BY category_name";
$r10 = mysqli_query ($dbc, $q10);
if ($r10)
{
while ($row8 = mysqli_fetch_array ($r10, MYSQLI_ASSOC))
{
if (isset($_POST['existing_category']) && ($_POST['existing_category'] ==
$row8['category_id']) ) echo ' selected="selected"';
echo "<option value=\"{$row8['category_id']}\">{$row8['category_name']}<option>";
}
}else{
echo '<option>Δηζαγσγή λέαο θαηεγνξίαο</option>';
}

Σελίδα | 141
?></select></p>

Δηζαγσγή Νέαο Καηεγνξίαο


<p><input type="radio" name="category" value="new_category" <?php if (isset($_POST['category'])
&& ($_POST['category'] == 'new_category') ) echo ' checked="checked"'; ?> />

Νέα Καηεγνξία => Όλνκα Καηεγνξίαο: <input type="text" name="category_name" size="40"


maxlength="40" value="<?php if (isset($_POST['category_name'])) echo $_POST['category_name']; ?>"
/></p>

Τιμή Βιβλίοσ

<p><b class="style12">Σηκή:</b>
<input type="text" name="price" size="10" maxlength="10" value="<?php if (isset($_POST['price']))
echo $_POST['price']; ?>" />
<?php echo ' ';?>
<span class="stele4"><small>(Μελ αλαγξάθεηε ην ζήκα ηνπ λνκίζκαηνο.)</small></span></p>

ISBN

<p><b class="style12">ISBN:</b>
<input type="text" name="ISBN" size="15" maxlength="15" value="<?php if (isset($_POST['ISBN']))
echo $_POST['ISBN']; ?>" />
</p>

Checkboxes

<p><Input type = 'checkbox' Name ='ch1' value ="new" <?php print $ch1; ?> />
<b>Νέεο Κπθινθνξίεο</b>
</p>
<p><Input type = 'checkbox' Name ='ch2' value ="best" <?php print $ch2; ?> />
<b>Best Sellers</b>
</p>
<p><Input type = 'checkbox' Name ='ch3' value ="sug" <?php print $ch3; ?> />
<b>Πξνηεηλόκελα Βηβιία</b></p>

Περιγραθή

<p><b class="style12">Πεξηγξαθή:</b><textarea name="description" cols="80" rows="40">


<?php if (isset($_POST['description'])) echo $_POST['description']; ?>
</textarea>
</p>

Button

<div align="center"><input type="submit" name="add" value="Πξνζζήθε" /></div>


<input type= "hidden" name="added" value="TRUE" />

</form>

Σελίδα | 142
΢ελάξην PHP (add_book.php)
<?php
$ch1 = $ch2 = $ch3 = FALSE;
$bn = $p = $isbn = $d = FALSE;
$afn = $aln = $afn2 = $aln2 = $a = $a_id = $a_id2 = FALSE;
$edn = $ed_id = FALSE;
$catn = $cat_id = FALSE;
$temp_bn = $temp_sn = $img_sn = $img_bn = FALSE;

if(isset($_POST['added']))
{
$errors = array();
if (empty($_POST['book_name']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ηνλ ηίηιν ηνπ βηβιίνπ';
}else{
$bn = trim($_POST['book_name']);

}
/*---------------------------------------------------------------------------------------------------------------- */
if (is_uploaded_file($_FILES['image_small']['tmp_name']))
{
$temp_sn = 'C:/xampp/htdocs/site_bookstore/includes/books
images'.md5($_FILES['image_small']['name']);
if (move_uploaded_file($_FILES['image_small']['tmp_name'], $temp_sn))
{
$img_sn = $_FILES['image_small']['name'];
}else{
$errors[] = 'H εηθόλα δελ κπόξεζε λα κεηαθεξζεί';
$temp_sn = $_FILES['image_small']['tmp_name'];
}
}else{
$errors[] = 'Αλεπηηπρήο αλέβαζκα αξρείνπ';
$temp_sn = NULL;
}
____________________________________________________________________________________
Ζ ζπλάξηεζε is_uploaded_file() επηζηξέθεη ηηκή TRUE αλ αλέβεθε θάπνην αξρείν θαη ηηκή FALSE
αλ φρη. Αλ αλέβεθε θάπνην αξρείν ην ζελάξην ζα επηρεηξήζεη λα ην κεηαθέξεη ζηνλ θαηάινγν books
images. ΢ε πεξίπησζε επηηπρίαο ζα αλαηεζεί ζηελ κεηαβιεηή $img_sn ην φλνκα ηνπ αξρείνπ. Γηα
ιφγνπο αζθαιείαο δεκηνπξγείηαη έλα πξνζσξηλφ φλνκα γηα ην αξρείν πνπ θξππηνγξαθείηαη
θαηάιιεια κε ηελ ζπλάξηεζε md5().

/*---------------------------------------------------------------------------------------------------------------- */
if (is_uploaded_file($_FILES['image_big']['tmp_name']))
{
$temp_bn = 'C:/xampp/htdocs/site_bookstore/includes/books
images'.md5($_FILES['image_big']['name']);
if (move_uploaded_file($_FILES['image_big']['tmp_name'], $temp_bn))
{

Σελίδα | 143
$img_bn = $_FILES['image_big']['name'];
}else{
$errors[] = 'H εηθόλα δελ κπόξεζε λα κεηαθεξζεί';
$temp_bn = $_FILES['image_big']['tmp_name'];
}
}else{
$errors[] = 'Αλεπηηπρήο αλέβαζκα αξρείνπ';
$temp_bn = NULL;
}

/*---------------------------------------------------------------------------------------------------------------- */
if (empty($_POST['price']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ηελ ηηκή ηνπ βηβιίνπ';
}else{
$p = trim($_POST['price']);
}

/*---------------------------------------------------------------------------------------------------------------- */
if (empty($_POST['ISBN']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ηνλ ISBN θσδηθό.';
}else{
$isbn = trim($_POST['ISBN']);
}
/*---------------------------------------------------------------------------------------------------------------- */

if (empty($_POST['description']))
{
$d = NULL;
}else{
$d = trim($_POST['description']);
}

/*---------------------------------------------------------------------------------------------------------------- */
$ch1 = 'unchecked';
if (isset($_POST['ch1']) && ($_POST['ch1'] == 'new'))
{
$ch1 = 'checked';
$new_b = 1;
}else{
$new_b = 0;
}

$ch2 = 'unchecked';
if (isset($_POST['ch2']) && ($_POST['ch2'] == 'best'))
{
$ch2 = 'checked';
$best_b = 1;
}else{
$best_b = 0;

Σελίδα | 144
}

$ch3 = 'unchecked';
if (isset($_POST['ch3']) && ($_POST['ch3'] == 'sug'))
{
$ch3 = 'checked';
$sug_b =1;
}else{
$sug_b =0;
}
____________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη θάπνην απφ ηα checkboxes νη κεηαβιεηέο ζα πάξνπλ ηελ ηηκή 1, αιιηψο ζα
ηνπο εθρσξεζεί κεδεληθή ηηκή. Αλαζέηνπκε ζηηο κεηαβιεηέο ηηο ζπγθεθξηκέλεο ηηκέο ιφγσ ησλ ηηκψλ
πνπ δέρνληαη νη ηξείο ζηήιεο new_book, best_book θαη sug_book ηνπ πίλαθα books, ηεο βάζεο
δεδνκέλσλ

/*---------------------------------------------------------------------------------------------------------------- */
if (isset($_POST['author1']) && ($_POST['author1'] == 'new_author1'))
{
_________________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη λα εηζάγεη ην φλνκα ηνπ πξψηνπ ζπγγξαθέα ζηε βάζε δεδνκέλσλ.

if (isset($_POST['author2']) && ($_POST['author2'] == 'new'))


{
if (empty($_POST['author2_fn']))
{
$afn2 = 'NULL';
}else{
$afn2 = trim($_POST['author2_fn']);
}

if (empty($_POST['author2_ln']))
{
$aln2 = 'NULL';
}else{

$aln2 = trim($_POST['author2_ln']);
}
_________________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη λα εηζάγεη ην φλνκα ηνπ δεχηεξνπ ζπγγξαθέα ζηε βάζε δεδνκέλσλ
ειέγρνπκε αλ έρεη δψζεη ηηκέο ζηα πεδία ηεο θφξκαο θαη έπεηηα εθρσξνχκε ηελ ηηκέο ζηηο αληίζηνηρεο
κεηαβιεηέο

}elseif (isset($_POST['author2']) && ($_POST['author2'] == 'existing_author2') &&


($_POST['existing_author2'] > 0)){
$a_id = (int) $_POST['existing_author2'];
$q ="SELECT author2_fn, author2_ln FROM authors WHERE author_id = $a_id";
$r = mysqli_query ($dbc, $q);
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
$afn2 = $row['author2_fn'];

Σελίδα | 145
$aln2 = $row['author2_ln'];
_________________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη ηνλ δεχηεξν ζπγγξαθέα απφ ην πηπζζφκελν κελνχ εθρσξνχκε ηνλ θσδηθφ
ηνπ ζπγγξαθέα ζηελ κεηαβιεηή $a_id. Έπεηηα κέζσ ηνπ θσδηθνχ επηιέγνπκε ην κηθξφ φλνκα θαη ην
επψλπκν ηνπ ζπγθεθξηκέλνπ ζπγγξαθέα απφ ηελ βάζε δεδνκέλσλ ηα νπoία απνζεθεχνληαη ζηηο
κεηαβιεηέο $afn2 θαη $aln2.

}elseif (isset($_POST['author2']) && ($_POST['author2'] == 'none')){


$afn2 = 'NULL';
$aln2 = 'NULL'
_________________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη λα κελ εηζάγεη δεχηεξν ζπγγξαθέα ζηε βάζε δεδνκέλσλ δίλνπκε ζηηο
κεηαβιεηέο $afn2 θαη $aln2 ηηκή “NULL”.

}else{
$errors[] = 'Παξαθαινύκε εηζάγεηε ή επηιέμηε ηνλ 2ν ζπγγξαθέα.';
}

if (empty($_POST['author_fn']))
{
$afn = 'NULL';
}else{
$afn = trim($_POST['author_fn']);
}
_________________________________________________________________________________________
Διέγρνπκε αλ ν δηαρεηξηζηήο έρεη εηζάγεη ην κηθξφ φλνκα ηνπ πξψηνπ ζπγγξαθέα ζην πεδίν ηεο
θφξκαο. Αλ λαη απνζεθεχεηαη ζηε κεηαβιεηή $afn , αιιηψο ε κεηαβιεηή παίξλεη ηελ ηηκή “NULL”.

if (empty($_POST['author_ln']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην επώλπκν ηνπ ζπγγξαθέα';
}else{
$aln = trim($_POST['author_ln']);
$q2 = "INSERT INTO authors (author_fn, author_ln, author2_fn, author2_ln)
VALUES (?, ?, ?, ?)";
$stmt = mysqli_prepare($dbc, $q2);
mysqli_stmt_bind_param($stmt, 'ssss', $afn, $aln, $afn2, $aln2);
mysqli_stmt_execute($stmt);
if ($stmt)
{
$a = mysqli_insert_id($dbc);
}else{
$errors[] = 'Ο λένο ζπγγξαθέαο δελ έρεη πξνζηεζεί ζηε βάζε δεδνκέλσλ.';
}
mysqli_stmt_close($stmt);
}

_________________________________________________________________________________________

Σελίδα | 146
Σν επψλπκν ηνπ πξψηνπ ζπγγξαθέα δελ κπνξεί λα έρεη ηηκή “NULL” γη‟ απηφ αλ ν δηαρεηξηζηήο δελ
δψζεη θάπνηα ηηκή θαηαρσξείηαη έλα ζρεηηθφ κήλπκα ζηνλ πίλαθα ζθαικάησλ. ΢ε άιιε πεξίπησζε
εθηεινχκε έλα εξψηεκα εηζαγσγήο ζηνηρείσλ ζηε βάζε δεδνκέλσλ. Ζ εηζαγσγή γίλεηαη κε ηελ ρξήζε
έηνηκσλ εληνιψλ γηα ιφγνπο αζθαιείαο θαη θαιχηεξεο απφδνζεο.. Όηαλ δελ ρξεζηκνπνηνχληαη
έηνηκεο εληνιέο, νιφθιεξν ην εξψηεκα κε, καδί κε ηελ ζχληαμε ηεο SQL, θαη ηηο ζπγθεθξηκέλεο ηηκέο
ζηέιλεηαη ζηελ MySQL ε νπνία αλαιχεη ζπληαθηηθά ην εξψηεκα θαη ην εθηειεί. Με έλα έηνηκν
εξψηεκα πξψηα ζηέιλεηαη ε ζχληαμε ηεο SQL ζηε MySQL γηα λα αλαιπζεί ε νξζφηεηά ηνπ θαη
έπεηηα ζηέιλνληαη μερσξηζηά νη ηηκέο. Ζ MySQL ζπλαξκνινγεί ην εξψηεκα κε απηέο ηηο ηηκέο θαη ην
εθηειεί. Αλ ην εξψηεκα εθηειεζηεί ζσζηά ζηελ κεηαβιεηή $a απνζεθεχεηαη ν θσδηθφο ηνπ
ζπγγξαθέα γηα λα πξνζηεζεί ζηελ ζπλέρεηα ζηνλ πίλαθα books.

}elseif (isset($_POST['author1']) && ($_POST['author1'] == 'existing_author1') &&


($_POST['existing_author1'] > 0)){
$a_id = (int) $_POST['existing_author1'];
$q ="SELECT author_fn, author_ln FROM authors WHERE author_id = $a_id";
$r = mysqli_query ($dbc, $q);
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
$afn = $row['author_fn'];
$aln = $row['author_ln'];
_________________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη ηνλ πξψην ζπγγξαθέα απφ ην πηπζζφκελν κελνχ εθρσξνχκε ηνλ θσδηθφ
ηνπ ζπγγξαθέα ζηελ κεηαβιεηή $a_id. Έπεηηα κέζσ ηνπ θσδηθνχ επηιέγνπκε ην κηθξφ φλνκα θαη ην
επψλπκν ηνπ ζπγθεθξηκέλνπ ζπγγξαθέα απφ ηελ βάζε δεδνκέλσλ ηα νπoία απνζεθεχνληαη ζηηο
κεηαβιεηέο $afn θαη $aln.

/*---------------------------------------------------------------------------------------------------------------- */

if (isset($_POST['author2']) && ($_POST['author2'] == 'new'))


{
echo 'Δηζαγσγή λένπ ζπγγξαθέα';
if (empty($_POST['author2_fn']))
{
$afn2 = 'NULL';
}else{
$afn2 = trim($_POST['author2_fn']);
}
if (empty($_POST['author2_ln']))
{
$aln2 = 'NULL';
}else{
$aln2 = trim($_POST['author2_ln']);
}

$q3 = "INSERT INTO authors (author_fn, author_ln, author2_fn, author2_ln) VALUES


(?, ?, ?, ?)";
$stmt = mysqli_prepare($dbc, $q3);
mysqli_stmt_bind_param($stmt, 'ssss', $afn, $aln, $afn2, $aln2);
mysqli_stmt_execute($stmt);

Σελίδα | 147
if ($stmt)
{
$a = mysqli_insert_id($dbc);
}else{
$errors[] = 'Ο λένο ζπγγξαθέαο δελ έρεη πξνζηεζεί ζηε βάζε δεδνκέλσλ.';
}
mysqli_stmt_close($stmt);

_________________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη λα εηζάγεη ην φλνκα ηνπ δεχηεξνπ ζπγγξαθέα ζηε βάζε δεδνκέλσλ
ειέγρνπκε αλ έρεη δψζεη ηηκέο ζηα πεδία ηεο θφξκαο . Αλ λαη νη ηηκέο απνζεθεχνληαη ζηηο κεηαβιεηέο
$afn2 θαη $aln , αιιηψο νη κεηαβιεηέο παίξλνπλ ηελ ηηκή “NULL”. Έπεηηα γίλεηαη ε εηζαγσγή ησλ
νλνκάησλ ζηε βάζε δεδνκέλσλ κέζσ έηνηκσλ εληνιψλ.

}elseif (isset($_POST['author2']) && ($_POST['author2'] == 'existing_author2') &&


($_POST['existing_author2'] > 0)){
$a_id2 = (int) $_POST['existing_author2'];
$q2 ="SELECT author2_fn, author2_ln FROM authors WHERE author_id = $a_id2";
$r2 = mysqli_query ($dbc, $q2);
$row2 = mysqli_fetch_array ($r2, MYSQLI_ASSOC);
$afn2 = $row2['author2_fn'];
$aln2 = $row2['author2_ln'];

$q3 = "INSERT INTO authors (author_fn, author_ln, author2_fn, author2_ln) VALUES


(?, ?, ?, ?)";
$stmt = mysqli_prepare($dbc, $q3);
mysqli_stmt_bind_param($stmt, 'ssss', $afn, $aln, $afn2, $aln2);
mysqli_stmt_execute($stmt);

if ($stmt)
{
$a = mysqli_insert_id($dbc);
}else{
$errors[] = 'Ο λένο ζπγγξαθέαο δελ έρεη πξνζηεζεί ζηε βάζε δεδνκέλσλ.';
}
mysqli_stmt_close($stmt);
________________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη ηνλ δεχηεξν ζπγγξαθέα απφ ην πηπζζφκελν κελνχ εθρσξνχκε ηνλ θσδηθφ
ηνπ ζπγγξαθέα ζηελ κεηαβιεηή $a_id2. Έπεηηα κέζσ ηνπ θσδηθνχ επηιέγνπκε ην κηθξφ φλνκα θαη ην
επψλπκν ηνπ ζπγθεθξηκέλνπ ζπγγξαθέα απφ ηελ βάζε δεδνκέλσλ ηα νπoία απνζεθεχνληαη ζηηο
κεηαβιεηέο $afn2 θαη $aln2. Σν εξψηεκα εηζαγσγήο εθηειείηαη κε ηνλ ίδην ηξφπν απνζεθεχνληαο ηα
ζηνηρεία ηνπ ζπγγξαθέα ζηελ βάζε δεδνκέλσλ.

}elseif (isset($_POST['author2']) && ($_POST['author2'] == 'none')){


$afn2 = 'NULL';
$aln2 = 'NULL';

$q ="SELECT author_id FROM authors WHERE author_ln = '$aln' AND author_fn =


'$afn'";

Σελίδα | 148
$r = mysqli_query ($dbc, $q);
$row2 = mysqli_fetch_array($r, MYSQLI_ASSOC);
$a = $row2['author_id'];

_________________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη λα κελ εηζάγεη δεχηεξν ζπγγξαθέα ζηε βάζε δεδνκέλσλ δίλνπκε ζηηο
κεηαβιεηέο $afn2 θαη $aln2 ηηκή “NULL”. Έπεηηα αλαθηάκε απφ ηελ βάζε δεδνκέλσλ ηνλ θσδηθφ
ηνπ πξψηνπ ζπγγξαθέα πνπ επέιεμε ν δηαρεηξηζηήο απφ ην πηπζζφκελν κελνχ.

}else{
$errors[] = 'Παξαθαινύκε εηζάγεηε ή επηιέμηε ηνλ 2ν ζπγγξαθέα.';
}

}else{
$errors[] = 'Παξαθαινύκε εηζάγεηε ή επηιέμηε ηνλ 1ν ζπγγξαθέα.';
}

/*---------------------------------------------------------------------------------------------------------------- */
if (isset($_POST['editor']) && ($_POST['editor'] == 'new_editor'))
{
if (empty($_POST['editor_name']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην όλνκα ηνπ εθδόηε';
}else{
$edn = trim($_POST['editor_name']);

$q4 = "INSERT INTO editors (editor_name) VALUES (?)";


$stmt2 = mysqli_prepare($dbc, $q4);
mysqli_stmt_bind_param($stmt2, 's', $edn);
mysqli_stmt_execute($stmt2);

if ($stmt2)
{
$ed_id = mysqli_insert_id($dbc);
}else{
$errors[] = 'Ο λένο εθδόηεο δελ έρεη πξνζηεζεί ζηε βάζε δεδνκέλσλ.';
}
mysqli_stmt_close($stmt2);
}
}elseif (isset($_POST['editor']) && ($_POST['editor'] == 'existing_editor') &&
($_POST['existing_editor'] > 0)){
$ed_id = (int) $_POST['existing_editor'];
}else{
$errors[] = 'Παξαθαινύκε εηζάγεηε ή επηιέμηε ηνλ εθδόηε.';
}

________________________________________________________________________________________
Αλ ν δηαρεηξηζηήο επηιέμεη λα εηζάγεη ην φλνκα ηνπ εθδφηε ζηε βάζε δεδνκέλσλ ειέγρνπκε αλ έρεη
εθρσξήζεη ηηκή ζην πεδίν ηεο θφξκαο . Αλ λαη γίλεηαη ε είζνδνο ησλ δεδνκέλσλ ζηε βάζε κέζσ ηνπ

Σελίδα | 149
εξσηήκαηνο INSERT. Αλ ν δηαρεηξηζηήο επηιέμεη ηνλ εθδφηε απφ ην πηπζζφκελν κελνχ εθρσξνχκε
ηνλ θσδηθφ ηνπ εθδφηε ζηελ κεηαβιεηή $ed_id.

/*---------------------------------------------------------------------------------------------------------------- */
if (isset($_POST['category']) && ($_POST['category'] == 'new_category'))
{
if (empty($_POST['category_name']))
{
$errors[] = 'Παξαθαινύκε ζπκπιεξώζηε ην όλνκα ηεο θαηεγνξίαο.';
}else{
$catn = trim($_POST['category_name']);

$q5 = "INSERT INTO categories (category_name) VALUES (?)";


$stmt3 = mysqli_prepare($dbc, $q5);
mysqli_stmt_bind_param($stmt3, 's', $catn);
mysqli_stmt_execute($stmt3);

if ($stmt3)
{
$cat_id = mysqli_insert_id($dbc);
}else{
$errors[] = 'Ο λέα θαηεγνξία δελ έρεη πξνζηεζεί ζηε βάζε δεδνκέλσλ.';
}
mysqli_stmt_close($stmt3);
}
}elseif (isset($_POST['category']) && ($_POST['category'] == 'existing_category') &&
($_POST['existing_category'] > 0)){
$cat_id = (int) $_POST['existing_category'];
}else{
$errors[] = 'Παξαθαινύκε εηζάγεηε ή επηιέμηε ηελ θαηεγνξία.';
}

/*---------------------------------------------------------------------------------------------------------------- */

if (empty($errors))
{
$q6 = "INSERT INTO books (author_id, editor_id, category_id, book_name, price, ISBN,
description, image_name_small, image_name_big, new_book, best_book, sug_book) VALUES
('$a', '$ed_id', '$cat_id', '$bn', '$p', '$isbn', '$d', '$img_sn', '$img_bn', '$new_b', '$best_b',
'$sug_b')";
$r6 = mysqli_query($dbc, $q6);
if (mysqli_affected_rows($dbc) == 1)
{
echo '<p>Σν βηβιίν έρεη θαηαρσξεζεί.</p>';

rename ($temp_sn, "C:/xampp/htdocs/site_bookstore/includes/books images/$img_sn");


rename ($temp_bn, "C:/xampp/htdocs/site_bookstore/includes/books images/$img_bn");
$_POST = array();
}else{
echo '<p>΢θάικα!</p>';
}

Σελίδα | 150
}
_______________________________________________________________________________________
Αλ ην κεηξψν $errors είλαη θελφ, ηφηε φινη νη έιεγρνη επηθχξσζεο ήηαλ επηηπρείο θαη ην βηβιίν κπνξεί
λα πξνζηεζεί ζηελ βάζε δεδνκέλσλ. Δπίζεο, πξέπεη λα κεηνλνκαζηνχλ νη εηθφλεο πνπ βξίζθνληαη
ζηνλ θάθειν books images, αιιά κε πξνζσξηλφ φλνκα. Σέινο θαζαξίδεηαη ην κεηξψν $_POST ψζηε
νη ηηκέο ηνπ λα εκθαληζηνχλ ζηελ παξακέλνπζα θφξκα.

/*---------------------------------------------------------------------------------------------------------------- */
if (isset($temp_sn) && file_exists($temp_sn) && is_file($temp_sn))
{
if (isset($temp_bn) && file_exists($temp_sn) && is_file($temp_bn))
{
unlink ($temp_sn);
unlink ($temp_bn);
}
}
}//end added
_________________________________________________________________________________________
Γηαγξάθνπκε ηα αξρεία πνπ βξίζθνληαη ζην δηαθνκηζηή, επεηδή δελ έρνπλ απνθηήζεη κφληκε φλνκα
θαη ζέζε.

if (!empty($errors)
{
foreach ($errors as $msg)
{
echo "$msg<br />\n";
}
}
?>

Φύιια CSS πνπ δεκηνπξγήζεθαλ γηα ηελ κνξθνπνίεζε


.bookstore #add_book { .bookstore #add_book a{
background-color: #F5F1CE; color: #F5F1CE;
color: #000000; font-family: "Times New Roman",
font-size: 16px; Times, serif;
background-repeat: repeat-y; font-size: 16px;
margin-left: 30px; }
padding-top: 50px;
background-image:
url(background%20img.jpg);
padding-bottom: 70px;
}
Πίλαθαο 4.32: Φύιια CSS γηα ηελ κνξθνπνίεζε ηεο θόξκαο πξνζζήθεο βηιίνπ

4.6 Αζθάιεηα Ιζηνρώξνπ

Σελίδα | 151
΢ηηο ηνπνζεζίεο ειεθηξνληθνχ εκπνξίνπ ππάξρνπλ ηέζζεξα δεηήκαηα αζθαιείαο. Σν πξψην
αθνξά ζηνλ ηξφπν απνζήθεπζεο ησλ δεδνκέλσλ ζην δηαθνκηζηή. Πξέπεη λα πξνζηαηεχεηαη ε ίδηα ε
βάζε δεδνκέλσλ θαζνξίδνληαο ηα αλάινγα δηθαηψκαηα πξφζβαζεο θαη ηνλ θαηάινγν φπνπ
απνζεθεχνληαη νη πιεξνθνξίεο ηεο πεξηφδνπ εξγαζίαο. Ζ ρξήζε ηνπ κε θνηλφρξεζηνπ ππνινγηζηή
ππεξεζίαο βειηηψλεη ηελ αζθάιεηα ηεο ηνπνζεζίαο.
Σν δεχηεξν δήηεκα αζθαιείαο αθνξά ηελ πξνζηαζία ηεο πξφζβαζεο ζε επαίζζεηεο
πιεξνθνξίεο. Ο δηαρεηξηζηήο ηεο ηνπνζεζίαο, πνπ έρεη ηελ δπλαηφηεηα λα βιέπεη ηηο εγγξαθέο
πειαηψλ, πξέπεη λα πξνζηαηεχεηαη ζην πςειφηεξν επίπεδν. Απηφ ζεκαίλεη ηελ απαίηεζε
πηζηνπνίεζεο ηαπηφηεηαο γηα ηελ πξφζβαζε, ηνλ πεξηνξηζκφ απηψλ πνπ ζα γλσξίδνπλ ηηο
πιεξνθνξίεο πξφζβαζεο, ηελ ρξήζε αζθαιψλ ζπλδέζεσλ θ.α.
Σν ηξίην δήηεκα αθνξά ηελ πξνζηαζία ησλ δεδνκέλσλ θαηά ηελ κεηάδνζε. Πξέπεη λα
ρξεζηκνπνηνχληαη αζθαιείο ζπλαιιαγέο φπνπ ρξεηάδνληαη αξηζκνί πηζησηηθψλ θαξηψλ. Απηφ
ζπλεπάγεηαη ηελ εγθαηάζηαζε Δπηπέδνπ αζθαιψλ ππνδνρψλ (Security Sockets Layer – SSL) ζην
δηαθνκηζηή κε έλα έγθπξν πηζηνπνηεηηθφ θαη, ζηε ζπλέρεηα, ηε ρξήζε ηνπ πξνηχπνπ https:// ζηηο
δηεπζχλζεηο URL. Δπίζεο, ρξεηάδεηαη ν έιεγρνο ησλ πιεξνθνξηψλ πνπ δηαθηλνχληαη κέζσ
ειεθηξνληθνχ ηαρπδξνκείνπ, επεηδή ηα κελχκαηα απηά δελ δηαθηλνχληαη έζσ αζθαιψλ δηαδξνκψλ.
Σν ηέηαξην δήηεκα αθνξά ηνλ ρεηξηζκφ ησλ ζηνηρείσλ πιεξσκήο. ΢ε θακία πεξίπησζε δελ
πξέπεη λα δηαηεξνχληαη ηα ζηνηρεία απηά ζηελ ηνπνζεζία. Ζ ηδαληθή ιχζε είλαη ε αλάζεζε ησλ
πιεξσκψλ ζε ηξίην πξφζσπν.

4.7 Γηαδηθαζία Πιεξσκήο


Ζ δηαδηθαζία νινθιήξσζεο ηεο παξαγγειίαο απνηειείηαη απφ ηξία βήκαηα:
Δπηβεβαίσζε ηεο παξαγγειίαο
Δπηβεβαίσζε/ππνβνιή ησλ ζηνηρείσλ ρξέσζεο θαη απνζηνιήο
Δπεμεξγαζία ησλ ζηνηρείσλ ρξέσζεο.

Σα δχν πξψηα βήκαηα είλαη εχθνια ζηελ πινπνίεζή ηνπο. Σα πεξηζζφηεξα δεδνκέλα πνπ
ρξεηάδνληαη γηα ην δεχηεξν βήκα είλαη απνζεθεπκέλα ζην πίλαθα users κεηά απφ ηελ εγγξαθή ηνπ
ρξήζηε. Σν ηξίην βήκα είλαη πην δχζθνιν. Οη ιεπηνκέξεηεο πνηθίινπλ, αλάινγα κε ηνλ ηξφπν
ρεηξηζκνχ ηεο ρξέσζεο θαη πνηνο ηελ θάλεη. Αθφκε πην πνιχπινθα γίλνληαη ηα πξάγκαηα ιφγσ ησλ
δηαθνξψλ ζηε λνκνζεζία αλ ην πξνο πψιεζε πξντφλ πξφθεηηαη λα ζηαιεί αξγφηεξα ή λα παξαδνζεί
ακέζσο
(φπσο έλα αξρείν πνπ ν ρξήζηεο κπνξεί λα θαηεβάζεη).
Οη πεξηζζφηεξεο ηνπνζεζίεο ειεθηξνληθνχ εκπνξίνπ αλαζέηνπλ ηηο ρξεκαηηθέο ζπλαιιαγέο ζε
θάπνην ηξίην κέξνο. Απηφ πεξηιακβάλεη ηελ απνζηνιή ησλ ζηνηρείσλ ρξέσζεο, ηελ ζπλνιηθή αμία ηεο
παξαγγειίαο θαη ελφο αξηζκνχ θαηαζηήκαηνο (πνπ δείρλεη ηελ ίδηα ηελ ηνπνζεζία ειεθηξνληθνχ
εκπνξίνπ) ζε θάπνηα άιιε ηνπνζεζία. Απηή ε ηνπνζεζία ζα ρεηξίδεηαη ηε δηαδηθαζία ρξέσζεο ηνπ
πειάηε θαη πίζησζεο ηνπ θαηαζηήκαηνο. Σν κέξνο πνπ αλαιακβάλεη ηνλ ρεηξηζκφ ηεο παξαγγειίαο
παξέρεη ζηνλ θαηαζθεπαζηή ηεο ηνπνζεζίαο ειεθηξνληθνχ εκπνξίνπ ηνλ απαξαίηεην θσδηθφ θαη
νδεγίεο γηα ηελ αιιειεπίδξαζε κε ην δηθφ ηνπ ζχζηεκα.

Σελίδα | 152
ΚΔΦΑΛΑΙΟ 5: ΑΠΟΣΔΛΔ΢ΜΑΣΑ

5.1 ΢πκπεξάζκαηα
Γηα λα είλαη νη ηζηνζειίδεο ηνπ Παγθφζκηνπ Ηζηνχ πην ειθπζηηθέο πξέπεη ε δηακφξθσζή ηνπο
λα πεξηέρεη δηάθνξα γξαθηθά, λα ελεκεξψλνληαη ζπρλά θαη λα πξνζαξκφδνληαη ζηηο αλάγθεο ησλ
ρξεζηψλ. Γηα ηνπο ρξήζηεο νη ηζηνζειίδεο κνηάδνπλ ζαλ θνηλφηεηεο πνπ επηζθέπηνληαη ζπρλά. Όζν
γηα ηνπο δηαρεηξηζηέο πξέπεη λα ελεκεξψλνπλ θαη λα ζπληεξνχλ ζπρλά ηηο ηνπνζεζίεο γηα λα
δηαηεξήζνπλ ην ελδηαθέξνλ ησλ ρξεζηψλ. Γηα ηνπο ιφγνπο απηνχο, αιιά θαη άιινπο, ε PHP θαη
MySQL έρνπλ γίλεη πξφηππα γηα ηελ δεκηνπξγία δπλακηθψλ ηνπνζεζηψλ. Ο βαζκφο ελνπνίεζήο ηνπο
είλαη έλαο αθφκα ιφγνο πνπ νη ζρεδηαζηέο ηζηνζειίδσλ ηηο πξνηηκνχλ.
Με ηελ ρξήζε ηεο PHP ν δηαθνκηζηήο κπνξεί λα παξαθνινπζεί ηηο δηεξγαζίεο πνπ εθηειεί ν
ρξήζηεο κέζσ δχν εξγαιείσλ πνπ δηαζέηεη ε γιψζζα απηή: ηα κπηζθφηα (cookies) θαη ηηο πεξηφδνπο
εξγαζίαο (sessions). Μηα επηπιένλ δπλαηφηεηα πνπ καο πξνζθέξεη ε PHP είλαη ν ρεηξηζκφο ησλ
ζθαικάησλ. Ο ρεηξηζκφο ησλ ζθαικάησλ πξέπεη λα ππάξρεη ζε κηα ηζηνζειίδα, αιιά είλαη νπηνπηθφ
λα λνκίδνπκε φηη δελ ζα γίλνπλ ιάζε. Τπάξρνπλ φκσο ηερληθέο εληνπηζκνχ, ρεηξηζκνχ θαη εμάιεηςεο
ησλ ζθαικάησλ νη νπνίεο ζίγνπξα ηα ειαρηζηνπνηνχλ. Μηα απφ απηέο ηηο ηερληθή ρεηξηζκνχ ησλ
ζθαικάησλ είλαη νη θαλνληθέο παξαζηάζεηο Perl κε ηηο νπνίεο εηζάγνπκε ηελ ηαπηνπνίεζε ησλ
κνηίβσλ ζηνθ θψδηθά καο. Πξψηα γξάθνπκε ην κνηίβν θαη έπεηηα ην εθαξκφδνπκε ζε κηα ηηκή
(ζπκβνινζεηξά).
Όζνλ αθνξά ηηο δπλακηθέο ηνπνζεζίεο πξνηηκνχληαη απφ ηηο ζηαηηθέο γηα ην ιφγν φηη
ζπληεξνχληαη πην εχθνια, κπνξνχλ λα αιιειεπηδξνχλ κε ην ρξήζηε, θαη ην πεξηερφκελφ ηνπο
ηξνπνπνηείηαη αλάινγα ηηο ζπλζήθεο.
Δπίζεο, ε αζθάιεηα ησλ εθαξκνγψλ είλαη έλα πνιχ κεγάιν θεθάιαην, αιιά απηφ πνπ πξέπεη
πξψηα λα θαηαλνήζνπκε είλαη φηη δελ ππάξρνπλ κφλν δχν θαηαζηάζεηο – αζθαιήο θαη κε αζθαιήο.
Όηαλ πξνγξακκαηίδνπκε πξέπεη λα ζθεθηφκαζηε ηη κεζφδνπο ζα ρξεζηκνπνηήζνπκε γηα λα γίλεη ε
ηνπνζεζία πεπιζζόηεπο αζθαιήο. Γηα λα απμήζεη ν δηαθνκηζηήο ηελ αζθάιεηα ηεο ηζηνζειίδαο
ρξεηάδεηαη πεξηζζφηεξνο θψδηθαο, κεγαιχηεξνο έιεγρνο θαη πεξηζζφηεξεο απαηηήζεηο απφ ηνπο
ρξήζηεο.
Σέινο, γηα ην ειεθηξνληθφ εκπφξην ν ηξφπνο δηαρείξηζεο ησλ ρξεκάησλ εμαξηάηαη πάληα απφ
ηελ ζπγθεθξηκέλε ηνπνζεζία. Γη‟ απηφ θαη ε ηζηνζειίδα πνπ δεκηνπξγήζεθε επηθεληξψλεηαη ζηηο
βαζηθέο ιεηηνπξγίεο κηαο ηνπνζεζίαο ειεθηξνληθνχ εκπνξίνπ (ζρεδίαζε βάζεο δεδνκέλσλ,
ζπκπιήξσζε ηνπ θαηαιφγνπ πξντφλησλ απφ ηνλ δηαρεηξηζηή, παξνπζίαζε ησλ πξντφλησλ ζηνπο
ρξήζηεο, δεκηνπξγία θαιαζηνχ αγνξάο θαη απνζήθεπζε ησλ παξαγγειηψλ ζηε βάζε δεδνκέλσλ.

5.2 Μειινληηθή Δξγαζία θαη Δπεθηάζεηο


΢ηελ ζπγθεθξηκέλε ηζηνζειίδα πινπνηήζεθαλ θάπνηεο βαζηθέο ιεηηνπξγείο πνπ πξνζθέξνληαη
ζε κηα ηνπνζεζία ειεθηξνληθνχ εκπνξίνπ (φζν αθνξά ην βηβιίν). Χζηφζν κπνξνχλ λα γίλνπλ πνιιέο
επεθηάζεηο πάλσ ζε απηή ηελ έηζη ψζηε λα αληηπξνζσπεχεη κηα νινθιεξσκέλε δηαδηθηπαθή
ηζηνζειίδα. Οη ππεξεζίεο πνπ ζα κπνξνχζε λα πξνζθέξεη επηπιένλ είλαη:
Πνιπγισζζηθή Δκθάληζε ηεο ηζηνζειίδαο: Με ηελ δηεζλνπνίεζε ηνπ ηζηνρψξνπ κπνξεί λα
γίλεη πξνζβάζηκν θαη απφ ρξήζηεο πνπ δελ κηιάλε ηελ ίδηα γιψζζα.

Σελίδα | 153
Πξνηάζεηο γηα παξφκνηα βηβιία: Όηαλ ν ρξήζηεο επηζθέπηεηαη ηελ ζειίδα ελφο βηβιίνπ ζα
κπνξνχζε ν δηαρεηξηζηήο λα ηνπ πξνηείλεη παξφκνηα βηβιία πνπ ίζσο λα ηνλ ελδηέθεξε λα
δηαβάζεη.
Γεκηνπξγία ηζηνξηθνχ ηνπ ζπγγξαθέα: Ο ρξήζηεο ζα κπνξνχζε λα έρεη πξφζβαζε ζηελ
βηνγξαθία ηνπ εθάζηνηε ζπγγξαθέα έηζη ψζηε λα ελεκεξσλφηαλ θαη γηα άιια βηβιία ηνπ έρεη
γξάςεη.

Σελίδα | 154
ΒΙΒΛΙΟΓΡΑΦΙΑ
1. Υξήζηνο Γηνπξηίδεο, “Οδεγφο Δπηηπρίαο γηα ην δήπισκα ECDL 4”.
Κιαηδάξηζκνο, 2ε Έθδνζε, 2005.
2. Γθηκπεξίηεο Βαγγέιεο, “INTERNET ΟΓΖΓΟ΢ ΓΗΑ ΟΛΟΤ΢”.
Α. ΣΕΗΟΛΑ Δ., 3ε Έθδνζε, 1999.
3. Noel Estabrook. “Μάζεηε ην Internet ζε 24 ψξεο”.
Μ. Γθηνχξδαο, 1ε Ακεξηθαληθή Έθδνζε, 1997.
4. Wikipedia, the free encyclopedia (en.wikipedia.org θαη el.wikipedia.org).
5. MySQL, the world‟s most popular open source database (www.mysql.com).
6. PHP, Hypertext Preprocessor (www.php.net).
7. LARRY ULLMAN, “ΔΗ΢ΑΓΧΓΖ ΢ΣΗ΢ PHP 6 & MYSQL 5 ΜΔ ΔΗΚΟΝΔ΢”.
Κιεηδάξηζκνο, 3ε Έθδνζε, 2009.
8. ΚΟΤΗΜΣΕΟΓΛΟΤ ΛΑΜΠΡΟ΢, “ΓΤΝΑΜΗΚΖ ΔΚΜΑΘΖ΢Ζ DREAMWEAVER CS3”.
Γθηνχξδαο Β., Έθδνζε κε DVD, 2008.
9. Meloni Julie, “Μάζεηε PHP, MYSQL θαη Apache”.
Μ. Γθηνχξδαο, 4ε Έθδνζε, 2008.
10. Ned Snell, Bob Temple, T. Michael Clark, “Μάζεηε ην Internet θαη Web”.
Μ. Γθηνχξδαο, ΢εηξά: Όια ζε Έλα, 2004.

Σελίδα | 155
ΠΑΡΑΡΣΗΜΑΣΑ

ΠΑΡΑΡΣΗΜΑ Α
Οδεγίεο Δγθαηάζηαζεο

ΠΑΡΑΡΣΗΜΑ Β
DreamWeaver CS3

MYSQL

Πξνγξάκκαηα ζρεδίαζεο βάζεο δεδνκέλσλ

΢ύλδεζε ζηε MySQL

Σνπηθόο Server Apache

Photoshop CS3

Flash CS3

phpMyAdmin

Σελίδα | 156

You might also like