...

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Τεχνολογικών Εφαρμογών Τμήμα Εφαρμοσμένης Πληροφορικής & Πολυμέσων

by user

on
Category: Documents
152

views

Report

Comments

Transcript

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Τεχνολογικών Εφαρμογών Τμήμα Εφαρμοσμένης Πληροφορικής & Πολυμέσων
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης
Σχολή Τεχνολογικών Εφαρμογών
Τμήμα Εφαρμοσμένης Πληροφορικής & Πολυμέσων
Πτυχιακή Εργασία
Τίτλος : Ολοκληρωμένο δικτυοκεντρικό σύστημα για ένα
σύνολο γραφείων ενοικιάσεων αυτοκινήτων.
Φωτάκης Αντώνιος A.M. 1849
Χαριτάκη Χρυσούλα A.M. 1464
Επιβλέπον Καθηγητής : Παπαδάκης Νίκος
Ημερομηνία Παράδοσης : 20/05/2014
Ευχαριστίες
Θέλουμε να ευχαριστήσουμε τους καθηγητές μας που όλα αυτά τα χρόνια της
φοίτησης μας στο Τεχνολογικό Ίδρυμα φρόντισαν για την δημιουργία του κατάλληλου
κλίματος ώστε να καταφέρουμε να αποκτήσουμε τις απαιτούμενες γνώσεις για να
φέρουμε εις πέρας την συγκεκριμένη πτυχιακή εργασία. Ιδιαίτερα να ευχαριστήσουμε τον
επιβλέπον καθηγητή κ. Παπαδάκη Νίκο για την στήριξη που μας παρείχε όταν αυτή ήταν
αναγκαία. Επίσης θέλουμε να ευχαριστήσουμε τις οικογένειες μας γιατί όλα αυτά τα
χρόνια μας στηρίζουν με την παρουσία τους και μας ενθαρρύνουν να συνεχίσουμε κάθε
φορά που κάτι μπαίνει εμπόδιο στα σχέδια μας.
i
Σύνοψη
Η συγκριμένη πτυχιακή εργασία στοχεύει στη δημιουργία ενός ολοκληρωμένου
ηλεκτρονικού καταστήματος με κύριο αντικείμενο πώλησης υπηρεσίες ενοικίασης
οχημάτων.
Στις παρακάτω σελίδες περιγράφεται η διαδικασία ανάπτυξης του ηλεκτρονικού
καταστήματος ξεκινώντας από τη διαδικασία σχεδίασης του και φτάνοντας μέχρι και την
υλοποίηση του. Επίσης, περιγράφονται τα εργαλεία που χρησιμοποιήθηκαν για την
ανάπτυξη του.
Η ανάγκη για τη δημιουργία αυτού του συστήματος είναι επιτακτική γιατί
απευθύνεται σε όλους όσους θέλουν να ενημερωθούν και να προχωρήσουν στην ενοικίαση
ενός οχήματος ξεφεύγοντας από χωροχρονικούς περιορισμούς.
ii
Abstract
This thesis aims at creating an integrated online store focusing in selling rental
services.
The following pages describe the development process of the shop starting from the
design process and reaching up to the implementation. Also it explains the tools that have
been used for its development.
The need for creating such a system is imperative because it is addressed to all those
who want to learn and advance in renting a vehicle escaping spatiotemporal constraints.
iii
Πίνακας Περιεχομένων
1.
2.
Εισαγωγικά στοιχεία............................................................................................ 1
1.1.
Πρόλογος .......................................................................................................................... 1
1.2.
Σκοπός και στόχοι της εργασίας....................................................................................... 1
1.3.
Διάρθρωση της εργασίας ................................................................................................. 1
Θεωρητικό υπόβαθρο ......................................................................................... 2
2.1.
Τι είναι το Διαδίκτυο ........................................................................................................ 2
2.2.
Ιστορία και εξέλιξη του Διαδικτύου ................................................................................. 2
2.3.
Τρόποι πρόσβασης στο διαδίκτυο ................................................................................... 2
2.4.
Το προγραμματιστικό περιβάλλον................................................................................... 3
2.4.1. HTML ............................................................................................................................ 3
2.4.2. CSS ................................................................................................................................ 4
2.4.3. Η γλώσσα PHP .............................................................................................................. 5
2.4.4. PHP Sessions ................................................................................................................. 6
2.4.5. MySQL........................................................................................................................... 8
2.5. PHPMyAdmin.................................................................................................................... 9
2.5.1. Δυνατότητες του PhpMyAdmin.................................................................................... 9
2.6. Javascript ........................................................................................................................ 10
2.6.1. Τι είναι Javascript ....................................................................................................... 10
2.6.2. Δυνατότητες της Javascript ........................................................................................ 10
2.6.3. Τρόπος Λειτουργίας της JavaScript ............................................................................ 11
2.7. Joomla ............................................................................................................................ 11
3.
Υλοποίηση ......................................................................................................... 13
3.1.
Ανάλυση Λογισμικού ...................................................................................................... 13
3.1.1. Καταγραφή απαιτήσεων ............................................................................................ 13
3.2. Περιπτώσεις χρήσης (Use Cases) ................................................................................... 14
3.3.
Εφαρμογή Use Case ....................................................................................................... 16
3.3.1. Περιγραφή του συστήματος ...................................................................................... 16
3.3.2. Use cases και σενάρια ............................................................................................... 16
3.4. Μοντέλο Οντοτήτων - Συσχετίσεων (E-R Model) ........................................................... 17
3.5.
Σχεσιακό Μοντέλο .......................................................................................................... 19
3.6.
Ο σχεδιασμός της βάσης δεδομένων............................................................................. 20
3.6.1. Ζωγραφίζοντας το e-r διάγραμμα .............................................................................. 20
3.6.2. Μετατροπή ER σε πίνακες βάσης δεδομένων ........................................................... 20
3.6.3. Δημιουργία της βάσης δεδομένων. ........................................................................... 22
3.7. Σχεδιασμός Βασικών Στοιχείων Ιστοσελίδας ................................................................. 25
3.8.
Σχεδιασμός Ιστοσελίδων ................................................................................................ 30
3.8.1. Σχεδιασμός Κεντρικής Σελίδας(index.php) ................................................................ 30
3.8.2. Σχεδιασμός Εγγραφής(register.php) .......................................................................... 30
3.8.3. Σχεδιασμός Σύνδεσης (login.php) .............................................................................. 32
iv
3.8.4. Σχεδιασμός Σελίδας Στοιχείων Χρήστη (profil.php) ................................................... 33
3.8.5. Σχεδιασμός Σελίδας Ενοικίασης Οχήματος (rent.php) .............................................. 33
3.8.6. Σχεδιασμός Σελίδας Εμφάνισης Οχημάτων προς Ενοικίαση (results.php)................ 35
3.8.7. Σχεδιασμός Σελίδας Κρατήσεων (show.php) ............................................................. 37
3.8.8. Σχεδιασμός Σελίδας Στοιχείων Οχημάτων (details.php) ............................................ 38
3.8.9. Σχεδιασμός Σελίδας Τύπων Οχημάτων (types.php)................................................... 39
3.8.10. Σχεδιασμός Σελίδας Αναζήτησης (search.php) .......................................................... 40
3.9. Τα στάδια του ελέγχου................................................................................................... 42
4.
5.
Εγχειρίδιο Χρήσης Ιστοσελίδας. ......................................................................... 43
4.1.
Αρχική Εντύπωση. .......................................................................................................... 43
4.2.
Εγγραφή Χρήστη ............................................................................................................ 43
4.3.
Σύνδεση Χρήστη ............................................................................................................. 45
4.4.
Αναζήτηση Οχημάτων .................................................................................................... 45
4.5.
Ενοικίαση Οχήματος ...................................................................................................... 46
4.6.
Ακύρωση Κράτησης ........................................................................................................ 48
4.7.
Κλείνοντας το Εγχειρίδιο ................................................................................................ 48
Επίλογος – Συμπεράσματα – Μελλοντικές Επεκτάσεις ....................................... 49
5.1.
Υλοποίηση απαιτήσεων ................................................................................................. 49
5.2.
Προβλήματα ................................................................................................................... 49
5.3.
Γνώση που αποκτήθηκε ................................................................................................. 49
5.4.
Μελλοντικές επεκτάσεις ................................................................................................ 50
v
Πίνακας Εικόνων
Εικόνα 1 : Headers HTML ................................................................................................................. 4
Εικόνα 2 : Δομή κώδικα CSS ............................................................................................................. 5
Εικόνα 3 : Δομή PHP ......................................................................................................................... 6
Εικόνα 4 : MySQL .............................................................................................................................. 8
Εικόνα 5 : Απόσπασμα από PhpMyAdmin ....................................................................................... 9
Εικόνα 6 : Σχεδιάγραμμα Επικοινωνίας Χρήστη με Κατάστημα .................................................... 16
Εικόνα 7 : Συσχετίσεις Πινάκων Βάσης Δεδομένων....................................................................... 18
Εικόνα 8 : Βάση δεδομένων της Ιστοσελίδας ................................................................................ 20
Εικόνα 9 : Κεντρικό μενού χωρίς login ........................................................................................... 26
Εικόνα 10 : Κεντρικό μενού αφού έχει γίνει login ......................................................................... 26
Εικόνα 11 : Αριστερό μενού (Μενού Τύπων) ................................................................................. 27
Εικόνα 12 : Δεξί Μενού (Αναζήτηση και Προσφορές) ................................................................... 29
Εικόνα 13 : Κεντρικό Στοιχείο Αρχικής Σελίδας.............................................................................. 30
Εικόνα 14 : Φόρμα Εγγραφής ........................................................................................................ 31
Εικόνα 15 : Φόρμα login ................................................................................................................. 32
Εικόνα 16 : Παράδεισμα Στοιχείων Χρήστη ................................................................................... 33
Εικόνα 17 : Φόρμα ενοικίασης οχήματος ...................................................................................... 34
Εικόνα 18 : Σελίδα εμφάνισης οχημάτων διαθέσιμα προς ενοικίαση .......................................... 35
Εικόνα 19 : Σελίδα Κρατήσεων ....................................................................................................... 37
Εικόνα 20 : Χαρακτηριστικά οχημάτων.......................................................................................... 38
Εικόνα 21 : Σελίδα εμφάνισης οχημάτων συγκεκριμένου τύπου.................................................. 39
Εικόνα 22 : Σελίδα Αποτελεσμάτων αναζήτησης........................................................................... 41
Εικόνα 23 : Στάδια ελέγχου συστήματος ....................................................................................... 42
Εικόνα 24 : Αρχική Ιστοσελίδα ....................................................................................................... 43
Εικόνα 25 : Φόρμα εγγραφής......................................................................................................... 44
Εικόνα 26 : Εμφάνιση λάθους κατά την εγγραφή ......................................................................... 44
Εικόνα 27 : Εμφάνιση λάθους κατά τον έλεγχο της εγγραφής ...................................................... 44
Εικόνα 28 : Εμφάνιση επιτυχούς εγγραφής ................................................................................... 45
Εικόνα 29 : Φόρμα σύνδεσης ......................................................................................................... 45
Εικόνα 30 : Λανθασμένο Email....................................................................................................... 45
Εικόνα 31 : Λανθασμένο Password ................................................................................................ 45
Εικόνα 32 : Χαρακτηριστικά Οχήματος .......................................................................................... 46
Εικόνα 33 : Φόρμα ενοικίασης Οχήματος...................................................................................... 46
Εικόνα 34 : Εμφάνιση μηνύματος για λανθασμένες ημερομηνίες 1 ............................................. 47
Εικόνα 35 : Εμφάνιση μηνύματος για λανθασμένες ημερομηνίες 2 ............................................. 47
Εικόνα 36 : Σελίδα εμφάνισης οχημάτων διαθέσημα προς ενοικίαση ......................................... 47
Εικόνα 37 : Μήνυμα επιβεβαίωσης κράτησης .............................................................................. 47
Εικόνα 38 : Σελίδα κρατήσεων ....................................................................................................... 48
Εικόνα 39 : Επιβεβαίωση Ακύρωσης.............................................................................................. 48
vi
1. Εισαγωγικά στοιχεία
1.1.
Πρόλογος
Η εργασία «Ηλεκτρονικό σύστημα ενοικίασης οχημάτων» αναπτύχθηκε στα πλαίσια μιας
προσπάθειας για την ανάπτυξη ενός διαδικτυακού πληροφοριακού συστήματος που θα δίνει τη
δυνατότητα για ενοικιάσεις αυτοκινήτων.
1.2.
Σκοπός και στόχοι της εργασίας
Κύριος σκοπός της παρούσας εργασίας είναι ο σχεδιασμός και ανάπτυξη μιας
ιστοσελίδας διαχείρισης ενοικιάσεων. Πρωταρχικός σκοπός αποτέλεσε η δημιουργία και
κανονικοποίηση μιας βάσης δεδομένων, στην οποία θα καταχωρούνται όλα τα απαιτούμενα
στοιχεία για ένα τέτοιο σύστημα.
Η ιστοσελίδα θα δίνει τη δυνατότητα διαχείριση ενοικιάσεων των οχημάτων ενός γραφείου.
1.3.
Διάρθρωση της εργασίας
Η εργασία αποτελείται από 5 κεφάλαια.
Στο 1ο κεφάλαιο παρατίθενται κάποια εισαγωγικά στοιχεία της εργασίας όπως η
αναγκαιότητα της.
Στο 2ο κεφάλαιο παρουσιάζεται το θεωρητικό υπόβαθρο της εργασίας. Παρουσιάζονται
όροι όπως το διαδίκτυο κτλ.
Το 3ο κεφάλαιο αναλύει την σχεδίαση ενός λογισμικού, ξεκινώντας από τις απαιτήσεις
που τίθενται. Παρουσιάζεται το κύριο μέρος της εργασίας δηλαδή το πώς δημιουργήθηκε η βάση
δεδομένων και η ιστοσελίδα.
Στο 4ο κεφάλαιο παρουσιάζεται ένα εγχειρίδιο χρήσης με αναλυτικές λεπτομέρειες για να
διευκολύνει τον χρήστη να περιηγηθεί στην ιστοσελίδα.
Στο 5ο κεφάλαιο παρουσιάζονται τα συμπεράσματα και οι μελλοντικές επεκτάσεις της
εφαρμογής.
Στο τέλος παρατίθεται η βιβλιογραφία στην οποία στηρίχθηκε η εργασία, καθώς και ο
κώδικας της εργασίας.
1
2. Θεωρητικό υπόβαθρο
2.1.
Τι είναι το Διαδίκτυο
Το Διαδίκτυο ή Internet όπως ορίζεται το παγκόσμιο δίκτυο ηλεκτρονικών υπολογιστών, οι
οποίοι επικοινωνούν μεταξύ τους χρησιμοποιώντας ένα κοινό πρωτόκολλο επικοινωνίας, το
TCP/IP (Transmission Control Protocol/Internet Protocol). Ουσιαστικά, το διαδίκτυο είναι ένα
σύνολο πολλών υποδικτύων διαφορετικού μεγέθους και περιοχής. Οι χρήστες του Διαδικτύου
έχουν τη δυνατότητα να περιηγηθούν πολύ γρήγορα σε μια τεράστια αποθήκη πληροφοριών, να
αποστείλουν και να λάβουν αρχεία, να κάνουν χρήση της ηλεκτρονικής αλληλογραφίας, και να
κάνουν χρήση ενός μεγάλου εύρους διαφορετικών εφαρμογών.
Για να μεταφερθεί η πληροφορία χωρίς καμία αλλοίωση υφίστανται τα κατάλληλα
πρωτόκολλα μεταφοράς (transfer protocol). Το πρωτόκολλο ορίζει την αποστολή και λήψη
πληροφοριών. Τα πιο διαδεδομένα πρωτόκολλα από αυτά είναι τα εξής:
Hypertext Transfer Protocol (HTTP): Για την περιήγηση στον Παγκόσμιο Ιστό.
Simple Mail Transfer Protocol (SMTP): Για την υπηρεσία του ηλεκτρονικού ταχυδρομείου.
File Transfer Protocol (FTP): Για την υπηρεσία της μεταφοράς αρχείων.
Network News Transfer Protocol (NNTP): Για τη χρήση του Usenet και τη συμμετοχή σε ομάδες
ειδήσεων – συζητήσεων (Newsgroups).
2.2.
Ιστορία και εξέλιξη του Διαδικτύου
Η απαρχή του διαδικτύου συναντάται το 1969 όταν το Υπουργείο Εθνικής Αμύνης των
Η.Π.Α. χορήγησε κονδύλια για τη δημιουργία δικτύου μεταξύ τεσσάρων υπερυπολογιστών. Το
πρόγραμμα λεγόταν ARPA (Advanced Research Projects Agency). Η γεωγραφική θέση των
υπολογιστών ήταν στο πανεπιστήμιο UCLA στο Los Angeles, στο πανεπιστήμιο της Santa
Barbara, στο πανεπιστήμιο της Utah και στο ινστιτούτο ερευνών Stanford. Μέσα σε δύο έτη
συνδέθηκαν στο δίκτυο αυτό ακόμα είκοσι υπολογιστές, ενώ σταδιακά το νούμερο αυτό
μεγάλωνε με υψηλούς ρυθμούς. Το 1974 ήταν χρονιά ορόσημο, καθώς δόθηκε το σημερινό
όνομα του διαδικτύου και έχασε την στρατιωτική του υπόσταση. Με εκρηκτικό ρυθμό αύξησης
στο νέο αιώνα οι συνδεδεμένοι υπολογιστές έφτασαν τα 180.000.000 με πλήθος επιχειρήσεων να
μπαίνουν δυναμικά στο χώρο αυτό.
Το διαδίκτυο χαρακτηρίζεται και ως παγκόσμιο ηλεκτρονικό χωριό, όπου, οι κάτοικοι του
χωρίς περιορισμούς από υπηκοότητα, ηλικία, θρήσκευμα και χρώμα, διαμοιράζονται
πληροφορίες και εκθέτουν ελεύθερα απόψεις πέρα από γεωγραφικά και κοινωνικά σύνορα.
Σύμφωνα με μελέτες, αυτός ο παγκόσμιος ιστός υπολογιστών και χρηστών αριθμεί την τρέχουσα
περίοδο πάνω από δέκα εκατομμύρια υπολογιστές και εκατό εκατομμύρια χρήστες, ενώ
απλώνεται διαρκώς με εκθετικούς ρυθμούς με πάνω από ένα δισεκατομμύριο χρήστες.
2.3.
Τρόποι πρόσβασης στο διαδίκτυο
Πλέον, οι τρόποι σύνδεσης στο διαδίκτυο έχουν αυξηθεί και ο τρόπος σύνδεσης αποτελεί
συνάρτηση πολλών παραγόντων. Για την σύνδεση του υπολογιστή με το Internet, απαιτείται η
εγκατάσταση του λογισμικού TCP/IP. Υπάρχουν αρκετοί τρόποι σύνδεσης στο Internet όπου
βάσει των κυριότερων ευρυζωνικών τεχνολογιών μπορούν να ταξινομηθούν σε δύο βασικές
κατηγορίες: τους ενσύρματους και τους ασύρματους. Οι σημαντικότεροι και πιο σύγχρονοι από
τους αυτούς είναι:
• DSL
• Δορυφορικό σήμα (3G/4G)
2
2.4.
Το προγραμματιστικό περιβάλλον
H εργασία θα βασιστεί στις γλώσσες προγραμματισμού HTML, PHP, Javascript και
MySQL. Η κάθε μία θεωρείται ιδανική στο πεδίο εφαρμογών της, αλλά και συνδυαστικά
αποτελούν κορυφαία λύση στην κατασκευή δυναμικών ιστοσελίδων.
2.4.1. HTML
2.4.1.1.
Η Ιστορία της HTML
2.4.1.2.
Ο ορισμός της HTML
Η HTML είναι ένα μέλος μιας οικογένειας που ονομάζεται γλώσσα σήμανσης SGML, το
οποίο σημαίνει πρότυπο Generalized Markup Language. Η SGML αναπτύχθηκε από τον Διεθνή
Οργανισμό Προτύπων το 1986 για να καθορίσει τη γλώσσα σήμανσης σχεδιαστεί για διάφορους
σκοπούς. (Mack & Platt 1997, 29).
Η HTML και το Web για πρώτη φορά σχεδιάστηκαν το 1989 από έναν ερευνητή που
ονομάζεται Tim Berners-Lee, που εργαζόταν για το CERN, το Ευρωπαϊκό Εργαστήριο Φυσικής
Σωματιδίων στη Γενεύη, Ελβετία. Οι ερευνητές εκεί ανέπτυξαν το πρώτο World Wide Web
προγραμμάτων το 1990. Τον Δεκέμβριο του 1994, το World Wide Web Consortium (W3C), το
οποίο είναι πλέον υπεύθυνο για τα πρότυπα του HTTP, HTML, και άλλες τεχνολογίες Web,
αναδιοργανώθηκε.
Το πρώτο όνομα της γλώσσας ήταν το HTML. Ήταν μια εξαιρετική πρώτη προσπάθεια,
και το θεμέλιο για τις επόμενες εκδόσεις. Ο διάδοχος του HTML ονομαζόταν HTML + το 1993.
(Mack & Platt 1997, 30). Το 1995, η HTML 2.0 δημοσιεύτηκε ως το πρώτο πρότυπο και ως η πιο
δημοφιλής έκδοση του HTML. Έφερε κάποιες πρόσθετες δυνατότητες, όπως το ανέβασμα
αρχείων και οι πίνακες. Η επόμενη βασική έκδοση ήταν η HTML 3.2, η οποία δημοσιεύθηκε τον
Ιανουάριο του 1997 ως η πρώτη έκδοση που αναπτύχθηκε και τυποποιήθηκε αποκλειστικά από το
W3C. Μεταξύ HTML 2.0 και 3.2, υπήρξε μία έκδοση που ονομάζεται HTML 3.0. Λόγω της πολύ
μεγάλης αλλαγής από την προηγούμενη έκδοση, αντικαταστάθηκε από την HTML 3.2. (Mack &
Platt 1997, 30). Τον Δεκέμβριο του 1997, η HTML 4.0 δημοσιεύτηκε ως σύσταση του W3C.
Αρχικά με την κωδική ονομασία Cougar-‖. Τον Δεκέμβριο του 1999, η HTML 4.01, δόθηκε στη
δημοσιότητα. Και από τα μέσα του 2008, η HTML 4.01, είναι η πιο πρόσφατη έκδοση της
HTML, μέχρι να σταθεροποιηθεί η HTML5. H HTML5 είναι μια υπό ανάπτυξη γλώσσα
σήμανσης για τον Παγκόσμιο Ιστό που όταν ετοιμαστεί θα είναι η επόμενη μεγάλη έκδοση
της HTML . Η ομάδα Web Hypertext Application Technology Working Group (WHATWG)
άρχισε δουλειά σε αυτή την έκδοση τον Ιούνιο του 2004 με το όνομα Web Applications 1.0. Η
HTML5 προορίζεται για αντικατάσταση της HTML 4.01, της XHTML 1.0, και της DOM Level 2
HTML. Ο σκοπός είναι η μείωση της ανάγκης για ιδιόκτητα plug-in και πλούσιες διαδικτυακές
εφαρμογές (RIA) όπως το Adobe Flash, το Microsoft Silverlight, το Apache Pivot, και η Sun
JavaFX.
HTML σημαίνει Hypertext Markup Language. Η κατάληξη ενός τέτοιυ αρχείου είναι
html ή htm. Αποτελεί τη γλώσσα σήμανσης με την οποία γράφονται τα έγγραφα του παγκόσμιου
ιστού και επιτρέπει τη δημιουργία υπερσυνδέσμων, την συμπλήρωση φορμών κτλ.(Graham 1998,
xix).
Ως υπερκείμενο ορίζουμε ένα συνηθισμένο κείμενο το οποίο έχει εμπλουτιστεί με
επιπλέον χαρακτηριστικά όπως εικόνες, πολυμέσα και σύνδεσμους σε άλλα έγγραφα. (Mack &
Platt 1997, 21).
Σήμανση είναι η διαδικασία κατά την οποία προστίθονται επιπλέον σύμβολα στο κείμενο.
Κάθε τέτοιο σύμβολο είναι στην HTML μία εντολή που υπαγορεύει στο φυλλομετρητή πως θα
παρουσιάσει το κείμενο. Τα σύμβολα αυτά ονομάζονται elements ή tags. (Mack & Platt 1997, 22)
Αναμφισβήτητα η HTML είναι μια γλώσσα, καθώς έχει το δικό της συντακτικό και κανόνες
επικοινωνίας. Στην πραγματικότητα, όμως, δεν αποτελεί μια γλώσσα προγραμματισμού. Ο
σκοπός της δεν είναι η δημιουργία κάποιου προγράμματος. (Mack & Platt 1997, 22).
3
2.4.1.3.
Η δομή της HTML
Η HTML ως δομημένη γλώσσα έχει κανόνες σχετικά με την σύνταξη των στοιχείων της.
Αυτοί οι κανόνες οδηγούν στη λογική δομή πάνω στο έγγραφο. (Graham 1998, 67).
Η δομή της HTML είναι αυστηρά ιεραρχική με εμφώλευση (Bowers 2007, 37).
Τα έγγραφα της γλώσσας αποτελούνται αποκλειστικά από τα στοιχεία της και η γενική μορφή
αποτελείται από τρία στοιχεία:
• Το σύμβολο ανοίγματος < και το σύμβολο κλεισίματος >
• Επιπλέον χαρακτηριστικά μετά το σύμβολο ανοίγματος
• Οποιοδήποτε περιεχόμενο κειμένου ή/και εικόνας ή άλλες φωλιασμένες ετικέτες μεταξύ
των συμβόλων ανοίγματος και κλεισίματος (HTML Wikipedia 2011).
Εικόνα 1 : Headers HTML
Οι κύριες δομικές ετικέτες είναι οι <html>, <head>, and <body>. Οι πληροφορίες σχετικά
με το έγγραφο, όπως ο τίτλος, εισάγονται στο <head> όπως και το περιεχόμενο του εγγράφου
περιέχεται στο <body> (Bowers 2007, 37).
2.4.2. CSS
2.4.2.1.
Η ιστορία της CSS
Η γλώσσα Cascading Style Sheets (CSS) αναπτύχθηκε για να παρέχει καλύτερη
εμφάνιση στα HTML έγγραφα (Cascading Style Sheets Wikipedia 2011). Μέχρι την εμφάνιση
της CSS δεν υπήρχε ένα συγκεκριμένο στυλ εμφάνισης των εγγράφων με αποτέλεσμα αυτό να
επαφίεται στους φυλλομετρητές. (York 2005, 13).
Όταν, όμως, η HTML επεκτάθηκε, η CSS ήρθε να καλύψει ένα ευρύτερο φάσμα
στιλιστικών κενών και να ανταποκριθεί στις απαιτήσεις της ανάπτυξης και σχεδιασμού
ιστοσελίδων. Αυτή η εξέλιξη έδωσε στον σχεδιαστή περισσότερο έλεγχο πάνω από την εμφάνιση
της τοποθεσίας.
4
Εικόνα 2 : Δομή κώδικα CSS
Το 1994 ο Håkon Wium Lieδημοσίευσε το πρώτο σχέδιο του Cascading Style Sheet
HTML. Το σχέδιο αυτό ήταν μια πρόταση για το πώς τα HTML έγγραφα θα μπορούσαν να
οριστούν χρησιμοποιώντας απλές δηλώσεις. Ο Bert Bos, υποστήριξε ότι η CSS θα ήταν καλύτερη
εφαρμόσιμη ως ένα γενική γλώσσα φύλλο στυλ, που εφαρμόζεται σε περισσότερους από έναν
τύπο του εγγράφου. (York 2005, 13).
Επιπλέον, η CSS έρχεται σε τέσσερις διαφορετικές εκδόσεις, κάθε νεότερη έκδοση
συνέχεια στο έργο της προηγούμενης. Η πρώτη έκδοση ονομάζεται CSS1 και συστήθηκε από το
W3C το 1996. Η δεύτερη εκδοχή, CSS2, συστήθηκε από το W3C το 1998. Η τρίτη έκδοση
ονομάστηκε CSS2.1. (York 2005, 11). Η τέταρτη έκδοση ονομάζεται CSS3 και τα πρώτα σχέδια
της δημοσιεύθηκαν τον Ιούνιο του 1999 (Cascading Style Sheets Wikipedia 2011).
2.4.2.2.
Ο ορισμός του CSS
Το Cascading Style Sheet, αναφέρεται ως CSS, είναι μια γλώσσα στυλ που
χρησιμοποιείται για να περιγράψει την εμφάνιση και μορφοποίηση ενός εγγράφου γραμμένο σε
μια γλώσσα σήμανσης (Cascading Style Sheets Wikipedia 2011). Έτσι, η CSS είναι ένας τρόπος
για να ελέγχετε τον τρόπο εμφάνισης των HTML στοιχείων στους φυλλομετρητές (Lemay &
Colburn 2006). Αποτελεί μια μορφή διαχωρισμού της παρουσίασης και του περιεχομένου για το
σχεδιασμό ιστοσελίδων.
Πιο συχνά, η CSS συνδυάζεται με τη σήμανση γλώσσα HTML ή XHTML. Οι προαναφερθείσες
περιέχουν δεδομένα της ιστοσελίδας της, ενώ το έγγραφο CSS που περιέχει πληροφορίες σχετικά
με το πως η ιστοσελίδα πρέπει να μοιάσει. (York 2005)
2.4.3. Η γλώσσα PHP
Η PHP είναι μια γλώσσα δέσμης ενεργειών που είναι γραμμένη μέσα σε κώδικα HTML
και εκτελείται στην πλευρά του διακομιστή. Έχει πολλά στοιχεία από την γλώσσα C, Java και την
Perl. Η κύρια χρήση της PHP είναι η δημιουργία των ιστοσελίδων δυναμικά. Μια ιστοσελίδα που
έχει γραφεί σε php ανοίγει από το πρόγραμμα περιήγησης σε πραγματικό χρόνο έχει για
επεξεργασία από ένα διακομιστή όπως ο apache. Το πλεονέκτημα του apache είναι όταν ο
χρήστης επισκεφθεί την ιστοσελίδα, το πρόγραμμα περιήγησης επικοινωνεί με το διακομιστή
μέσω του πρωτοκόλλου http και ως εκ τούτου οι ιστοσελίδες εμφανίζονται στην οθόνη του
χρήστη ως html κώδικας. Η ιστορία της PHP ξεκινά από το 1994 όταν ο Rasmus Lerdorf
χρησιμοποιούσε τη γλώσσα Perl για να δημιουργήσει μια απλή δέσμη ενεργειών με όνομα
php.cgi. Ο λόγος για τη δημιουργία της δέσμης ενεργειών ήταν για να περιέχει μια λίστα με
στατιστικά στοιχεία για τα πρόσωπα που βλέπουν διαδικτυακά το βιογραφικό του. Στη συνέχεια
έδωσε σε φίλους τη δέσμη ενεργειών ώστε να προστεθούν περισσότερες στοιχεία. Στην αρχή το
όνομα της γλώσσας ήταν PHP/FI (προσωπική κεντρική σελίδα / μορφή διερμηνείας). Το 1997
πάνω από 50.000 σελίδες web χρησιμοποιούσαν τη γλώσσα αυτή. Η γλώσσα ανανεώθηκε στην
5
έκδοση 2.0 έχοντας ως βάσης της και τη γλώσσα C. Οι Andi Gutmans και Zeev Suraski
ξαναέγραψαν την γλώσσα PHP, με βάση την PHP / FI 2.0. Έτσι, ήρθε η PHP 3.0. Το 1998
δημιουργήθηκε η 4η έκδοση της PHP και τον Ιούλιο του 2004 γεννήθηκε η έκδοση 5.0. Στις
μέρες μας χρησιμοποιείται η 6η έκδοση.
Εικόνα 3 : Δομή PHP
Πλεονεκτήματα:
• Η PHP είναι προσβάσιμη
• Διατίθεται δωρεάν
• Διατίθεται με τεκμηρίωση σε πολλές γλώσσες
• Υπάρχουν πολλές ομάδες υποστήριξης, φόρουμ και ομάδες που υποστηρίζουν
PHP
• Υπάρχει πληθώρα διαδικτυακών πληροφοριών όσον αφορά την PHP
• είναι γρήγορο να αναπτυχθεί κώδικας σε PHP
• ένα βασικό PHP script μπορεί να δημιουργηθεί χωρίς μια βαθειά κατανόηση του
προγραμματισμού
• Οι προγραμματιστές σε Java, PERL, BASIC και άλλες δημοφιλείς γλώσσες
βρίσκουν πολλούς παραλληλισμούς με τη PHP άρα και διευκόλυνση στη
μετάβασης σε PHP
• PHP είναι ευέλικτη.
• Εκτελείται σε πολλά διαφορετικά λειτουργικά συστήματα
2.4.4. PHP Sessions
6
Όταν µια ιστοσελίδα γίνεται όλο και πιο πολύπλοκη, γίνεται πολύπλοκος και ο κώδικας
που το υποστηρίζει. Όταν φτάσουµε σε ένα στάδιο όπου η ιστοσελίδα πρέπει να περάσει τα
δεδοµένα του χρήστη από τη µία σελίδα στην άλλη, ίσως ήρθε η ώρα να αρχίσουµε να
σκεφτόµαστε σχετικά µε τη χρήση των PHP Sessions.
Μια κανονική ιστοσελίδα HTML δεν θα περάσει τα δεδοµένα από τη µία σελίδα στην άλλη. Με
άλλα λόγια, όλες οι πληροφορίες θα έχουν ξεχαστεί όταν µια νέα σελίδα φορτωθεί. Αυτό
δηµιουργεί πρόβληµα για εργασίες όπως ένα καλάθι αγορών, το οποίο απαιτεί τα δεδοµένα
(επιλεγµένο προϊόν του χρήστη) που πρέπει να θυµόµαστε από τη µία σελίδα στην άλλη. Στην
περίπτωση της παρούσας εργασίας όταν το Latitude και το Longitude πρέπει να περάσει στην
επόµενη σελίδα, ώστε να φορτωθεί ο χάρτης µε αυτά τα δεδοµένα ή το username και το password
όταν ο χρήστης κάνει login. Ένα PHP Session λύνει αυτό το πρόβληµα επιτρέποντάς µας να
αποθηκεύσουµε πληροφορίες του χρήστη στον διακοµιστή για να χρησιµοποιηθούν αργότερα
(δηλαδή το Latitude και το Longitude κ.λπ.).
Σύνταξη των PHP Sessions
Πριν ξεκινήσουµε την αποθήκευση των στοιχείων του χρήστη, πρέπει να ξεκινήσουµε
για πρώτη φορά τα Sessions. Αυτό γίνεται στην αρχή του κώδικα PHP, πριν να σταλεί κάποιο
Html ή άλλο κείµενο. Παρακάτω φαίνεται µια απλή δέσµη ενεργειών που θα πρέπει να
τοποθετήθεί στην αρχή του κώδικα PHP µας για να ξεκινήσει ένα PHP Session.
<?php
session_start(); // start up your PHP session!
?>
Αυτό το µικροσκοπικό κοµµάτι του κώδικα καταχωρεί το Session του χρήστη µε τον
server και µας επιτρέπει να ξεκινήσουµε την αποθήκευση πληροφοριών του χρήστη και να
εκχωρεί µια UID (µοναδικό αναγνωριστικό αριθµό) για τη συνεδρία του συγκεκριµένου χρήστη.
Δήλωση ενός Session
Όταν θέλουµε να αποθηκεύσουµε τα δεδοµένα ενός χρήστη σε µια σύνοδο
χρησιµοποιούµε το $_SESSION. Με αυτό γίνεται η αποθήκευση και η ανάκτηση των δεδοµένων
του Session.
<?php session_start();
$_SESSION['views'] = 1; // store session data
echo "Pageviews = ". $_SESSION['views']; //retrieve data ?>
Χρήση της λειτουργίας isset της PHP
Τώρα που είµαστε σε θέση να αποθηκεύσουµε και να ανακτήσουµε δεδοµένα από το
$_SESSION, µπορούµε να διερευνήσουµε ορισµένες από τις πραγµατικές λειτουργίες των
Sessions. Όταν δηµιουργείται µια µεταβλητή και αποθηκεύεται σε µια περίοδο, πιθανόν να
θέλουµε να τη χρησιµοποιήσουµε στο µέλλον. 4στόσο, προτού τη χρησιµοποιήσουµε είναι
απαραίτητο να ελέγξουµε αν υπάρχει.
Σε αυτό το σηµείο είναι όπου η λειτουργία isset της PHP θα µας βοηθήσει. Η isset είναι
µια λειτουργία που θα λαµβάνει κάθε µεταβλητή που θέλουµε να χρησιµοποιήσουµε και ελέγχει
για να δει αν έχει τεθεί. Δηλαδή, αν της έχει ήδη ανατεθεί µια τιµή.
Με το προηγούµενο παράδειγµα, µπορούµε να δηµιουργήσουµε µια πολύ απλή προβολή
σελίδας µε τη χρήση της isset για να ελέγξουµε αν η µεταβλητή έχει ήδη δηµιουργηθεί. Αν έχει
µπορούµε να προσαύξησουµε τον counter µας. Αν δεν υπάρχει µπορούµε να δηµιουργήσουµε
έναν µετρητή προβολής σελίδας και να του δώσουµε την τιµή ένα. Εδώ είναι ο κώδικας για να
γίνει αυτό:
<?php session_start();
7
if(isset($_SESSION['views'])) $_SESSION['views'] = $_SESSION['views']+ 1;
else
$_SESSION['views'] = 1;
echo "views = ". $_SESSION['views']; ?>
Η πρώτη φορά που εκτελείτε αυτήν τη δέσµη ενεργειών σε ένα πρόσφατα ανοιγµένο
browser, δήλωση if θα αποτύχει διότι καµία µεταβλητή Session δεν θα έχει αποθηκευτεί ακόµα.
4στόσο, εάν ανανεώσουµε τη σελίδα, η δήλωση if θα ήταν true και ο µετρητής θα αυξάνονται
κατά ένα. Κάθε φορά που ξανατρέχουµε αυτό το σενάριο θα βλέπουµε µια αύξηση κατά ένα του
counter.
Καθαρισµός και Καταστροφή της Session
Αν και τα δεδοµένα Session είναι προσωρινά και δεν χρειάζεται να γίνει διαγραφή, ίσως
θελήσουµε να διαγράψουµε µερικά δεδοµένα για τις διάφορες εργασίες µας. Όπως για
παράδειγµα µετά από µια συναλλαγή, όπου ο χρήστης έχει δώσει τα στοιχεία του, για παράδειγµα
τον αριθµό της πιστωτικής του κάρτας.
<?php session_start()
if(isset($_SESSION['cart'])) unset($_SESSION['cart']);
?>
Μπορούµε επίσης να καταστρέψουµε εντελώς το Session εξ ολοκλήρου µε την κλήση της
λειτουργίας session_destroy.
<?php session_start(); session_destroy(); ?>
Η καταστροφή του Session θα επαναφέρει τη συνεδρία µας, και όλα τα αποθηκευµένα δεδοµένα
µας θα χαθούν.
2.4.5. MySQL
Η MySQL είναι ένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων που έχει
εγκατασταθεί περισσότερες από 11,000,000 φορές. Το όνομα προέρχεται από την κόρη του Modi
Videnious. Το πρόγραμμα εκτελείται σε ένα διακομιστή που παρέχει πρόσβαση σε πολλούς
χρήστες σε ένα σύνολο βάσεων δεδομένων. Ο πηγαίος κώδικας του προγράμματος είναι
διαθέσιμος
μέσω
του
GNU
General
Public
Licence.
Εικόνα 4 : MySQL
Η MySQL παρέχει μια υλοποίηση μιας βάσης δεδομένων SQL κατάλληλη για μικρές και μεσαίες
ιστοσελίδες. Η βάση δεδομένων είναι άνευ κόστους και ανοικτού κώδικα με μία εμπορική άδεια
8
διαθέσιμη. Οι πιο κοινές εφαρμογές για την MySQL συμπεριλαμβάνουν web εφαρμογές
βασισμένες σε php και java που επικοινωνούν με μια βάση δεδομένων στο παρασκήνιο.
Η MySQL χρησιμοποιείται συνήθως με δύο διαφορετικές αποθηκευτικές μηχανές. Η μία
με όνομα MyISAM, η οποία δεν υποστηρίζει συναλλαγές (transactions) και αποθηκεύει κάθε
πίνακα σε ένα σετ τριών αρχείων. Η άλλη ονομάζεται InnoDB και υποστηρίζει συναλλαγές και
αποθηκεύει όλα τα δεδομένα σε ένα ενιαίο σύνολο από bytes.
Η MySQL έχει ένα βασικό πλεονέκτημα, δεδομένου ότι είναι δωρέαν: είναι συνήθως
διαθέσιμη σε κοινόχρηστο πακέτα φιλοξενίας και μπορεί να ρυθμίζεται εύκολα σε περιβάλλον
Linux, Unix και Windows. Σε περίπτωση που μια εφαρμογή web απαιτεί περισσότερο από μία
βάση δεδομένων ή απαιτεί εξισορρόπηση φορτίου, δεν είναι δύσκολο να οριστούν παρουσίες της
βάσης δεδομένων που απαιτούν μόνο το κόστος του υλικού, σε αντίθεση με εμπορικές βάσεις
δεδομένων που θα απαιτούσαν μια ενιαία άδεια για κάθε περίπτωση.
2.5.
PHPMyAdmin
Το PhpMyAdmin είναι ένα εργαλείο γραμμένο σε php με το οποίο γίνεται η διαχείριση
βάσεων δεδομένων που διατίθενται στο web. Το phpMyAdmin μπορεί να χειρίζεται πλήρως
βάσεις δεδομένων, πίνακες, πεδία πινάκων αλλά και ένα ολόκληρο MySQL Server. Υποστηρίζει
54 γλώσσες, μεταξύ των οποίων και τα ελληνικά και είναι λογισμικό ανοιχτού κώδικα.
Εικόνα 5 : Απόσπασμα από PhpMyAdmin
2.5.1. Δυνατότητες του PhpMyAdmin
Το PhpMyAdmin μπορεί να :
• Δημιουργεί και να διαγράφει βάσεις δεδομένων
• Δημιουργεί, τροποποιεί, διαγράφει, αντιγράφει και μετονομάζει πίνακες
• Κάνει συντήρηση της βάσης
• Προσθέτει, διαγράφει και τροποποιεί πεδία πινάκων
• Εκτελεί ερωτήματα SQL ακόμα και ομαδικά (batch)
• Διαχειρίζεται κλειδιά σε πεδία
• Φορτώνει αρχεία κειμένου σε πίνακες
• Δημιουργεί και διαβάζει πίνακες (που προέρχονται από dump βάσης)
• Εξάγει δεδομένα σε μορφή CVS, XML και LATEX
• Διαχειρίζεται πολλούς διακομιστές
9
• Διαχειρίζεται τους χρήστες MySQL και τα δικαιώματα τους
• Ελέγχει την αναφορική δραστηριότητα των δεδομένων των MyISAM
πινάκων
• Δημιουργεί PDF γραφικών του layout της βάσης δεδομένων
• Εκτελεί αναζητήσεις σε όλη τη βάση δεδομένων ή μέρος αυτής
• Υποστηρίζει πίνακες InnoDB και ξένα κλειδιά
• Υποστηρίζει MySQLi, μια βελτιωμένη επέκταση του MySQL
2.6.
Javascript
Η JavaScript αναπτύχθηκε αρχικά από τον Brendan Eich του Netscape µε το όνοµα Μόκα,
η οποία αργότερα µετονοµάστηκε σε LiveScript, και τελικά σε JavaScript. LiveScript ήταν το
επίσηµο όνοµα για τη γλώσσα, όταν εισήχθη για πρώτη φορά σε beta εκδόσεις του Netscape
Navigator 2,0 τον Σεπτέµβριο του 1995, αλλά µετονοµάστηκε σε JavaScript σε µια κοινή
ανακοίνωση µε την Sun Microsystems τον Δεκέµβριο του 1995, όταν προοριζόταν να αναπτυχθεί
στη νέα έκδοση του Netscape Navigator 2.0B3.
2.6.1. Τι είναι Javascript
JavaScript, επίσης γνωστή ως ECMAScript , είναι µία πρότυπη object-oriented scripting
γλώσσα η οποία είναι δυναµική και έχει πρώτης τάξεως λειτουργίες. Θεωρείται επίσης µια
λειτουργική γλώσσα προγραµµατισµού , όπως τις Scheme και OCaml.
JavaScript είναι µια εφαρµογή του προτύπου γλώσσας ECMAScript και χρησιµοποιείται
κυρίως µε τη µορφή client-side Javascript, όπου υλοποιείται ως µέρος ενός web browser, ώστε να
παρέχονται ενισχυµένη διεπαφή χρηστών και δυναµικές ιστοσελίδες.
Αυτό επιτρέπει την πρόσβαση µέσω προγραµµατισµού στα υπολογιστικά αντικείµενα
µέσα σε ένα περιβάλλον υποδοχής.
Χρήση JavaScript σε εφαρµογές έξω από ιστοσελίδες, όπως για παράδειγµα σε έγγραφα
PDF, site-specific προγράµµατα περιήγησης και desktop widgets, είναι επίσης σηµαντική.
Νεότερα και ταχύτερα VMs Javascript και πλαίσια βασισµένα πάνω σε αυτές (κυρίως Node.js),
παρουσίασαν επίσης αύξηση της δηµοτικότητας του Javascript για server-side web εφαρµογές.
JavaScript χρησιµοποιεί σύνταξη επηρεασµένη από αυτή της C. Πολλά ονόµατα και
συµβάσεις ονοµατολογίας έχουν αντιγραφεί από τη Java, αλλά οι δύο γλώσσες είναι διαφορετικές
και έχουν πολύ διαφορετική σηµασιολογία. Οι βασικές αρχές σχεδιασµού στο πλαίσιο της
JavaScript, λαµβάνονται από Self και Scheme γλώσσες προγραµµατισµού.
Είναι µια γλώσσα συγγραφής σεναρίων (scripting language) για την προσθήκη
διαδραστικότητας (interactivity) σε ιστοσελίδες. Δηµιουργήθηκε από την εταιρεία Netscape µε
αρχικό όνοµα LiveScript και είναι πολύ δηµοφιλής στους δηµιουργούς ιστοσελίδων καθώς είναι
απλή στη σύνταξή της και υποστηρίζεται απ' όλους τους δηµοφιλείς φυλλοµετρητές.
Ανταγωνιστής της είναι η γλώσσα συγγραφής σεναρίων VBScript της εταιρείας Microsoft. Μια
άλλη προσέγγιση στον προγραµµατισµό από την πλευρά του πελάτη είναι η γλώσσα
προγραµµατισµού JavaScript. Για τον προγραµµατισµό σε JavaScript πρέπει να εισάγετε
δηλώσεις προγραµµατισµού απευθείας στον κώδικα HTML. Αυτός ο κώδικας αλληλεπιδρά µε
τον browser, για παράδειγµα παράγει οπτικά εφέ, όπως rollover. Αυτό βρίσκεται σε αντίθεση µε
τα applet όπου ο κώδικας βρίσκεται στον διακοµιστή, υπάρχει µόνο αναφορά για αυτόν στον
κώδικα HTML, φορτώνεται στον πελάτη χρησιµοποιώντας την αναφορά και εκτελείται.
2.6.2. Δυνατότητες της Javascript
Με τη JavaScript µπορούµε να φτιάξουµε σενάρια που να εκτελούν αυτόµατες εργασίες,
για παράδειγµα όταν µια σελίδα του Web ανοίγει ή κλείνει. Επίσης µπορούµε να κάνουµε την
JavaScript να εκτελεί ενέργειες ανταποκρινόµενη σε ένα συγκεκριµένο γεγονός. Για παράδειγµα
όταν ο χρήστης επιλέγει ένα κουµπί ή ένα σύνδεσµο, όταν εστιάζει από ένα στοιχείο µιας φόρµας
σε ένα άλλο στοιχείο της . Τα σενάρια µπορεί να ανοίγουν νέα παράθυρα στον browser και να
εµφανίζουν συγκεκριµένα HTML έγγραφα ή να παρουσιάζουν µια σελίδα επιλεγµένη από τον
κατάλογο ιστορικού του browser. Μπορεί επίσης να είναι και περίπλοκες δηλαδή ένα σενάριο
10
µπορεί να ελέγχει τα περιεχόµενα µιας φόρµας που θέλει να υποβάλει ένας χρήστης και στη
συνέχεια να προειδοποιεί τον χρήστη αν τα δεδοµένα είναι λάθος. Το σενάριο µπορεί να ψάξει
για πληροφορίες σε µια µικρή βάση δεδοµένων ή να κάνει πολύπλοκους υπολογισµούς
οικονοµικών στοιχείων.
Με την βοήθεια της Java Script µπορούµε να πετύχουµε:
• Πολυµερή έγγραφα µε πλαίσια
• Επαναφόρτωση µέρους του παραθύρου
• Δηµιουργία έγγραφων µε αλληλεπίδραση
• Περισσότερος έλεγχος στην αλληλεπίδραση µε το χρήστη
• Έγγραφα µε µνήµη
• Ζωντανά έγγραφα
• Μηνύµατα που ολισθαίνουν
• Ρολόγια
• Χρονικός µηχανισµός αντίστροφης µέτρησης
• Έγγραφα µε αυτόµατη ενηµέρωση κ.α.
2.6.3. Τρόπος Λειτουργίας της JavaScript
Η JavaScript είναι ενσωµατωµένη σ' ένα αρχείο HTML ανάµεσα σε tags SCRIPT.
Παρακάτω δίνεται ένα παράδειγµα ενός πολύ απλού προγράµµατος:
<SCRIPT LANGUAGE = "JavaScript"> document.writeln( "<H3> Hello there");
</SCRIPT>
O κώδικας βρίσκεται µέσα στα <SCRIPT> </SCRIPT> και αποτελείται από µία απλή
δήλωση που εµφανίζει σε µια ιστοσελίδα το µήνυµα 'Hello there'στο σηµείο όπου υπάρχει
δήλωση µέσα στο HTML αρχείο. Το µήνυµα εµφανίζεται σε επικεφαλίδα µεγέθους 3,
χρησιµοποιώντας το κατάλληλο tag. Το αντικείµενο document αντιπροσωπεύει το αρχείο HTML
στο οποίο περικλείεται ο κώδικας. Η µέθοδος writeln του αντικειµένου document γράφει ένα
string στον HTML κώδικα που θα εµφανιστεί.
JavaScript µοιάζει πολύ µε µια κανονική γλώσσα προγραµµατισµού καθώς περιλαµβάνει:
1. Αριθµητικούς τύπους δεδοµένων, όπως ακέραιους, καθώς και strings.
2. Ένα µεγάλο αριθµό τελεστών που µπορούν να εφαρµοστούν στους διάφορους τύπους
δεδοµένων.
3. Δοµές ελέγχου, όπως οι if και while.
4. Συναρτήσεις: κοµµάτια κώδικα που µπορούν να κληθούν επανειληµµένα και ανεξάρτητα
όποτε χρειάζεται να εκτελεστεί η συγκεκριµένη λειτουργία που µέθοδος υλοποιεί.
5. Πίνακες που περιέχουν συλλογές δεδοµένων.
Αυτό που την ξεχωρίζει πάντως είναι η ικανότητα, χρησιµοποιώντας την τεχνολογία της
δυναµικής HTML (DHTML), να αλληλεπιδρά µε τα στοιχεία µίας ιστοσελίδας, για παράδειγµα
µπορεί να έχει πρόσβαση στα στοιχεία µιας φόρµας HTML ή ν' αλλάξει την εµφάνιση ενός
στοιχείου κειµένου.
2.7.
Joomla
Το Joomla! είναι ένα ελεύθερο και ανοικτού κώδικα σύστημα διαχείρισης περιεχομένου.
Χρησιμοποιείται για τη δημοσίευση περιεχομένου στον παγκόσμιο ιστό (World Wide Web) και
σε τοπικά δίκτυα intranets. Είναι γραμμένο σε PHP και αποθηκεύει τα δεδομένα του στη βάση
MySQL. Το βασικό χαρακτηριστικό του είναι ότι οι σελίδες που
εμφανίζει είναι δυναμικές, δηλαδή δημιουργούνται την στιγμή που ζητούνται. Ένα σύστημα
διακομιστή (server) όπως είναι ο Apache λαμβάνει τις αιτήσεις των χρηστών και τις εξυπηρετεί.
11
Με ερωτήματα προς τη βάση λαμβάνει δεδομένα τα οποία μορφοποιεί και αποστέλλει
στον εκάστοτε φυλλομετρητή (web browser) του χρήστη. Το Joomla! έχει και άλλες δυνατότητες
εμφάνισης όπως η προσωρινή αποθήκευση σελίδας, RSS feeds, εκτυπώσιμες εκδόσεις των
σελίδων, ειδήσεις, blogs, δημοσκοπήσεις, έρευνες, καθώς και πολύγλωσση υποστήριξη των
εκδόσεών του.
Πλεονεκτήματα
• Φιλικό για όλους τους τύπους χρηστών: σχεδιαστές, προγραμματιστές και διαχειριστές.
• Υπάρχουν πολλές επεκτάσεις που βοηθούν στην κατασκευή ιστοσελίδας (και στα
ελληνικά).
• Πληθώρα προτύπων ώστε να αλλάζει με ευκολία την εμφάνιση του ιστοχώρου.
• Υπάρχει ελληνική κοινότητα που είναι τεράστια και βοηθάει πολύ στην υποστήριξη.
• Απλή συντήρηση του ιστοχώρου.
Μειονεκτήματα
Υπάρχουν μερικοί τύποι (κυρίως αρχάριων) χρηστών που μπορεί να δυσκολευτούν στη
χρήση του.
12
3. Υλοποίηση
3.1.
Ανάλυση Λογισμικού
Η Ανάλυση λογισμικού αποτελείται από ένα σύνολο δραστηριοτήτων που παράγουν
λογισμικό. Υπάρχουν τέσσερις κοινές δραστηριότητες σε όλες αυτές τις διαδικασίες:
Προδιαγραφές του λογισμικού. Οι πελάτες και οι μηχανικοί καθορίζουν όχι
•
μόνο του λογισμικού, αλλά και τους περιορισμούς της λειτουργικότητάς του.
Ανάπτυξη λογισμικού. Σε αυτό το στάδιο, το λογισμικό έχει σχεδιαστεί και
αναπτυχθεί με τα κατάλληλα προγράμματα.
Επικύρωσης λογισμικού. Οι δοκιμές γίνονται με σκοπό να διασφαλίσει ότι το
λογισμικό πληροί τις απαιτήσεις του πελάτη.
Εξέλιξη λογισμικού. Αλλαγές γίνονται σε περίπτωση που νέες απαιτήσεις
καταλήξει.
•
•
•
Για το χειρισμό αυτών των δραστηριοτήτων διάφορα μοντέλα productionhave
λογισμικού έχουν αναπτυχθεί, τα οποία είναι απλουστευμένη περιγραφή της διαδικασίας
παραγωγής λογισμικού. Παραδείγματα τέτοιων μοντέλων είναι το μοντέλο του καταρράκτη,
το μοντέλο της εξελικτικής ανάπτυξης και η επαναχρησιμοποιηθεί με βάση το μοντέλο.
Οι απαιτήσεις του συστήματος είναι οι περιγραφές των υπηρεσιών που παρέχονται από
το σύστημα και τους περιορισμούς υπό τους οποίους λειτουργεί. Αυτές οι απαιτήσεις να
ικανοποιήσετε τις ανάγκες των πελατών για ένα σύστημα που βοηθά να επιλυθούν ορισμένα
προβλήματα, όπως ο έλεγχος μιας συσκευής, τοποθετώντας μια παραγγελία ή εύρεση
πληροφοριών. Η διαδικασία της αναγνώρισης, ανάλυσης και τεκμηρίωσης, καθώς και τον
έλεγχο των υπηρεσιών αυτών και περιορισμούς ονομάζεται μηχανικές απαιτήσεις:
•
•
3.1.1.
Λειτουργικές απαιτήσεις: οι δηλώσεις που ορίζουν ποιες υπηρεσίες θα
πρέπει να παρέχονται από το σύστημα, τον τρόπο με τον οποίο θα πρέπει να
αντιδράσουμε σε συγκεκριμένες εισόδους και πώς πρέπει να
συμπεριφέρονται σε ιδιαίτερες καταστάσεις.
Μη λειτουργικές απαιτήσεις: οι προδιαγραφές, οι οποίες δεν σχετίζονται
άμεσα με τις λειτουργίες που παρέχονται από το σύστημα. Περιλαμβάνουν
χρονικούς περιορισμούς, τους περιορισμούς και τους κανόνες διαδικασίας
ανάπτυξης. Η χρηστικότητα απαιτήσεις, τις επιδόσεις και την αξιοπιστία
αποτελούν παραδείγματα της μη λειτουργικές απαιτήσεις.
Καταγραφή απαιτήσεων
Σε αυτή την ενότητα θα παρουσιάσουμε τις λειτουργικές απαιτήσεις του συστήματος μας.
Κωδικό όνομα της απαίτησης
R1
Τίτλος απαίτησης
Δημιουργία πελάτη
Περιγραφή απαίτησης
•
•
•
Ο χρήστης εισάγει τα στοιχεία του πελάτη
Το πρόγραμμα ελέγχει αν δόθηκαν όλα τα απαιτούμενα στοιχεία
Εμφανίζεται μήνυμα επιτυχίας
13
Κωδικό όνομα της απαίτησης
R2
Τίτλος απαίτησης
Αναζήτηση οχήματος
Περιγραφή απαίτησης
•
•
Ο χρήστης μπορεί να αναζητήσει ένα όχημα μέσω της φόρμας αναζήτησης.
Τα αποτελέσματα της αναζήτησης παρουσιάζονται σε νέα σελίδα.
Κωδικό όνομα της απαίτησης
R3
Τίτλος απαίτησης
Ενοικίαση αυτοκινήτου
Περιγραφή απαίτησης
•
•
•
•
Ο χρήστης συμπληρώνει τα στοιχεία της φόρμας
Τα αποτελέσματα των διαθέσιμων αυτοκινήτων παρουσιάζονται σε νέα σελίδα.
Ο χρήστης επιλέγει το αυτοκίνητο που επιθυμεί
Αν είναι συνδεδεμένος, μπορεί να προχωρήσει στην ενοικίαση, ειδάλλως του
εμφανίζσεται μήνυμα λάθους.
3.2.
Περιπτώσεις χρήσης (Use Cases)
Mία περίπτωση χρήσης είναι μια περιγραφή ενός σεναρίου ή σύνολο σεναρίων που
συνδέονται στενά μεταξύ τους. Mία περίπτωση χρήσης προσδιορίζει και περιγράφει την
αλληλεπίδραση μεταξύ των παραγόντων και ειδικών λειτουργικών τμημάτων της εφαρμογής
(system services). Αυτό είναι ένα παράδειγμα χρήσης που περιγράφει ένα υψηλό επίπεδο,
κατά τρόπο συστηματικό και μεθοδικό τρόπο πώς η εφαρμογή χρησιμοποιείται για την
εφαρμογή των στόχων αυτών. Πολλές περιπτώσεις τελικών χρήσεων καλύπτουν όλες τις
απαιτήσεις και την επιθυμητή συμπεριφορά της εφαρμογής Του συστήματος χωρίς να μπούμε
σε λεπτομέρειες, όπως το πώς η εφαρμογή. Μια περίπτωση χρήσης συνήθως περιλαμβάνει
πολλά σενάρια και ενεργοποιεί αποφυγή περιττών πληροφοριών και περιγραφές των
λειτουργιών του συστήματος. Αυτό που προσπαθούμε να επιτύχουμε με τη χρήση
περιπτώσεις είναι μία περιεκτική προβολή των λειτουργιών και της συμπεριφοράς του
συστήματος λογισμικού.
Η χρήση περιπτώσεις είναι κατασκευασμένη με τυπικό τρόπο και αυτό γίνεται μέσω μιας
δομημένης περιγραφής. Τα συστατικά στοιχεία της δομής αυτής είναι:
• όνομα / σύντομη περιγραφή
• χαρακτήρες (παράγοντες): η επικοινωνία με την χρήση.
• Προϋποθέσεις: Τι προϋποθέσεις πρέπει να πληρούνται από την αρχή της
υπόθεσης δήλωση.
• MetaTreaty : Ποιες προϋποθέσεις πρέπει να πληρούνται κατά το τέλος της
υπόθεσης δήλωση.
• Διέγερση: ένα γεγονός που προκαλεί η χρήση υπόθεση.
• Οι Σχέσεις: σχετίζεται, περιλαμβάνει, επέκταση και γενίκευση.
14
•
•
•
Ομαλή ροή Από συμβάντα
Συστατικά της ροής γεγονότα
Εναλλακτικές ροές - Εξαιρέσεις: αποκλίσεις από το κύριο σενάριο για την
επιτυχία.
Χρησιμοποιήστε σενάρια πρέπει να πληρούν συγκεκριμένα ποιοτικά χαρακτηριστικά που
καθορίζουν την πληρότητα του σεναρίου.
•
•
•
•
•
•
Ένα σενάριο για να είναι πλήρης θα πρέπει να καταγράφονται σε μορφή που
επιτρέπει την περαιτέρω ανάλυση.
Το σενάριο πρέπει να καθορίσετε το στόχο ή σκοπό εξυπηρετούνται και μια σαφή
αναφορά στους ενδιαφερόμενους φορείς (χρήστες και τα συστατικά του
συστήματος).
Το σενάριο θα αποτελείται από επιμέρους δραστηριότητες (βήματα) που όταν
εκτελούνται επιτευχθεί το επιθυμητό αποτέλεσμα.
Το σενάριο θα πρέπει να προσδιορίζει τη ροή των δραστηριοτήτων (μέτρα) που
πρέπει να εκτελεστούν.
Για κάθε δραστηριότητα ή βήμα θα πρέπει να είναι ή μπορεί να διαπιστωθεί όρια που
εξασφαλίζουν την έναρξη και το τέλος της δραστηριότητας, και σε γενικές γραμμές
το σενάριο.
Ένα σενάριο θα πρέπει να προσδιορίζει τις προϋποθέσεις ότι η πλήρης και τυχόν
εξαιρέσεις είναι συνήθως εναλλακτικά σενάρια.
Όσον αφορά την τεχνική εγγραφής ένα σενάριο ανάλογα με το βαθμό ωριμότητας
μπορεί να καταγραφεί με πολλούς διαφορετικούς τρόπους, όπως οι εξής:
• Κείμενο / αφήγηση γεγονότων.
• Διατεταγμένη ακολουθία των βημάτων.
• Μορφή δομημένη περιγραφή.
• Διαχωρισμένη αφήγηση.
• Περιπτώσεις χρήσης Model.
• Διάγραμμα script Vord.
• Ακολουθία μοντέλο της UML, κλπ.
Επίσης, είναι δυνατόν το σενάριο αρχικά καταγράφεται από τον γενικό τύπο (π.χ.
κείμενο) πρέπει να χαρακτηριστεί με τη χρήση άλλης μορφής (π.χ. διαχωρίζεται αλληλουχία
των σταδίων) προκειμένου να καταστεί δυνατή η καλύτερη κατανόηση των επιμέρους
στοιχείων.
15
Εικόνα 6 : Σχεδιάγραμμα Επικοινωνίας Χρήστη με Κατάστημα
3.3.
Εφαρμογή Use Case
Η εφαρμογή εστιάζεται στην ανάλυση, το σχεδιασμό και την ανάπτυξη της μιας
ηλεκτρονικής ενοικίασης αυτοκινήτων. Το σύστημα θα παρέχει ένα φιλικό προς το χρήστη
περιβάλλον, μέσω του οποίου ο χρήστης μπορεί, μεταξύ άλλων, για να αναζητήσετε
αυτοκίνητα με βάση συγκεκριμένα κριτήρια και να κάνουν διαδικτυακές νοικιάσεις .
3.3.1. Περιγραφή του συστήματος
Η ανάπτυξη εφαρμογών που βασίζονται σε προηγμένα εργαλεία που συνθέτουν ένα
τεχνολογικό περιβάλλον που βασίζεται στο διαδίκτυο, μέσω της οποίας μπορούν να γίνουν οι
ακόλουθες ενέργειες:
• Εγγραφή Χρήστη. Ο χρήστης είναι σε θέση να κάνει μια διαταγή μόνο εάν έχει
καταχωρηθεί. Για να επιτευχθεί αυτό, ο χρήστης θα πρέπει να πληροί όλα τα
απαιτούμενα δεδομένα μέσω μιας φόρμας εγγραφής. Στη συνέχεια, ο χρήστης μπορεί
να συνδεθεί δίνοντας το όνομα χρήστη και τον κωδικό πρόσβασης.
• Πλοήγηση στην σελίδα: Στο χρήστη παρέχεται αναλυτική περιγραφή για κάθε
οχήματος. Ο χρήστης μπορεί επίσης να ψάξει για ένα όχημα.
3.3.2.
Use cases και σενάρια
Σε αυτή την ενότητα θα αναλύσουμε όλες τις περιπτώσεις χρήσης για τον εντοπισμό
σενάρια χρήσης της εφαρμογής και να καταγράφουν όλες τις περιπτώσεις της
αλληλεπίδρασης του χρήστη με το σύστημα.
16
Για την περίπτωση χρήσης «Ενοικίαση αυτοκινήτου" είναι τα ακόλουθα σενάρια:
• Εγγραφή Χρήστη.
• Σύνδεση χρήστη
• Συμπλήρωση φόρμας ενοικίασης
• Επιλογή οχήματος από τα διαθέσιμα.
3.4.
Μοντέλο Οντοτήτων - Συσχετίσεων (E-R Model)
Η οντότητα-σχέση μοντέλο που αναπτύχθηκε από τον P. Chen (1976), ως ένας
τρόπος επικοινωνίας μεταξύ των χρηστών και σχεδιαστών και χρησιμοποιείται στο πρώτο
στάδιο του σχεδιασμού ενός συστήματος πληροφοριών για την ανάλυση των απαιτήσεων.
Σκοπός του είναι να περιγράψει τις απαραίτητες πληροφορίες που θα αποθηκεύονται στη
βάση δεδομένων ή με τον απαιτούμενο τύπο. Η μοντελοποίηση των δεδομένων είναι η
περιγραφή των όρων και βωτων σχέσεών τους σε μια συγκεκριμένη περιοχή ενδιαφέροντος.
Στην περίπτωση του σχεδιασμού ενός συστήματος πληροφοριών βασίζεται σε μια βάση
δεδομένων, το εννοιολογικό μοντέλο δεδομένων χαρτογραφείται σε προχωρημένο στάδιο σε
ένα λογικό μοντέλο δεδομένων, όπως το σχεσιακό μοντέλο δεδομένων. Αυτό το στάδιο είναι
συνήθως ονομάζεται λογικό στάδιο του σχεδιασμού. Στη συνέχεια, κατά τη διάρκεια του
φυσικού σχεδιασμού το λογικό μοντέλο αντιστοιχίζεται σε ένα φυσικό μοντέλο.
Τα Διαγράμματα οντοτήτων-συσχετίσεων έχουν ως κύριο χαρακτηριστικό τους την
οντότητα.. Η οικονομική οντότητα είναι μια αναπαράσταση ενός αυτόνομη ύπαρξη με
σωματική ή θεωρητική ύπαρξη, κάθε έννοια αντικείμενο, κατάσταση ή αφηρημένη που
υπάρχει. Σε αυτή την περίπτωση, η οικονομική οντότητα είναι ένας χρήστης του δικτυακού
τόπου (ένας άνθρωπος με ένα όνομα, τα χαρακτηριστικά, κλπ.), αλλά και ένα προϊόν του
καταστήματος.
Τα δεδομένα θα αποθηκεύονται σε μία οντότητα μοντέλο οντοτήτων-συσχετίσεων,
που αντιστοιχούν στις καταχωρήσεις στο φυσικό επίπεδο μιας βάσης δεδομένων. Έτσι, η
οικονομική οντότητα θα πρέπει να έχει ένα όνομα, και κάποια στοιχεία που καθορίζουν τα
χαρακτηριστικά της οντότητας. Κάθε οντότητα περιγράφει μια ειδική κατηγορία των
εγγραφών που μπορούν να ομαδοποιηθούν. Έτσι, όταν γίνεται αναφορά σε στοιχεία που
αποτελούν μέρος της οντότητας "Χρήστης", για παράδειγμα, θα πρέπει να υπάρχουν
συγκεκριμένες
περιοχές
που
1αντιστοιχούν στα χαρακτηριστικά της εν λόγω οντότητας.
Χαρακτηριστικά μπορούν να είναι απλές ή σύνθετες. Οι απλές ιδιότητες δέχονται
τιμές από μια σειρά. Για παράδειγμα, η τιμή του χαρακτηριστικού είναι μόνο χαρακτηριστικό
της οντότητας "προϊόν" με τιμές στο σύνολο των θετικών πραγματικών αριθμών. Τα σύνθετα
χαρακτηριστικά αποτελούνται από μια σειρά από χαρακτηριστικά που περιγράφουν ένα
σύνολο το καθεστώς. Όπως για παράδειγμα, η διεύθυνση χαρακτηριστικό αποτελείται από
τον αριθμό χαρακτηριστικών, οδός, πόλη, ταχυδρομικό κώδικα. Χαρακτηριστικά χωρίζονται
σε μονότιμες και πολλαπλών τιμών, απλή ή σύνθετη, κενό (null), ή δημιουργούνται. Βασικά
για μια οντότητα του διαγράμματος οντοτήτων-συσχετίσεων είναι το σύνολο των
κατηγορημάτων της οντότητας που είναι μοναδικά για κάθε εγγραφή και πλήρως διακρίνει
από τους άλλους. Κάθε οντότητα έχει ένα μοναδικό χαρακτηριστικό και είναι το πρωτεύον
κλειδί για την οντότητα. Με λίγα λόγια, τα βασικά είναι το σύνολο των χαρακτηριστικών
μιας οντότητας που προσδιορίζει μοναδικά την οντότητα, η οποία προσδιορίζει κάθε ρεκόρ
και τον διαφοροποιεί από τους άλλους.
Οι φορείς που συνδέονται με τις σχέσεις. Η σχέση τους φαίνεται να Database. Η
σχέση μεταξύ των οντοτήτων ορίζει ένα σύνολο συσχετίσεων μεταξύ των καταχωρίσεων
αυτών των οντοτήτων. Η συνολική συσχέτιση (set σχέση) είναι μια συλλογή των
συσχετίσεων του ιδίου τύπου και τον αριθμό των φορέων που εμπλέκονται σε μια σχέση
είναι ο βαθμός.
Οι σχέσεις χωρίζονται στις ακόλουθες κατηγορίες
17
•
•
•
•
Η αναλογία του 1 προς 1, πράγμα που σημαίνει ότι οι φορείς που εμπλέκονται στη
σχέση είναι μια αναλογία ένα προς ένα. Κάθε εγγραφή που σχετίζεται με την πρώτη
από τη δεύτερη και αντιστρόφως.
Η ISA σχέση, είναι απλά μια εξειδικευμένη μορφή μιας σχέσης 1 προς 1, πράγμα που
σημαίνει ότι ο φορέας μπορεί να ταξινομηθεί σε δύο (ή περισσότερα) υπο-φορείς.
Η αναλογία 1 προς Ν σημαίνει ότι κάθε εγγραφή της πρώτης οντότητας σχετίζεται με
πολλές εγγραφές στον δεύτερο φορέα, αλλά κάθε εγγραφή της δεύτερης οντότητας
συνδέεται με μία μόνο εγγραφή της πρώτης οντότητας.
Η αναλογία του Ν στο Μ σημαίνει ότι πολλές εγγραφές της κάθε οντότητας που
σχετίζεται με πολλές εγγραφές στον άλλο.
Εικόνα 7 : Συσχετίσεις Πινάκων Βάσης Δεδομένων
Ο πιο συνηθισμένος τρόπος για να περιγράψει την οντότητα-σχέση του μοντέλου
είναι η χρήση των Διαγράμματα οντοτήτων-συσχετίσεων (ER διαγράμματα). Τα
διαγράμματα αυτά παρέχουν ένα κατανοητό και απλό τρόπο για να περιγράψει τη δομή των
δεδομένων της βάσης δεδομένων, οντότητες, τις σχέσεις, και τα χαρακτηριστικά. Τα βασικά
γεωμετρικά σχήματα που συνθέτουν μια οντότητα-σχέση διάγραμμα είναι: ορθογώνιο που
αντιπροσωπεύει ένα σύνολο οντοτήτων, το διαμάντι αντιπροσωπεύει ένα σύνολο σχέσεων?
Έλλειψης αντιπροσωπεύει ένα χαρακτηριστικό, ενώ το τμήμα δείχνει τα χαρακτηριστικά ενός
συνόλου των φορέων και τη συμμετοχή ενός σύνολο οντοτήτων ένα σύνολο συσχετισμών.
Ασθενής οντότητες είναι οντότητες που δεν έχουν καμία εγγενή ιδιότητα, δηλαδή
εξαρτάται από άλλους φορείς να είναι. Μια οικονομική οντότητα E1 ορίζεται ως αδύναμη,
εάν η ύπαρξη του άλλου εξαρτάται από το Ε2 οντότητας μέσω μιας σχέσης R. Η E2
χαρακτηρίζεται ως ισχυρή οντότητα. Οι ασθενείς οντότητες έχουν τα δικά τους
χαρακτηριστικά τον εντοπισμό τους, αλλά μπορεί να έχουν μερικά αναγνωριστικά (μερική
αναγνώρισης), για παράδειγμα, ένα σύνολο χαρακτηριστικών που καθορίζουν μοναδικά
στιγμιότυπα αδύναμη οντότητα που συνδέεται με την ίδιο στιγμιότυπο με αυτό της ισχυρής
οντότητας. Τα αναγνωριστικά χαρακτηριστικά για τις αδύναμες οντότητες που
δημιουργούνται με τον εντοπισμό χαρακτηριστικά των ισχυρών φορέων και μερικά
αναγνωριστικά της αδύναμης οικονομικής οντότητας. Κάθε ασθενής ή ασθενής οντότητα
είναι υπαρξιακά υποτελής, αλλά όχι το αντίστροφο.
18
Η βάση οντότητας και του σχεσιακού μοντέλου εμπλουτίζεται με την προσθήκη
συμπληρωματικών στοιχείων (J. Hoffer, κλπ. 2011:125):
•
•
•
Ειδίκευση-γενίκευση: όταν ένα σύνολο οντοτήτων (κλάση)μπορεί να περιέχουν
υποσύνολα των φορέων (υποκατηγορίες), ενδεχομένως με διαφορετικά
χαρακτηριστικά μεταξύ τους. Οι κατηγορίες και υποκατηγορίες που
συνδέονται με την ιεραρχία ISA. Η εξειδίκευση και η γενίκευση είναι διπλή
έννοιες.
Characteristicswhen Κληρονομικότητα τα χαρακτηριστικά όλων τωνφορείς
ότι ένα επίπεδο κληρονομεί από την οντότητα που το επόμενο χαμηλότερο
επίπεδο του ISA ιεραρχία.
Συνυπολογισμός, μια ένωση που εμπλέκονται σε μια άλλη σχέση
Εν συντομία ER μοντέλο που βασίζεται στην αντίληψη ότι ο πραγματικός κόσμος
αποτελείται από πρόσωπα με τα χαρακτηριστικά και ενώσεις (σχέσεις) μεταξύ των
οντοτήτων. Οι συσχετίσεις με τα ίδια χαρακτηριστικά που δημιουργούν ένα σύνολο
συσχετισμών. Οι φορείς που διακρίνονται από το πρωτεύον κλειδί. Χαρακτηρίζεται μια
συσχέτιση ο λόγος πληθικότητας 1:1, 1: N, N: 1, Ν: Μ. Η συμμετοχή μιας οντότητας σε ένα
σύνολο συσχετίσεων μπορεί να είναι υποχρεωτική ή προαιρετική. Αναπτύχθηκε για να
διευκολύνει τη σχεδίαση μιας βάσης δεδομένων, επιτρέποντας τον ορισμό ενός σχήματος που
αντιπροσωπεύει τη συνολική λογική δομή της βάσης δεδομένων.
3.5.
Σχεσιακό Μοντέλο
Ένα σύστημα διαχείρισης βάσεων δεδομένων (DBMS) αποτελείται από ένα σύνολο
δεδομένων και προγραμμάτων για την πρόσβαση σε αυτά τα δεδομένα. Το σύνολο
δεδομένων ονομάζεται βάση δεδομένων. Στόχος του ΣΔΒΔ είναι η εύκολη και γρήγορη
χρήση και την ανάκτηση των δεδομένων Η διαχείριση των δεδομένων περιλαμβάνει.:
• Ορίστε δομές για την αποθήκευση δεδομένων
• Καθορισμός μεθόδων για τη διαχείριση των δεδομένων
Ο ορισμός της δομής της βάσης δεδομένων βασίζεται σε ένα μοντέλο δεδομένων που
καθορίζει το πώς τα δεδομένα που περιγράφονται, τις σχέσεις τους, τη σημασία τους και τους
περιορισμούς σε αυτά δεδομένα.The σχεσιακό μοντέλο περιγράφει τη βάση δεδομένων και
να οργανώνει τις εγγραφές με βάση τις σχέσεις. Για το λόγο αυτό, μια βάση δεδομένων
σχεδιάστηκε με βάση το σχεσιακό μοντέλο, μπορεί εύκολα να πραγματοποιηθεί με ένα
μοντέλο οντότητα-σχέση. Το σχεσιακό μοντέλο δεδομένων αντιπροσωπεύει τα δεδομένα και
τις σχέσεις τους ως ένα σύνολο πινάκων. Κάθε πίνακας σε μια σχεσιακή βάση δεδομένων
αποτελείται από στήλες με μοναδικά ονόματα που αντιστοιχούν σε τιμές (ή τα
χαρακτηριστικά για την οντότητα - μοντέλο σχέση) και από σειρές ή πλειάδες του πίνακα
αντιπροσωπεύει μια σχέση μεταξύ ενός συνόλου τιμών.
Η SQL (Structured Query Language) είναι σήμερα το πιο ευρέως χρησιμοποιούμενη
γλώσσα για τη διαχείριση σχεσιακή βάση δεδομένων και παρέχει δυνατότητες για:
• ορισμό, τη διαγραφή και την αλλαγή στους πίνακες και τα κλειδιά
• ερωτήσεις γραπτώς (ερωτήματα),
• εισάγετε, να διαγράψετε και να αλλάξει τα δεδομένα
• ορισμό απόψεων σχετικά με τα δεδομένα,
• καθορισμός των δικαιωμάτων πρόσβασης,
• τον έλεγχο της ακεραιότητας των δεδομένων,
• συναλλαγές κοινού ελέγχου
Το σχεσιακό μοντέλο προτάθηκε από τον J. Codd το 1970 που ήταν η βάση των
βιομηχανικών συστημάτων στην IBM, DB2 και SQL / DS. Το σχεσιακό μοντέλο βασίζεται
19
στην μαθηματική έννοια της σχέσης. Ο Codd, και άλλοι διεύρυνε την έννοια να ισχύουν για
το σχεδιασμό μιας βάσης δεδομένων, εκμεταλλεύτηκε τη δύναμη της μαθηματικής
αφαίρεσης και την εκφραστικότητα του μαθηματικού συμβολισμού και δημιούργησε ένα
απλό αλλά δυναμικό μοντέλο για τις βάσεις δεδομένων. Η αφαίρεση αυτής της προσέγγισης
έχει το πλεονέκτημα ότι η επίδραση είναι γενική. Το μοντέλο χρησιμοποιεί απλές δομές
δεδομένων και ένα μικρό σύνολο των τελεστών πολύ ισχυρό για να επιτευχθεί επεξεργασία
των δεδομένων που κυμαίνονται από απλό στο σύνθετο.
3.6.
3.6.1.
Ο σχεδιασμός της βάσης δεδομένων
Ζωγραφίζοντας το e-r διάγραμμα
Λαμβάνοντας υπόψη όλες τις απαιτήσεις και τη γενική ανάλυση του συστήματος το
διάγραμμα σχέσης οντοτήτων κάτω έχει συνταχθεί. Σε αυτό το διάγραμμα το πρωτεύον
κλειδί έχει επισημανθεί, όπως υπογραμμίζεται.
Εικόνα 8 : Βάση δεδομένων της Ιστοσελίδας
3.6.2. Μετατροπή ER σε πίνακες βάσης δεδομένων
Μετατροπή του ER διαγράμματος σε σχήμα σχέσης καταλήγουμε στους παρακάτω
πίνακες:
Cars
Models
Customer
Rents
Manufacturer
Store
Cartype
Sales
Accidents
Accidents_customers
Damages
Τα δεδομένα για όλα τον στόλο των οχημάτων που
διαθέτει το γραφείο
Τα στοιχεία κάθε μοντέλου του στόλου
Τα δεδομένα για κάθε πελάτη
Τα δεδομένα για κάθε ενοικίαση
Τα στοιχεία για κάθε κατασκευαστή οχήματος
Τα στοιχεία για κάθε κατάστημα
Οι τύποι των οχημάτων
Τα στοιχεία κάθε προσφοράς
Τα στοιχεία κάθε ατυχήματος
Η σύνδεση ατυχημάτων και πελατών που συμμετείχαν
Τα στοιχεία κάθε βλάβης
20
Car_damage_customers Η σύνδεση οχημάτων και πελατών που προκάλεσαν
βλάβες
Πίνακας Cars
Το πρωτεύον κλειδί σε αυτό τον πίνακα είναι ένας αριθμός αυτόματης αύξησης. Τα άλλα
πεδία είναι ο αριθμός πινακίδων του, η διαδρομή στο φάκελο για τη φωτογραφία του και το
όνομα μοντέλου. Τέλος, υπάρχει το ξένο κλειδί που αναφέρεται στον κωδικό καταστήματος
που συναντάται το εν λόγω όχημα.
Πίνακας models
Τα πεδία αυτού του πίνακα είναι το όνομα του μοντέλου (πρωτεύον κλειδί), η τιμή ανά
ημέρα, ο κωδικός του κατασκευαστή και το αναγνωριστικό τύπου. Επίσης, υπάρχει ο τύπος
μηχανής του, το είδος κιβωτίου ταχυτήτων και τέλος το Boolean πεδίο που δείχνει αν είναι
μηχανή ή αυτοκίνητο.
Πελάτης Customer
Το πρωτεύον κλειδί σε αυτό τον πίνακα είναι ένας αριθμός αυτόματης αύξησης. Επιπλέον, ο
πελάτης έχει, επίσης, το όνομα, τον κωδικό πρόσβασης, e-mail, αριθμό τηλεφώνου,
προκειμένου να επικοινωνήσει μαζί του / της, σε κάθε περίπτωση, τη διεύθυνση και ένα
δυαδικό πεδίο για το ενημερωτικό δελτίο. Τέλος, έχει και ένα πεδίο για την ηλικία του.
Πίνακας Rent
Περιλαμβάνει ως πρωτεύον κλειδί τον συνδυασμό κωδικός πελάτη, κωδικός αυτοκινήτου,
ημερομηνία παραλαβής και ημερομηνία παράδοσης. Επίσης, περιέχει την συνολική τιμή
ενοικίασης.
Πίνακας Manufacturer
Το πρωτεύον κλειδί σε αυτό τον πίνακα είναι ένας αριθμός αυτόματης αύξησης. Επίσης
περιλαμβάνει και το όνομα κάθε κατασκευαστή.
Πίνακας Store
Το πρωτεύον κλειδί σε αυτό τον πίνακα είναι ένας αριθμός αυτόματης αύξησης.
Περιλαμβάνει επίσης την διεύθυνση του καταστήματος, την πόλη στην οποία βρίσκεται
καθώς και τα τηλέφωνα επικοινωνίας.
Πίνακας CarType
Το πρωτεύον κλειδί αντιπροσωπεύεται από ένα id. Ακολουθεί το όνομα κάθε τύπου
οχήματος.
Πίνακας Sales
Το πρωτεύον κλειδί σε αυτό τον πίνακα είναι ένας αριθμός αυτόματης αύξησης.
Περιλαμβάνει την ημερομηνία έναρξης και λήξης της προσφοράς, το κατάστημα και το
όχημα στο οποίο απευθύνεται καθώς και την τιμή της προσφοράς.
Πίνακας Accidents
Το πρωτεύον κλειδί σε αυτό τον πίνακα είναι ένας αριθμός αυτόματης αύξησης ατυχήματος
και επίσης έχουμε τα πεδία της ημερομηνίας ατυχήματος και της διεύθυνσης που συνέβη.
Πίνακας Accidents_customers
Πρωτεύον κλειδί θεωρείται ο συνδυασμός του κωδικού ατυχήματος με τον κωδικό πελάτη.
21
Πίνακας damages
Πρωτεύον κλειδί θεωρείται ένας αύξοντας αριθμός βλάβης και επίσης έχουμε το πεδίο της
περιγραφής της βλάβης.
Πίνακας car_damages_customers
Πρωτεύον κλειδί θεωρείται ο συνδυασμός του κωδικού βλάβης, του κωδικού αυτοκινήτου
και του κωδικού πελάτη.
3.6.3. Δημιουργία της βάσης δεδομένων.
Αφού τελειώσαμε με τον σχεδιασμό στην συνέχεια έπρεπε να δημιουργίσουμε την
βάση δεδομένων. Για να το καταφέρουμε αυτό χρησιμοποιείσαμε την εφαρμογή
phpMyAdmin. Αφού τελειώσαμε με την δημιουργία στο τέλος κάναμε εξαγωγή της βάσης
ώστε να την έχουμε σε αρχείο και να μην χρειάζεται κάθε φορά που θα εγκαθιστούμε την
εφαρμογή να χρειάζεται να κατασκευάζουμε την βάση από την αρχή. Ο κώδικας που
δημιουργεί την βάση αυτόματα βρίσκεται σε ένα αρχείο .sql και είναι:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------- Table structure for `accidents`
-- ---------------------------DROP TABLE IF EXISTS `accidents`;
CREATE TABLE `accidents` (
`accid` int(10) NOT NULL AUTO_INCREMENT,
`accdate` date NOT NULL,
`accstreet` varchar(20) NOT NULL,
PRIMARY KEY (`accid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `accidents_customers`
-- ---------------------------DROP TABLE IF EXISTS `accidents_customers`;
CREATE TABLE `accidents_customers` (
`accid` int(10) NOT NULL,
`custid` int(11) NOT NULL,
PRIMARY KEY (`accid`,`custid`),
KEY `acc1` (`custid`),
CONSTRAINT `acc1` FOREIGN KEY (`custid`) REFERENCES
`customers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `acc2` FOREIGN KEY (`accid`) REFERENCES
`accidents` (`accid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `cars`
-- ---------------------------DROP TABLE IF EXISTS `cars`;
CREATE TABLE `cars` (
`carid` int(5) NOT NULL AUTO_INCREMENT,
`number` varchar(7) NOT NULL,
`picture` varchar(150) NOT NULL,
`modelname` varchar(20) NOT NULL,
22
`storeid` int(3) NOT NULL,
PRIMARY KEY (`carid`),
KEY `c1` (`modelname`),
KEY `c2` (`storeid`),
CONSTRAINT `c2` FOREIGN KEY (`storeid`) REFERENCES
`store` (`storeid`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `c1` FOREIGN KEY (`modelname`) REFERENCES
`models` (`modelname`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `cartype`
-- ---------------------------DROP TABLE IF EXISTS `cartype`;
CREATE TABLE `cartype` (
`typeid` int(2) NOT NULL AUTO_INCREMENT,
`typename` varchar(20) NOT NULL,
PRIMARY KEY (`typeid`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `car_damage_customers`
-- ---------------------------DROP TABLE IF EXISTS `car_damage_customers`;
CREATE TABLE `car_damage_customers` (
`carid` int(5) NOT NULL,
`dam_id` int(3) NOT NULL,
`custid` int(11) NOT NULL,
PRIMARY KEY (`carid`,`dam_id`,`custid`),
KEY `d2` (`dam_id`),
KEY `d3` (`custid`),
CONSTRAINT `d3` FOREIGN KEY (`custid`) REFERENCES
`customers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `d1` FOREIGN KEY (`carid`) REFERENCES `cars`
(`carid`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `d2` FOREIGN KEY (`dam_id`) REFERENCES
`damages` (`damid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `customers`
-- ---------------------------DROP TABLE IF EXISTS `customers`;
CREATE TABLE `customers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`sname` varchar(20) NOT NULL,
`email` varchar(30) NOT NULL,
`street` varchar(20) DEFAULT NULL,
`number` int(3) DEFAULT NULL,
`city` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`age` int(3) NOT NULL,
`phone` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
23
-- ----------------------------- Table structure for `damages`
-- ---------------------------DROP TABLE IF EXISTS `damages`;
CREATE TABLE `damages` (
`damid` int(3) NOT NULL AUTO_INCREMENT,
`damdescprition` varchar(100) NOT NULL,
PRIMARY KEY (`damid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `manufacturer`
-- ---------------------------DROP TABLE IF EXISTS `manufacturer`;
CREATE TABLE `manufacturer` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `models`
-- ---------------------------DROP TABLE IF EXISTS `models`;
CREATE TABLE `models` (
`modelname` varchar(20) NOT NULL,
`manuid` int(3) NOT NULL,
`typeid` int(2) NOT NULL,
`price` double(10,0) NOT NULL,
`engine` double(10,0) NOT NULL,
`kibotio` bit(1) NOT NULL,
`carbike` bit(1) NOT NULL,
PRIMARY KEY (`modelname`),
KEY `m1` (`manuid`),
KEY `m2` (`typeid`),
CONSTRAINT `m1` FOREIGN KEY (`manuid`) REFERENCES
`manufacturer` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `m2` FOREIGN KEY (`typeid`) REFERENCES
`cartype` (`typeid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `rents`
-- ---------------------------DROP TABLE IF EXISTS `rents`;
CREATE TABLE `rents` (
`cid` int(10) NOT NULL,
`mid` int(10) NOT NULL,
`startDate` date NOT NULL,
`endDate` date NOT NULL,
`totalPrice` double(10,0) NOT NULL,
PRIMARY KEY (`cid`,`mid`,`startDate`,`endDate`),
KEY `or2` (`mid`),
CONSTRAINT
`or1`
FOREIGN
KEY
(`cid`)
REFERENCES
`customers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
24
CONSTRAINT `or2` FOREIGN KEY (`mid`) REFERENCES `cars`
(`carid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `sales`
-- ---------------------------DROP TABLE IF EXISTS `sales`;
CREATE TABLE `sales` (
`saleid` int(10) NOT NULL AUTO_INCREMENT,
`saleStart` date NOT NULL,
`saleEnd` date NOT NULL,
`modelname` varchar(20) NOT NULL,
`storeid` int(3) NOT NULL,
`sprice` double(4,0) NOT NULL,
PRIMARY KEY (`saleid`),
KEY `sale1` (`modelname`),
KEY `sale2` (`storeid`),
CONSTRAINT `sale2` FOREIGN KEY (`storeid`) REFERENCES
`store` (`storeid`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `sale1` FOREIGN KEY (`modelname`) REFERENCES
`cars` (`modelname`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------- Table structure for `store`
-- ---------------------------DROP TABLE IF EXISTS `store`;
CREATE TABLE `store` (
`storeid` int(3) NOT NULL AUTO_INCREMENT,
`address` varchar(30) NOT NULL,
`city` varchar(20) NOT NULL,
`phone1` varchar(10) NOT NULL,
`phone2` varchar(10) DEFAULT NULL,
`phone3` varchar(10) DEFAULT NULL,
PRIMARY KEY (`storeid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
3.6.4.
3.7.
Σχεδιασμός Βασικών Στοιχείων Ιστοσελίδας
Για τον σχεδιασμό της ιστοσελίδας χρειάστηκε να δημιουργήσουμε 16 διαφορετικές
σελίδες σε γλώσσα php. Αυτές οι σελίδες έχουν ορισμένα κοινά στοιχεία και ορισμένες
διαφορές που θα αναλύσουμε παρακάτω.
3.7.1.
Σχεδιασμός Γενικού Στυλ Ιστοσελίδας.(style.css)
Για τη δημιουργία των πλαισίων και γενικότερα όλης της διεπαφής της σελίδας
χρησιμοποιήθηκε η γλώσσα css. Έγιναν πειραματισμοί μέχρι να βγει το τελικό αποτέλεσμα
μέσω ενός διαδικτυακού εργαλείου (http://www.css3maker.com/). Κατάφερα έτσι να
δημιουργήσω ένα Logo και κάποια boxes μέσα στα οποία θα εμφανίζονται τα οχήματα στο
25
χρήστη. Τέλος, έγινε δοκιμή και στα χρώματα για να είναι όσο το δυνατόν πιο φιλικά προς το
χρήστη.
3.7.2. Σχεδιασμός Κεντρικού Μενού
Για την δημιουργία του κεντρικού μενού σκεφτήκαμε πια θα είναι τα βασικά στοιχεία
που χρειάζονται ώστε ο χρήστης να μπορεί να πλοηγηθεί εύκολα στην ιστοσελίδα και
καταλήξαμε σε αυτά:
Εικόνα 9 : Κεντρικό μενού χωρίς login
Το κουμπί αρχική μας παραπέμπει στην αρχική σελίδα της εφαρμογής, το κουμπί
εγγραφή παραπέμπει τον χρήστη σε μία σελίδα ώστε να εγγραφή στη βάση δεδομένων του
συστήματος ενώ το κουμπί σύνδεση εμφανίζει στον χρήστη μία φόρμα που του επιτρέπει να
συνδεθεί με το σύστημα. Όταν ο χρήστης έχει συνδεθεί στο σύστημα το κεντρικό μενού
αλλάξει
και
εμφανίζονται
επιπλέον
επιλογές.
Εικόνα 10 : Κεντρικό μενού αφού έχει γίνει login
Βλέπουμε ότι το μόνο στοιχείο που δεν έχει αλλάξει είναι το κουμπί που παραπέμπει
στην αρχική σελίδα. Το δεύτερο κουμπί εμφανίζει το όνομα του χρήστη και πατώντας το μας
μεταφέρει στην σελίδα όπου εμφανίζονται τα στοιχεία του χρήστη. Το επόμενο κουμπί
επιτρέπει στον χρήστη να πραγματοποιήσει έξοδο από το σύστημα. Το τέταρτο κουμπί
παραπέμπει τον χρήστη στην σελίδα μέσω της οποίας μπορεί να πραγματοποιήσει μία
ενοικίαση οχήματος, ενώ το τελευταίο κουμπί εμφανίζει στον χρήστη τις ενεργές κρατήσεις
που έχει δημιουργήσει. Ο κώδικας που υλοποιεί το μενού είναι:
<div id="main_container">
<div
id="header">
<a
href="index.html">
<img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /> </a> </div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a
href="index.php"
class="nav">Αρχική
</a>
</li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php" class="nav">Εγγραφή </a>
</li>
<?php
}
else{
$result = mysql_query("SELECT name FROM customers
where id = '".$_SESSION['user']."'") or die("A problem
occured");
$r = mysql_fetch_array($result);?>
<li><a
href="profil.php"
class="nav"><?php
echo
$r['name'] ?></a></li>
<?php } ?>
26
<?php
</li>
</li>
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php" class="nav">Σύνδεση
<?php }
else{ ?>
<li><a href="logout.php"
<?php
<?php
</li>
<li class="divider"></li>
</a>
class="nav">Έξοδος
</a>
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php" class="nav">Ενοικίαση
</a>
} ?>
<li class="divider"> </li>
<li class="divider"> </li>
<li><a href="show.php" class="nav">Οι κρατήσεις μου
</a> </li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
3.7.3. Σχεδιασμός Αριστερό Μενού (Μενού Τύπων Οχημάτων)
Στο αριστερό μενού αποφασίσαμε να βάλουμε μια λίστα με όλους τους τύπους
οχημάτων που διαθέτει το σύστημα ώστε να μπορεί ο χρήστης να απομονώσει και να
εμφανίσει μόνο τα οχήματα του συγκεκριμένου τύπου που τον ενδιαφέρει.
Εικόνα 11 : Αριστερό μενού (Μενού Τύπων)
27
Πατώντας σε κάθε κατηγορία ο χρήστης μεταφέρεται σε μία σελίδα που του εμφανίζει
τα αντίστοιχα οχήματα που υπάρχουν καταχωρημένα στην βάση δεδομένων του συστήματος.
Ο κώδικας που υλοποιεί το μενού είναι:
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"> <?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"> <?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"> <?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"> <?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"> <?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"> <?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"> <?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
3.7.4. Σχεδιασμός Δεξιού Μενού
Σε αυτό το μενού υπάρχει μία μηχανή αναζήτησης η οποία επιτρέπει στον χρήστη να
αναζητήσει με λέξεις κλειδιά οχήματα που υπάρχουν μέσα στο σύστημα. Επίσης στο μενού
28
αυτό υπάρχει και μία λίστα η οποία εμφανίζει τις ενεργές προσφορές των καταστημάτων.
Εικόνα 12 : Δεξί Μενού (Αναζήτηση και Προσφορές)
Ο κώδικας που υλοποιεί το μενού είναι:
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword" class="newsletter_input"
value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search" /></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM sales,store
where sales.storeid = store.storeid") or die("A problem
occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." Στην
".$row['city']; }
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of right content -->
29
3.8.
Σχεδιασμός Ιστοσελίδων
3.8.1. Σχεδιασμός Κεντρικής Σελίδας(index.php)
Σε αυτή την σελίδα αποφασίσαμε να εμφανίζονται τα 3 πιο πρόσφατα οχήματα που
έχουν καταχωρηθεί στην βάση δεδομένων του συστήματος. Με αυτών τον τρόπο ο χρήστης
με μία πρώτη ματιά θα έχει την ευκαιρία να δει τα πιο πρόσφατα οχήματα του συστήματος
χωρίς να χρειάζεται να σπαταλήσει αρκετό χρόνο αφού δεν υπάρχει πληθώρα
αποτελεσμάτων.
Εικόνα 13 : Κεντρικό Στοιχείο Αρχικής Σελίδας
Ο κώδικας που υλοποιεί το κεντρικό στοιχείο στην αρχική σελίδα είναι:
<div class="center_content">
<div class="center_title_bar">Latest Cars</div>
<?php
include("db_con.php");
$result = mysql_query("SELECT * FROM cars ORDER BY
modelname DESC
limit 0,3") or die("A problem occured");
while($row = mysql_fetch_array($result)){ ?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title"> <?php
echo $row['modelname']; ?></a></div>
<div class="product_img"><img src="<?php echo
$row['picture']?>" width="130" height="130" alt="" title=""
border="0" /></a></div>
</div>
<div class="prod_details_tab">
<a href="details.php?id=<?php echo $row['carid'] ?>"
class="prod_details">Details </a>
</div>
</div>
<?php } ?>
</div><!-- end of center content -->
3.8.2. Σχεδιασμός Εγγραφής(register.php)
30
Σε αυτή την σελίδα εμφανίζεται στον χρήστη μια φόρμα στην οποία θα πρέπει να δώσει τα
στοιχεία του ώστε να πραγματοποιήσει την εγγραφή του στη βάση δεδομένων του
συστήματος. Υπάρχουν αρκετά στοιχεία ελέγχου τα οποία θα αναλύσουμε παρακάτω τα
οποία βοηθούν τον χρήστη να πραγματοποιήσει μία σωστή εγγραφή.
Εικόνα 14 : Φόρμα Εγγραφής
Ο κώδικας που υλοποιεί την φόρμα εγγραφής είναι:
<div class="center_content">
<div class="center_title_bar">Register</div>
<div class="prod_box">
<div class="center_prod_box">
<h1>Φόρμα εγγραφής</h1>
<form method="POST" action="registration_proc.php" />
<ul><li><label for="name">Όνομα:</label>
<input type="text" size="40" id="name" name = "name"
required /> </li>
<li><label for="sname">Επώνυμο:</label>
<input type="text" size="40" id="sname" name="sname"
required/> </li>
<li><label for="email">Email:</label>
<input type="email" size="40" id="email" name="email"
required/> </li>
<li><label for="pass">Κωδικός:</label>
<input type="password" size="40" id="password"
name="password" required/> </li>
<li><label for="street">Οδός:</label>
31
<input type="text*" size="40" id="street" name="street"/>
</li>
<li><label for="number">Αριθμός:</label>
<input type="number" size="40" id="number" name="number"/>
</li>
<li><label for="city">Πόλη:</label>
<input type="text" size="40" id="city" name ="city"/></li>
<li><label for="age">Ηλικία:</label>
<input type="number" size="40" id="age" name="age"
required/> </li
<li><label for="phone">Τηλέφωνο:</label>
<input type="text" size="40" id="phone" name = "phone"
required /> </li>
</ul>
<p>
<button type="submit" class="action">Εγγραφή</button>
<button type="reset" class="right">Επαναφορά</button>
</p>
</form>
</article>
</div>
</div>
</div><!-- end of center content -->
3.8.3. Σχεδιασμός Σύνδεσης (login.php)
Σε αυτή την σελίδα εμφανίζεται μια φόρμα η οποία ζητάει από τον χρήστη να δώσει
το email και το password που έδωσε κατά την εγγραφή του στο σύστημα. Αν ο χρήστης
δώσει τα σωστά στοιχεία τότε η σύνδεση του με το σύστημα είναι επιτυχής, αν τα στοιχεία
που έδωσε είναι λανθασμένα τότε εμφανίζεται ένα μήνυμα που τον ενημερώνει και τον
προτρέπει να ξαναδοκιμάσει.
Εικόνα 15 : Φόρμα login
Ο κώδικας που υλοποιεί την φόρμα σύνδεσης είναι:
<div class="center_content">
<div class="center_title_bar">Please LogIn</div>
<div class="prod_box">
<div class="center_prod_box">
<form id="slick-login" method="post" action="checklogin.php">
<label for="email">email</label><input type="text"
name="email" class="placeholder" placeholder="email">
32
<label for="password">password</label><input
type="password" name="password" class="placeholder"
placeholder="password">
<input type="submit" value="Log In">
</form>
</div>
</div>
</div><!-- end of center content -->
3.8.4. Σχεδιασμός Σελίδας Στοιχείων Χρήστη (profil.php)
Αφού ο χρήστης πραγματοποιήσει την σύνδεση με το σύστημα όπως είδαμε και
προηγούμενος στο κεντρικό μενού εμφανίζεται η επιλογή με το όνομα του. Επιλέγοντας αυτό
το κουμπί ο χρήστης μεταφέρεται σε μία σελίδα που εμφανίζονται τα στοιχεία που έβαλε
κατά την εγγραφή του στο σύστημα.
Εικόνα 16 : Παράδεισμα Στοιχείων Χρήστη
Ο κώδικας που εμφανίζει τα στοιχεία του χρήστη είναι:
<div class="center_content">
<div class="center_title_bar">User Profile</div>
<div class="prod_box">
<?php
$result = mysql_query("SELECT * FROM customers where id =
'".$_SESSION['user']."'") or die("A problem occured");
$results = mysql_fetch_array($result)
?>
<font size="2">
<?php echo "Όνομα: ".$results['name']?><br>
<?php echo "Επίθετο: ".$results['sname']?><br>
<?php echo "Email: ".$results['email']?><br>
<?php echo "Οδός: ".$results['street']."
".$results['number']." ".$results['city']?><br>
<?php echo "Τηλέφωνο: ".$results['phone']?>
</font>
</div>
</div><!-- end of center content -->
3.8.5. Σχεδιασμός Σελίδας Ενοικίασης Οχήματος (rent.php)
Σε αυτή την σελίδα εμφανίζεται στον χρήστη μία φόρμα η οποία του επιτρέπει να
επιλέξει στα στοιχεία της ενοικίασης που θέλει να πραγματοποιήσει. Μόλις ο χρήστης
33
συμπληρώσει όλα τα στοιχεία και πατήσει το κουμπί εύρεση οχήματος των παραπέμπει σε
μία σελίδα στην οποία εμφανίζονται όλα τα διαθέσιμα οχήματα.
Εικόνα 17 : Φόρμα ενοικίασης οχήματος
Ο κώδικας για την υλοποίηση της φόρμας ενοικίασης οχήματος είναι:
<div class="center_content">
<div class="center_title_bar">Rent a Car</div>
<div class="prod_box">
<div class="center_prod_box">
<form id="form1" name="form1" class="style topLabel page"
accept-charset="UTF-8" autocomplete="off"
enctype="multipart/form-data" method="post" novalidate
onsubmit="return validateForm()" action="results.php">
<h2>Φόρμα ενοικίασης</h2>
Car<input type="radio" name="v" value="1" checked =
"checked" required />
Bike<input type="radio" name="v" value="0" />
<br><br><label class="desc" id="title126"
for="Field126">Επιλογή Καταστήματος</label>
<div>
<span class="right country">
<?php
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8_unicode_ci'");
mysql_set_charset('utf8', $con);
$result = mysql_query("select * FROM store") or
die("A problem occured");
echo "<select width='300' style='width: 200px;
height:50px' name='city' id='city' >\n";
while($row = mysql_fetch_array($result)){
$res1 = $row[city];
34
$res2 = $row[address];
$res = $res1."-".$res2;
echo "<option value='$row[storeid]'>$res</option>\n";
echo "</br>";
} ?></select></span>
</div><br><br>
<label class="desc" id="title128"
for="Field128">Ημερομηνία παραλαβής</label>
<span><input id="date1" name="date1" type="date" value=""
size="2" maxlength="2" tabindex="15" required></span><br><br>
<label class="desc" id="title128"
for="Field128">Ημερομηνία παράδοσης</label>
<span class="symbol"></span>
<span><input id="date2" name="date2" type="date"
class="field text" value="" size="2" maxlength="2"
tabindex="16" required /></span>
<br><br>
<div><input id="saveForm" name="saveForm" class="btTxt submit"
type="submit" value="Εύρεση οχημάτων" />
</div>
</ul>
</form>
</div>
</div>
</div><!-- end of center content -->
3.8.6. Σχεδιασμός Σελίδας Εμφάνισης Οχημάτων προς Ενοικίαση
(results.php)
Σε αυτή την σελίδα εμφανίζονται τα διαθέσιμα προς ενοικίαση οχήματα ανάλογα με
τα στοιχεία που έχει εισάγει ο χρήστης από την φόρμα της προηγούμενης σελίδας. Σε αυτή
την σελίδα ο χρήστης πραγματοποιεί την κράτηση του οχήματος που επιθυμεί.
Εικόνα 18 : Σελίδα εμφάνισης οχημάτων διαθέσιμα προς ενοικίαση
Ο κώδικας για την εμφάνιση των διαθέσιμων προς ενοικίαση οχημάτων είναι:
<?php
$_SESSION['city'] = $_POST['city'];
$_SESSION['date1'] = $_POST['date1'];
35
$_SESSION['date2'] = $_POST['date2'];
$vehicle = $_POST['v'];
$city = $_SESSION['city'];
$date1 = $_SESSION['date1'];
$date2 = $_SESSION['date2'];
?>
<div class="center_content">
<div class="center_title_bar">Διαθέσιμα Οχήματα</div>
<?php
include("db_con.php");
if(strtotime($date1) < time()){
echo "Ημερομηνία Παραλαβής έχει περάσει.";?><br>
<?php echo 'Παρακαλώ<a href="rent.php"> δοκιμάστε ξανά</a>
με σωστές ημερομηνίες.';
}
else if($date1 > $date2){
echo "Ημερομηνία παράδωσης < ημερομηνία
Παραλαβής.";?><br>
<?php echo 'Παρακαλώ<a href="rent.php"> δοκιμάστε ξανά</a>
με σωστές ημερομηνίες.';
}
else{
$result = mysql_query("Select * from
cars,store,models where models.modelname = cars.modelname and
models.carbike = '".$vehicle."' and store.storeid =
'".$city."' and store.storeid = cars.storeid and carid NOT IN
(SELECT mid FROM rents where (date(rents.endDate) >=
date('".$date1."') and date(rents.endDate) <=
date('".$date2."')) or (date(rents.startDate) >=
date('".$date1."') and date(rents.startDate) <=
date('".$date2."')) )") or die("A problem occured");
while($row = mysql_fetch_array($result)){
$mname = $row['modelname'];
$sid = $row['storeid'];
$result2 = mysql_query("Select sprice from
sales where sales.modelname = '".$mname."' and sales.storeid =
'".$sid."' and date(sales.saleEnd) >= date('".$date1."') and
date(sales.saleStart) <= date('".$date1."') ") or die("A
problem occured");
$sprice = 0;
while ($r = mysql_fetch_array($result2)){
$sprice = $r['sprice'];
}
?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title">
<?php echo $row['modelname']; ?></a></div>
<div class="product_img"><img src="<?php echo
$row['picture']?>" width="130" height="130" alt="" title=""
border="0" /></a></div>
<div class="prod_price">
<?php
if ($sprice == 0){?>
<span class="price"><?php echo "Τιμή:
".$row['price']."€";?></span></div>
36
<?php }
else{ ?>
<span class="price"><?php echo "Τιμή:
".$sprice."€";?></span></div>
<?php } ?>
</div>
<div class="prod_details_tab">
<a href="rentprocess.php?id=<?php echo $row['carid'] ?>
"class="prod_details">Rent it</a>
</div>
</div>
<?php } ?>
<?php } ?>
</div><!-- end of center content -->
3.8.7. Σχεδιασμός Σελίδας Κρατήσεων (show.php)
Σε αυτή την σελίδα εμφανίζονται όλες οι ενεργές κρατήσεις τις οποίες έχει
πραγματοποιήσει ο χρήστης δίνοντας του την επιλογή να ακυρώσει αυτές που δεν θα
πραγματοποιήσει.
Εικόνα 19 : Σελίδα Κρατήσεων
Ο κώδικας για την υλοποίηση της σελίδας κρατήσεων είναι:
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword" class="newsletter_input"
value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search" /></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM sales,store
where sales.storeid = store.storeid") or die("A problem
occured");
$p = 0;
37
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
3.8.8. Σχεδιασμός Σελίδας Στοιχείων Οχημάτων (details.php)
Σε αυτή την σελίδα ο χρήστης μπορεί να δει τα στοιχεία κάθε αυτοκινήτου που
υπάρχει στην βάση δεδομένων ώστε να έχει μία καλύτερη και πιο εμπεριστατωμένη άποψη
πριν κάνει την ενοικίαση του οχήματος.
Εικόνα 20 : Χαρακτηριστικά οχημάτων
Ο κώδικας για την εμφάνισει των χαρακτηριστικών του οχήματος είναι:
<div class="center_content">
<div class="center_title_bar">Details</div>
<?php
$serial = $_GET['id'];
include("db_con.php");
$result = mysql_query("SELECT * FROM cars, models,
cartype where carid = '".$serial."' and cars.modelname =
models.modelname and models.typeid = cartype.typeid") or
die(mysql_error());
$results = mysql_fetch_array($result)
?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title"> <?php
38
echo $results['modelname']; ?></a></div>
<div class="product_img"><img src="<?php echo
$results['picture']?>" width="130" height="130" alt=""
title="" border="0" /></a></div>
<div class="prod_price">
<span class="price">Τιμή: <?php echo $results['price'];
?>€</span><br>
<span class="price">Τύπος: <?php echo
$results['typename']; ?></span><br>
<span class="price">Κυβικά: <?php echo
$results['engine']; ?></span><br>
<?php
if ($results['kibotio'] == '1'){?>
<span class="price">Κιβώτιο: <?php echo "Manual";
?></span></div>
<?php }
else{?>
<span class="price">Κιβώτιο: <?php echo "Automatic";
?></span></div>
<?php }?>
</div>
<div class="prod_details_tab">
</div>
</div>
</div><!-- end of center content -->
3.8.9. Σχεδιασμός Σελίδας Τύπων Οχημάτων (types.php)
Για να εμφανίσει ο χρήστης αυτή την σελίδα θα πρέπει να κάνει μία επιλογή από το
αριστερό μενού. Ανάλογα με την επιλογή που πραγματοποιεί το σύστημα του εμφανίζει τα
οχήματα του συγκεκριμένου τύπου.
Εικόνα 21 : Σελίδα εμφάνισης οχημάτων συγκεκριμένου τύπου
Ο κώδικας που υλοποιεί την σελίδα εμφάνισεις συγκερκιμένου τύπου οχημάτων είναι:
<div class="center_content">
39
<div class="center_title_bar">Οχήματα Κατηγορίας</div>
<?php
include("db_con.php");
if($_GET['id'] == '11'){
$result = mysql_query("SELECT * FROM
cars,models where models.carbike = '1' and cars.modelname =
models.modelname ") or die("A problem occured");
}
else if($_GET['id'] == '12'){
$result = mysql_query("SELECT * FROM
cars,models where models.carbike = '0' and cars.modelname =
models.modelname ") or die("A problem occured");
}
else{
$result = mysql_query("SELECT * FROM
cars,models where models.typeid = '".$_GET['id']."' and
cars.modelname = models.modelname") or die("A problem
occured");
}
while($row = mysql_fetch_array($result)){
?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title">
<?php echo $row['modelname']; ?></a></div>
<div class="product_img"><img src="<?php echo
$row['picture']?>" width="130" height="130" alt="" title=""
border="0" /></a></div>
</div>
<div class="prod_details_tab">
<a href="details.php?id=<?php echo $row['carid'] ?>"
class="prod_details">Details</a>
</div>
</div>
<?php } ?>
</div><!-- end of center content -->
3.8.10. Σχεδιασμός Σελίδας Αναζήτησης (search.php)
Σε αυτή την σελίδα εμφανίζονται τα οχήματα ύστερα από αίτηση του χρήστη για
αναζήτηση από το δεξί μενού.
40
Εικόνα 22 : Σελίδα Αποτελεσμάτων αναζήτησης
Ο κώδικας που υλοποιεί την αναζήτηση και εμφανίζει τα αποτελέσματα είναι:
<div class="center_content">
<div class="center_title_bar">Αποτελέσματα Αναζήτησης</div>
<?php
$keyword = $_POST['keyword'];
include("db_con.php");
$result = mysql_query("SELECT * FROM cars,models
where cars.modelname = models.modelname and models.modelname
like '%$keyword%'") or die(mysql_error());
while($row = mysql_fetch_array($result)){
?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title"><a href="details.php">
<?php echo $row['modelname']; ?></a></div>
<div class="product_img"><a href="details.php"><img src="<?php
echo $row['picture']?>" width="130" height="130" alt=""
title="" border="0" /></a></div>
<div class="prod_price">
<span class="price"><?php echo
$row['modelname'];?></span></div>
</div>
<div class="prod_details_tab">
<a href="details.php?id=<?php echo $row['carid'] ?>"
class="prod_details">Details</a>
</div>
</div>
<?php } ?>
</div><!-- end of center content -->
Υπάρχουν ακόμα κάποιες σελίδες οι οποίες λειτουργούν για να πραγματοποιείται
έλεγχος σε διάφορα στάδια του συστήματος. Αυτές είναι :
•
checklogin.php : Ελέγχει αν τα στοιχεία που έχει δώσει ο χρήστης για να συνδεθεί με
το σύστημα είναι σωστά.
41
•
•
registration_proc.php : Ελέγχει αν το email με το οποίο ο χρήστης προσπαθεί να
κάνει εγγραφή υπάρχει ήδη στο σύστημα.
rentprocess.php : Ελέγχει αν όλα τα στοιχεία που αφορούν την ενοικίαση είναι σωστά
και αν ναι πραγματοποιεί την κράτηση του οχήματος.
3.9.
Τα στάδια του ελέγχου
Ο τελικός έλεγχος αποτελείται από τέσσερα στάδια τα οποία περιγράφονται αναλυτικά
στις ενότητες που ακολουθούν:
Έλεγχος λειτουργίας (function testing): Εξετάζει αν το ολοκληρωμένο σύστημα πληροί
τις λειτουργικές απαιτήσεις, όπως αυτές προσδιορίζονται στο έγγραφο απαιτήσεων
λογισμικού.
Έλεγχος συστήματος (system testing): Συγκρίνει το σύστημα με τις μη λειτουργικές του
απαιτήσεις. Ο έλεγχος αυτός περιλαμβάνει θέματα ασφάλειας, συμβατότητας, όγκου,
χρηστικότητας, ακρίβειας και γενικά περιορισμούς κάτω από τους οποίους το σύστημα
πρέπει να εκτελεί τις λειτουργίες του.
Έλεγχος αποδοχής (acceptance testing): Συγκρίνει το λογισμικό με τις αρχικές
απαιτήσεις και τις τρέχουσες ανάγκες του τελικού χρήστη.
Έλεγχος εγκατάστασης (installation testing): Εντοπίζει τα σφάλματα που γίνονται
κατά τη διάρκεια της εγκατάστασης του λογισμικού.
Εικόνα 23 : Στάδια ελέγχου συστήματος
42
4. Εγχειρίδιο Χρήσης Ιστοσελίδας.
4.1.
Αρχική Εντύπωση.
Με την πρώτη ματιά μπορεί ο χρήστης εύκολα να κατανοήσει ότι το site έχει σχέση
και πραγματεύεται με θέματα που αφορούν τα οχήματα. Στην αρχή ο χρήστης έρχεται σε
επαφή με ένα ευχάριστο περιβάλλον, φιλικό προς τον χρήστη και εύκολο στην λειτουργία του
με αποτέλεσμα να απευθύνεται σε όλους τους χρήστες του διαδικτύου.
Εικόνα 24 : Αρχική Ιστοσελίδα
Αυτή είναι η εικόνα που αντικρίζει ο χρήστης την πρώτη φορά που μπαίνει στην ιστοσελίδα.
Από αυτή την στιγμή μέχρι να καταφέρει ο χρήστης να πραγματοποιήσει την πρώτη του
κράτηση υπάρχουν κάποια βήματα που πρέπει να ακολουθήσει.
4.2.
Εγγραφή Χρήστη
Στην αρχή θα πρέπει να κάνει εγγραφή στην βάση δεδομένων του συστήματος με τα
προσωπικά του στοιχεία. Πατώντας την επιλογή εγγραφή από το κεντρικό μενού εμφανίζεται
43
στον χρήστη η φόρμα για να πραγματοποιήσει την εγγραφή του.
Εικόνα 25 : Φόρμα εγγραφής
Ο χρήστης καλείται να συμπληρώσει τα πεδία και στην συνέχεια να πατήσει το πλήκτρο
εγγραφή. Αν πατήσει το πλήκτρο εγγραφή χωρίς να έχει συμπληρώσει τα πεδία εμφανίζεται
ένα
μήνυμα
που
του
υπενθυμίζει
ότι
χρειάζεται
να
το
κάνει.
Εικόνα 26 : Εμφάνιση λάθους κατά την εγγραφή
Στην συνέχεια αν όλα τα στοιχεία είναι συμπληρωμένα γίνεται έλεγχος για την
διαθεσιμότητα του email. Αν έχει ξαναχρησιμοποιηθεί εμφανίζεται ένα μήνυμα λάθους.
Εικόνα 27 : Εμφάνιση λάθους κατά τον έλεγχο της εγγραφής
Στην περίπτωση που όλα τα στοιχεία είναι σωστά τότε η εγγραφή του χρήστη
πραγματοποιείται και εμφανίζεται το ακόλουθο μήνυμα.
44
Εικόνα 28 : Εμφάνιση επιτυχούς εγγραφής
4.3.
Σύνδεση Χρήστη
Αφού ο χρήστης έχει εγγραφή στο σύστημα στην συνέχεια θα πρέπει να συνδεθεί σε
αυτό και επιτυγχάνεται από την επιλογή σύνδεση του κεντρικού μενού. Όταν ο χρήστης
επιλέξει την επιλογή αυτή θα εμφανιστεί μπροστά του μία φόρμα στην οποία θα πρέπει να
δώσει τα σωστά στοιχεία για να καταφέρει να συνδεθεί.
Εικόνα 29 : Φόρμα σύνδεσης
Αν ο χρήστης δώσει λανθασμένα στοιχεία εμφανίζονται τα κατάλληλα μηνύματα που
τον ενημερώνουν.
Εικόνα 30 : Λανθασμένο Email
Εικόνα 31 : Λανθασμένο Password
Με τον τρόπο αυτό διευκολύνεται ο χρήστης όταν κάτι δεν έχει κάνει σωστά. Στην
περίπτωση που όλα είναι σωστά τότε ο χρήστης θα συνδεθεί στο σύστημα αυτόματα.
4.4.
Αναζήτηση Οχημάτων
Πριν ο χρήστης προχωρήσει σε ενοικίαση οχήματος θα ήθελε να γνωρίζει περισσότερα
για τα οχήματα που διαθέτουν τα καταστήματα. Αυτό επιτυγχάνεται με την επιλογή
45
που υπάρχει κάτω από κάθε όχημα. Με αυτή την επιλογή ο χρήστης
μεταφέρεται σε μία σελίδα στην οποία εμφανίζονται όλα τα στοιχεία του οχήματος.
Εικόνα 32 : Χαρακτηριστικά Οχήματος
Εν συνεχεία και αφού ο χρήστης αισθάνεται σίγουρος για την επιλογή που θέλει να
κάνει θα προχωρήσει στην ενοικίαση του οχήματος που επιθυμεί.
4.5.
Ενοικίαση Οχήματος
Ο χρήστης τώρα επιθυμεί να κάνει μία κράτηση για ενοικίαση οχήματος. Αυτό γίνεται
από την επιλογή Ενοικίαση του κεντρικού μενού. Πατώντας ο χρήστης αυτό το κουμπί
μεταφέρεται στην σελίδα οπού μία φόρμα εμφανίζεται και ζητάει από τον χρήστη να επιλέξει
τις λεπτομέρειες για την ενοικίαση που επιθυμεί.
Εικόνα 33 : Φόρμα ενοικίασης Οχήματος
46
Εδώ ο χρήστης καλείται να επιλέξει αν επιθυμεί αυτοκίνητο η μηχανή. Στην συνέχει το
κατάστημα στο οποίο επιθυμεί να κάνει την κράτηση, όπως και τις ημερομηνίες παραλαβής
και παράδοσης. Υπάρχουν και εδώ περιπτώσεις στις οποίες ο χρήστης μπορεί να κάνει
λάθος με τις ημερομηνίες. Αν αφήσει κάποια ημερομηνία κενή εμφανίζεται μήνυμα που
του ζητάει να συμπληρώσει στην ημερομηνία. Μήνυμα εμφανίζεται και στην περίπτωση
που οι ημερομηνίες οι οποίες έχει επιλέξει ο χρήστης έχουν περάσει.
Εικόνα 34 : Εμφάνιση μηνύματος για λανθασμένες ημερομηνίες 1
Το ίδιο συμβαίνει και αν η ημερομηνία παράδοσης είναι πριν από την ημερομηνία
παραλαβής.
Εικόνα 35 : Εμφάνιση μηνύματος για λανθασμένες ημερομηνίες 2
Όταν ο χρήστης επιλέξει όλα σωστά τότε εμφανίζεται μία σελίδα με τα διαθέσιμα προς
ενοικίαση οχήματα.
Εικόνα 36 : Σελίδα εμφάνισης οχημάτων διαθέσημα προς ενοικίαση
Σε αυτή την σελίδα εμφανίζονται τα οχήματα και η τιμή τους ανά ημέρα. Πατώντας ο
χρήστης το κουμπί rent it προχωράει στην ενοικίαση του οχήματος και εμφανίζεται το
ακόλουθο μήνυμα.
Εικόνα 37 : Μήνυμα επιβεβαίωσης κράτησης
Με αυτό τον τρόπο ο χρήστης έχει καταφέρει να πραγματοποιήσει την πρώτη του
κράτηση.
47
4.6.
Ακύρωση Κράτησης
Υπάρχει περίπτωση ο χρήστης να έχει μετανιώσει για κάποια από τις κρατήσεις που έχει
πραγματοποιήσει και να επιθυμεί να την ακυρώσει. Αυτό γίνεται πατώντας στο κουμπί
κρατήσεις του κεντρικού μενού. Από εκεί εμφανίζεται μία σελίδα με όλες τις ενεργές
κρατήσεις του χρήστη.
Εικόνα 38 : Σελίδα κρατήσεων
Από εδώ μπορεί ο χρήστης εκτός από το να ακυρώσει τις κρατήσεις που δεν επιθυμεί να δει
και όλες όσες έχει πραγματοποιήσει. Πατώντας το κουμπί ακύρωση η κράτηση σβήνεται από
τη βάση δεδομένων του συστήματος και εμφανίζεται το ακόλουθο μήνυμα.
Εικόνα 39 : Επιβεβαίωση Ακύρωσης
4.7.
Κλείνοντας το Εγχειρίδιο
Αυτός είναι ο τρόπος με τον οποίο ένας χρήστης μπορεί να κάνει μία κράτηση
εξολοκλήρου από την αρχή μέχρι το τέλος. Είναι αρκετά απλά τα βήματα που έχει να κάνει
και πάντα πρώτος γνώμονας είναι η καλύτερη εξυπηρέτηση του χρήστη και για τον λόγο
αυτόν προσπαθήσαμε να κρατήσουμε την εμφάνιση αλλά και τις λειτουργίες όσο πιο απλές
αλλά και συνάμα αποτελεσματικές.
48
5. Επίλογος – Συμπεράσματα – Μελλοντικές
Επεκτάσεις
Στο σημείο αυτό θα πρέπει να εξηγηθεί τι έχουμε αντιληφθεί σε σχέση με τις ανάγκες, τα
προβλήματα που διαπιστώθηκαν κατά την περίοδο της ανάπτυξης του συστήματος, τι μάθαμε
από την υλοποίηση του έργου και τις πιθανές βελτιώσεις του διαδικτυακού συστήματος
ενοικιάσεων.
5.1.
Υλοποίηση απαιτήσεων
Παρακάτω φαίνεται ο πίνακας υλοποίησης των απαιτήσεων που τέθηκαν εξαρχής και
μερικές από αυτές αναλύθηκαν στο κεφάλαιο 4.
Απαιτήσεις
Αρχική σελίδα
Εγγραφή Πελάτη
Σύνδεση
Μενού πλοήγησης
Ενοικίαση οχημάτων
Αναζήτηση οχημάτων
Εκτύπωση στοιχείων
Βοήθεια
Αλλαγή Γλώσσας
Συνομιλία σε πραγματικό χρόνο
Υλοποιήση
ΝΑΙ
ΝΑΙ
ΝΑΙ
ΝΑΙ
ΝΑΙ
ΝΑΙ
ΟΧΙ
ΟΧΙ
ΟΧΙ
ΟΧΙ
Είναι εύκολα παρατηρήσιμο πως οι περισσότερες απαιτήσεις υλοποιήθηκαν με εξαίρεση
κάποιες δευτερεύουσες. Η μη υλοποίηση τους συνδέεται με την έλλειψη χρόνου και στη
χαμηλή προτεραιότητα τους σε σχέση με τις υπόλοιπες.
5.2.
Προβλήματα
Τα περισσότερα προβλήματα που ανέκυψαν είχαν να κάνουν με τη χρήση της γλώσσας
Javascript. Η αρχική σκέψη ήταν όταν κάνει μία αναζήτησης ένας χρήστης, να μην
μεταφέρεται σε άλλη σελίδα, αλλά με τη βοήθεια της προαναφερθείσας γλώσσας και της
τεχνολογίας AJAX να επαναφορτώνονται τα δεδομένα στην ίδια σελίδα. Θεωρώ πως η
Javascript αποτελεί σπουδαίο εργαλείο. Ταυτόχρονα, όμως, απαιτεί αρκετή εμπειρία στο
χειρισμό της.
5.3.
Γνώση που αποκτήθηκε
Οι γνώσεις που απέκτησα κατά τη διάρκεια της ανάπτυξης του έργου έχουν να κάνουν
κυρίως με το δυναμικό προγραμματισμό στο διαδίκτυο. Θέματα που αφορούν την σχεδίαση
49
βάσεων δεδομένων και το χειρισμό τους μέσω της γλώσσας PHP. Ταυτόχρονα έγινε μια
αρκετά ικανοποιητική προσέγγιση της γλώσσας σεναρίων Javascript. Με αυτό το έργο είχα
επίσης την ευκαιρία να δω στην πράξη τεχνικές μοντελοποίησης (περιπτώσεων χρήσης,
UML διαγράμματα, ER διαγράμματα, διαγράμματα ροής κτλ.) που είχα δει περισσότερο
θεωρητικά σε διάφορα μαθήματα του πανεπιστημίου.
5.4.
Μελλοντικές επεκτάσεις
Το σύστημα ενοικιάσεων οχημάτων λειτουργεί καλά Ωστόσο, ορισμένα μελλοντικά
έργα μπορεί να γίνουν στο υπάρχον σύστημα: .
•
•
Προσθήκη μίας φόρμας για την επικοινωνία με τους διαχειριστές.
Πιο ελκυστικά γραφικά στο web σελίδες του portal.
50
Αναφορές
Διαδίκτυο
•
•
•
•
•
•
PHP http://el.wikipedia.org/wiki/PHP
MySql http://en.wikipedia.org/wiki/MySQL
CSS, https://el.wikipedia.org/wiki/CSS
CSS, http://www.xmluk.org/css-history-information.htm
Διαδίκτυο,https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE
%AF%CE%BA%CF%84%CF%85%CE%BF
WampServer, http://www.wampserver.com/en/
Βιβλιογραφία
•
•
•
Larry Ullman, Peachpit Press PHP5Advanced, 2007
Timothy Boronczyk, Elizabeth Naramore, Jason Gerner, Yann Le Scouarnec, Jeremy
Stolz, Michael K. GlassPractical, Beginning PHP 6 Apache MySQL 6 Web
Development, 2009
Craig Cannell, Dionysios Synodinos, The Essential Guide to HTML5 and CSS3 Web
Design, 2012
51
Παράρτημα - Κώδικας
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
52
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Latest Cars</div>
<?php
53
include("db_con.php");
$result = mysql_query("SELECT * FROM cars
ORDER BY modelname DESC
limit 0,3") or die("A problem occured");
while($row = mysql_fetch_array($result)){ ?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title"> <?php
echo $row['modelname']; ?></a></div>
<div class="product_img"><img src="<?php echo
$row['picture']?>" width="130" height="130" alt="" title=""
border="0" /></a></div>
</div>
<div class="prod_details_tab">
<a href="details.php?id=<?php echo $row['carid'] ?>"
class="prod_details">Details </a>
</div>
</div>
<?php } ?>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of right content -->
<div class="footer">
<div class="left_footer"></div>
54
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
register.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
55
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
56
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Register</div>
<div class="prod_box">
<div class="center_prod_box">
<h1>Φόρμα εγγραφής</h1>
<form method="POST" action="registration_proc.php" />
<ul><li><label for="name">Όνομα:</label>
<input type="text" size="40" id="name" name =
"name" required /></li>
<li><label for="sname">Επώνυμο:</label>
<input type="text" size="40" id="sname"
name="sname" required/></li>
<li><label for="email">Email:</label>
<input type="email" size="40" id="email"
name="email" required/></li>
<li><label for="pass">Κωδικός:</label>
<input type="password" size="40" id="password"
name="password" required/></li>
<li><label for="street">Οδός:</label>
<input type="text*" size="40" id="street"
name="street"/></li>
<li><label for="number">Αριθμός:</label>
<input type="number" size="40" id="number"
name="number"/></li>
<li><label for="city">Πόλη:</label>
<input type="text" size="40" id="city" name
="city"/></li>
<li><label for="age">Ηλικία:</label>
<input type="number" size="40" id="age" name="age"
required/></li
<li><label for="phone">Τηλέφωνο:</label>
<input type="text" size="40" id="phone" name =
"phone" required /></li>
</ul>
<p>
<button type="submit"
class="action">Εγγραφή</button>
<button type="reset"
class="right">Επαναφορά</button>
</p>
</form>
</article>
</div>
</div>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
57
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
registration_proc.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
58
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
59
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Registration Result</div>
<div class="prod_box">
<div class="center_prod_box">
<?php
include("db_con.php");
$q = mysql_query("SELECT email FROM customers
WHERE email='".$_POST['email']."'");
$num = mysql_num_rows($q);
if($num > 0){
echo 'This email already exists!<br
/>Please <a href="register.php">try again</a>...';
}
else{
mysql_query("INSERT INTO customers
(name,sname,email,street,number,city,password,newsletter,age,p
hone) VALUES
('".$_POST['name']."','".$_POST['sname']."','".$_POST['email']
."','".$_POST['street']."','".$_POST['number']."','".$_POST['c
ity']."','".$_POST['password']."',0,'".$_POST['age']."','".$_P
OST['phone']."')");
echo 'Your registration is complete!<br
/>Please <a href="login.php">log in</a>...';
}
?>
60
</div>
</div>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
login.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
61
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
62
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Please LogIn</div>
<div class="prod_box">
<div class="center_prod_box">
<form id="slick-login" method="post"
action="checklogin.php">
<label for="email">email</label><input type="text"
name="email" class="placeholder" placeholder="email">
<label for="password">password</label><input
type="password" name="password" class="placeholder"
placeholder="password">
<input type="submit" value="Log In">
63
</form>
</div>
</div>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
checklogin.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
64
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
65
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div
<div
<div
<div
class="center_content">
class="center_title_bar">Login Details</div>
class="prod_box">
class="center_prod_box">
<?php
// Εκχώρηση και "καθάρισμα" στοιχείων που έχει
εισάγει ο χρήστης
$email = $_POST['email'];
$password = $_POST['password'];
$email = stripslashes($email);
$password = stripslashes($password);
include("db_con.php");
66
// Έλεγχος αν υπάρχει το email
$email_query = mysql_query("SELECT email FROM
customers WHERE email= '".$email."'");
if(mysql_num_rows($email_query)==1){
// Έλεγχος αν υπάρχει ο αντίστοιχος
κωδικός
$password_query = mysql_query("SELECT
password FROM customers WHERE email='".$email."' AND
password='".$password."'");
if(mysql_num_rows($password_query)){
$query_userID = mysql_query("SELECT
id FROM customers WHERE email='".$email."'");
list($id) =
mysql_fetch_row($query_userID);
$_SESSION['user'] = $id;
echo "Successful Login";
sleep(2);
header('Location: index.php');
}
else{
echo 'Wrong password!<br />Please
<a href="login.php">try again</a>...';
}
}
else{
echo 'No such user found!<br />Please <a
href="login.php">try again</a>...';
}
?>
</div>
</div>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
67
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
rent.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script>
function validateForm()
{
var x=document.forms["form1"]["date1"].value;
var y=document.forms["form1"]["date2"].value;
var k = true;
if (x==null || x=="")
{
alert("Date In must be filled out");
k=false;
}
else if (y==null || y=="")
{
alert("Date Out must be filled out");
k = false;
}
return k;
}
</script>
</head>
<body>
<?php
session_start();
include("db_con.php");
68
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
69
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Rent a Car</div>
<div class="prod_box">
<div class="center_prod_box">
<form id="form1" name="form1" class="style topLabel page"
accept-charset="UTF-8" autocomplete="off"
enctype="multipart/form-data" method="post" novalidate
onsubmit="return validateForm()" action="results.php">
<h2>Φόρμα ενοικίασης</h2>
Car<input type="radio" name="v" value="1" checked =
"checked" required />
Bike<input type="radio" name="v" value="0" />
<br><br><label class="desc" id="title126"
for="Field126">Επιλογή Καταστήματος</label>
<div>
<span class="right country">
<?php
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET
'utf8_unicode_ci'");
mysql_set_charset('utf8', $con);
70
$result = mysql_query("select * FROM store")
or die("A problem occured");
echo "<select width='300' style='width:
200px; height:50px' name='city' id='city' >\n";
while($row = mysql_fetch_array($result)){
$res1 = $row[city];
$res2 = $row[address];
$res = $res1."-".$res2;
echo "<option
value='$row[storeid]'>$res</option>\n";
echo "</br>";
} ?></select></span>
</div><br><br>
<label class="desc" id="title128"
for="Field128">Ημερομηνία παραλαβής</label>
<span><input id="date1" name="date1" type="date"
value="" size="2" maxlength="2" tabindex="15"
required></span><br><br>
<label class="desc" id="title128"
for="Field128">Ημερομηνία παράδοσης</label>
<span class="symbol"></span>
<span><input id="date2" name="date2" type="date"
class="field text" value="" size="2" maxlength="2"
tabindex="16" required /></span>
<br><br>
<div><input id="saveForm" name="saveForm" class="btTxt
submit" type="submit" value="Εύρεση οχημάτων" />
</div>
</ul>
</form>
</div>
</div>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
71
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
results.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
72
<?php
<li class="divider"></li>
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
73
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<?php
$_SESSION['city'] = $_POST['city'];
$_SESSION['date1'] = $_POST['date1'];
$_SESSION['date2'] = $_POST['date2'];
$vehicle = $_POST['v'];
$city = $_SESSION['city'];
$date1 = $_SESSION['date1'];
$date2 = $_SESSION['date2'];
?>
<div class="center_content">
<div class="center_title_bar">Διαθέσιμα Οχήματα</div>
<?php
include("db_con.php");
if(strtotime($date1) < time())
{
echo "Ημερομηνία Παραλαβής έχει
περάσει.";?><br>
<?php echo 'Παρακαλώ<a href="rent.php"> δοκιμάστε
ξανά</a> με σωστές ημερομηνίες.';
}
else if($date1 > $date2)
{
echo "Ημερομηνία παράδωσης < ημερομηνία
Παραλαβής.";?><br>
<?php echo 'Παρακαλώ<a href="rent.php"> δοκιμάστε
ξανά</a> με σωστές ημερομηνίες.';
}
else
{
$result = mysql_query("Select * from
cars,store,models where models.modelname = cars.modelname and
models.carbike = '".$vehicle."' and store.storeid =
'".$city."' and store.storeid = cars.storeid and carid NOT IN
(SELECT mid FROM rents where (date(rents.endDate) >=
date('".$date1."') and date(rents.endDate) <=
date('".$date2."')) or (date(rents.startDate) >=
date('".$date1."') and date(rents.startDate) <=
date('".$date2."')) )") or die("A problem occured");
while($row = mysql_fetch_array($result))
{
74
$mname = $row['modelname'];
$sid = $row['storeid'];
$result2 = mysql_query("Select sprice
from sales where sales.modelname = '".$mname."' and
sales.storeid = '".$sid."' and date(sales.saleEnd) >=
date('".$date1."') and date(sales.saleStart) <=
date('".$date1."') ") or die("A problem occured");
$sprice = 0;
while ($r = mysql_fetch_array($result2))
{
$sprice = $r['sprice'];
}
?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title">
<?php echo $row['modelname']; ?></a></div>
<div class="product_img"><img src="<?php echo
$row['picture']?>" width="130" height="130" alt="" title=""
border="0" /></a></div>
<div class="prod_price">
<?php
if ($sprice == 0){?>
<span class="price"><?php echo "Τιμή:
".$row['price']."€";?></span></div>
<?php }
else{ ?>
<span class="price"><?php echo "Τιμή:
".$sprice."€";?></span></div>
<?php
} ?>
</div>
<div class="prod_details_tab">
<a href="rentprocess.php?id=<?php echo $row['carid']
?> "class="prod_details">Rent it</a>
</div>
</div>
<?php } ?>
<?php } ?>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
75
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
rentprocess.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
76
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
77
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Πληροφορίες Κράτησης</div>
<div class="prod_box">
<div class="center_prod_box">
<?php
$date1 = $_SESSION['date1'];
$date2 = $_SESSION['date2'];
if (!isset($_SESSION['user'])){
echo "You have to login first";
}
else{
$cid = $_GET['id'];
$result = mysql_query("Select * from
cars,models where carid = '".$cid."' and cars.modelname =
models.modelname") or die(mysql_error());
while($row = mysql_fetch_array($result)){
$modelname = $row['modelname'];
$sid = $row['storeid'];
$result2 = mysql_query("Select
sprice from sales where sales.modelname = '".$modelname."' and
sales.storeid = '".$sid."' and date(sales.saleEnd) >=
date('".$date1."') and date(sales.saleStart) <=
date('".$date1."') ") or die("A problem occured");
$sprice = 0;
while($r =
mysql_fetch_array($result2)){
$sprice = $r['sprice'];
}
if ($sprice == 0){
$price = $row['price'];
$mid = $row['modelname'];
78
}
else{
strtotime($date1));
$price = $sprice;
$mid = $row['modelname'];
}
}
$diff = abs(strtotime($date2) -
$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years *
365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years *
365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
$price = $price * $days;
mysql_query("INSERT INTO rents
(cid,mid,startDate,endDate,totalPrice) VALUES
('".$_SESSION['user']."','".$cid."','".$_SESSION['date1']."','
".$_SESSION['date2']."','".$price."')") or die
(mysql_error());
echo 'Your renting process is complete!';
}
?>
</div>
</div>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
79
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
show.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
80
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
81
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Ενεργές Κρατήσεις</div>
<?php
include("db_con.php");
$today = date("Y-m-d");
$result = mysql_query("SELECT * FROM
rents,customers,cars,store where rents.mid =cars.carid and
cars.storeid=store.storeid and id = '".$_SESSION['user']."'
and customers.id = rents.cid and
rents.startDate>='".$today."'") or die("A problem occured");
$n = 0;
while($row = mysql_fetch_array($result)){
$n++;
?>
<br><br><p><font size="3"><?php echo $n.")Όνομα
μοντέλου:".$row['modelname']." Παραλαβή:".$row['startDate']."
Παράδοση:".$row['endDate']. "
Κόστος:".$row['totalPrice']."€"."
Πόλη:".$row['city']; ?> <a href="cancel.php?line=<?php
echo $n ?>;&amp;customer=<?php echo
$_SESSION['user']?>">Ακύρωση</a></font>
<?php } ?>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
82
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
cancel.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
83
<?php
<li class="divider"></li>
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
84
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Canceling
Reservation...</div>
<div class="prod_box">
<?php
include("db_con.php");
//$today = date("Y-m-d");
$param1 = $_GET['line'];
$result = mysql_query("SELECT * FROM rents
where cid = '".$_SESSION['user']."'") or die("A problem
occured");
$n = 0;
while($row = mysql_fetch_array($result)){
$n++;
if ($n == $param1){
echo "Έγινε ακύρωση της κράτησης
σας!";
$res2 = mysql_query("DELETE FROM
rents WHERE cid = '".$row['cid']."' and mid =
'".$row['mid']."' and startDate = '".$row['startDate']."' and
endDate = '".$row['endDate']."'") or die('Error: ' .
mysql_error());
}
}
?>
</div>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
85
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
details.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
86
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
87
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Details</div>
<?php
$serial = $_GET['id'];
include("db_con.php");
$result = mysql_query("SELECT * FROM cars,
models, cartype where carid = '".$serial."' and cars.modelname
= models.modelname and models.typeid = cartype.typeid") or
die(mysql_error());
$results = mysql_fetch_array($result)
?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title"> <?php
echo $results['modelname']; ?></a></div>
<div class="product_img"><img src="<?php echo
$results['picture']?>" width="130" height="130" alt=""
title="" border="0" /></a></div>
<div class="prod_price">
<span class="price">Τιμή: <?php echo
$results['price']; ?>€</span><br>
<span class="price">Τύπος: <?php echo
$results['typename']; ?></span><br>
<span class="price">Κυβικά: <?php echo
$results['engine']; ?></span><br>
<?php
if ($results['kibotio'] == '1'){?>
<span class="price">Κιβώτιο: <?php echo "Manual";
?></span></div>
88
<?php
}
else{?>
<span class="price">Κιβώτιο: <?php echo
"Automatic"; ?></span></div>
<?php
}?>
</div>
<div class="prod_details_tab">
</div>
</div>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
89
</html>
types.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
90
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Οχήματα Κατηγορίας</div>
<?php
include("db_con.php");
if($_GET['id'] == '11'){
91
$result = mysql_query("SELECT * FROM
cars,models where models.carbike = '1' and cars.modelname =
models.modelname ") or die("A problem occured");
}
else if($_GET['id'] == '12'){
$result = mysql_query("SELECT * FROM
cars,models where models.carbike = '0' and cars.modelname =
models.modelname ") or die("A problem occured");
}
else{
$result = mysql_query("SELECT * FROM
cars,models where models.typeid = '".$_GET['id']."' and
cars.modelname = models.modelname") or die("A problem
occured");
}
while($row = mysql_fetch_array($result)){
?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title">
<?php echo $row['modelname']; ?></a></div>
<div class="product_img"><img src="<?php echo
$row['picture']?>" width="130" height="130" alt="" title=""
border="0" /></a></div>
</div>
<div class="prod_details_tab">
<a href="details.php?id=<?php echo $row['carid'] ?>"
class="prod_details">Details</a>
</div>
</div>
<?php } ?>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
92
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
search.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
93
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
94
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">Αποτελέσματα
Αναζήτησης</div>
<?php
$keyword = $_POST['keyword'];
include("db_con.php");
$result = mysql_query("SELECT * FROM
cars,models where cars.modelname = models.modelname and
models.modelname like '%$keyword%'") or die(mysql_error());
while($row = mysql_fetch_array($result)){
?>
<div class="prod_box">
<div class="center_prod_box">
<div class="product_title"><a href="details.php">
<?php echo $row['modelname']; ?></a></div>
<div class="product_img"><a href="details.php"><img
src="<?php echo $row['picture']?>" width="130" height="130"
alt="" title="" border="0" /></a></div>
<div class="prod_price">
<span class="price"><?php echo
$row['modelname'];?></span></div>
</div>
<div class="prod_details_tab">
<a href="details.php?id=<?php echo $row['carid'] ?>"
class="prod_details">Details</a>
</div>
</div>
<?php } ?>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
<p><input type="submit" name="search" value="search"
/></p>
</form>
95
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
profil.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;
charset=utf-8" />
<title>RENT A CAR ONLINE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
session_start();
include("db_con.php");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
<form name="form1" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
96
<div id="main_container">
<div id="header"><a href="index.html"><img
src="images/car2.jpg" alt="" title="" border="0" width="1000"
height="234" /></a></div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li><a href="index.php"
class="nav">Αρχική</a></li>
<li></li>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="register.php"
class="nav">Εγγραφή</a></li>
<?php
}
else{
$result = mysql_query("SELECT name FROM
customers where id = '".$_SESSION['user']."'") or die("A
problem occured");
$r = mysql_fetch_array($result);?>
<li><a href="profil.php" class="nav"><?php
echo $r['name'] ?></a></li>
<?php } ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ ?>
<li><a href="login.php"
class="nav">Σύνδεση</a></li>
<?php }
else{ ?>
<li><a href="logout.php"
class="nav">Έξοδος</a></li>
<?php
} ?>
<li class="divider"></li>
<?php
if (!isset($_SESSION['user'])){ }
else{ ?>
<li><a href="rent.php"
class="nav">Ενοικίαση</a></li>
<li class="divider"></li>
<li><a href="show.php" class="nav">Οι
κρατήσεις μου</a></li>
<?php
} ?>
</ul>
</div><!-- end of menu tab -->
<div class="crumb_navigation"></div>
<div class="left_content">
<div class="title_box">Car Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=1\">Hybrid </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=2\">City </a>"?></li>
97
<li class="odd"><?php echo "<a
href=\"types.php?id=3\">Jeep </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=4\">Luxury </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=5\">Family </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=6\">Other </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=11\">All </a>"?></li>
</ul>
<div class="title_box">Bike Categories</div>
<ul class="left_menu">
<li class="odd"><?php echo "<a
href=\"types.php?id=7\">Street </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=8\">On/Off </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=9\">Cross </a>"?></li>
<li class="even"><?php echo "<a
href=\"types.php?id=10\">Scooter </a>"?></li>
<li class="odd"><?php echo "<a
href=\"types.php?id=12\">All </a>"?></li>
</ul>
</div>
</div><!-- end of left content -->
<div class="center_content">
<div class="center_title_bar">User Profile</div>
<div class="prod_box">
<?php
$result = mysql_query("SELECT * FROM customers
where id = '".$_SESSION['user']."'") or die("A problem
occured");
$results = mysql_fetch_array($result)
?>
<font size="2">
<?php echo "Όνομα: ".$results['name']?><br>
<?php echo "Επίθετο: ".$results['sname']?><br>
<?php echo "Email: ".$results['email']?><br>
<?php echo "Οδός: ".$results['street']."
".$results['number']." ".$results['city']?><br>
<?php echo "Τηλέφωνο: ".$results['phone']?>
</font>
</div>
</div><!-- end of center content -->
<div class="right_content">
<div class="title_box">Search</div>
<div class="border_box">
<form id="form3" name="form3" method="post"
action="search.php">
<p><input type="text" name="keyword"
class="newsletter_input" value="keyword"/></p>
<p>&nbsp;</p>
98
<p><input type="submit" name="search" value="search"
/></p>
</form>
</div>
<div class="title_box">Sales</div>
<div class="border_box">
<?php
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$result = mysql_query("SELECT * FROM
sales,store where sales.storeid = store.storeid") or die("A
problem occured");
$p = 0;
while($row = mysql_fetch_array($result)){
$p++;
echo "ΠΡΟΣΦΟΡΑ ".$p.":<br>Το Μοντέλο
".$row['modelname']." σε τιμή ".$row['sprice']."€ από
".$row['saleStart']." έως ".$row['saleEnd']." στην
".$row['city'];
}
?>
</div>
<div class="shopping_cart"></div>
</div><!-- end of main content -->
<div class="footer">
<div class="left_footer"></div>
<div class="center_footer">
<br /><br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer"></div>
</div>
</div><!-- end of main_container -->
</body>
</html>
Style.css
body
{
background:url(images/bg.jpg) repeat-x #e4e9ec top;
padding:0;
font-family:Arial, Helvetica, sans-serif;
font-size:11px;
margin:0px auto auto auto;
color:#000;
}
p{
padding:2px;
margin:0px;
}
#main_container{
width:1000px;
height:auto;
margin:auto;
99
padding:0px;
background-color:#FFFFFF;
}
#header{
width:1000px;
height:236px;
background:url(images/header_bg.jpg) no-repeat center;
background-position:0px 0px;
margin:auto;
}
#logo{
height: 300px;
width: 100%;
float:left;
padding:0px 30 30
35px;
}
#main_content{
clear:both;
}
.languages{
float:right;
width:150px;
padding:8px 0 0 0;
}
.lang_text{
float:left;
padding:0 5px 0 0;
color:#1DA1CF;
}
a.lang{
display:block;
float:left;
padding:0 5px 0 5px;
}
.top_right{
width:728px;
float:right;
}
.big_banner{
float:right;
padding:10px 10px 0 0;
}
/*---------------- menu tab----------------------*/
#menu_tab{
width:1000px;
height:36px;
background:url(images/menu_bg.gif) repeat-x;
}
ul.menu {
list-style-type:none; float:left; display:block; width:982px;
margin:0px; padding:0px;background:url(images/menu_bg.gif)
repeat-x;}
ul.menu li {
display:inline;
100
font-size:11px;
font-weight:bold;
line-height:36px;
}
ul.menu li.divider {
display:inline;
width:4px;
height:36px;
float:left;
background:url(images/menu_divider.gif) no-repeat center;
}
a.nav:link, a.nav:visited {
display:block; float:left; padding:0px 8px 0px 8px; margin:0
14px 0 14px;height:36px;text-decoration:none;color:#fff;}
a.nav:hover{
display:block; float:left; padding:0px 8px 0px 8px; margin:0
14px 0 14px;height:36px;text-decoration:none;color:#199ECD;}
/*----------------crumb_navigation-------------*/
.crumb_navigation{
width:980px;
height:15px;
padding:5px 10px 0 20px;
color:#333333;
background:url(images/navbullet.png) no-repeat left;
background-position:5px 8px;
}
.crumb_navigation a{
color:#0fa0dd;
text-decoration:underline;
}
span.current{
color:#0fa0dd;
}
/*-------------left_content------------------*/
.left_content{
width:180px;
float:left;
padding:0 0 0 5px;
}
.title_box{
width:180px;
height:30px;
margin:5px 0 0 0;
background:url(images/menu_title_bg.gif) no-repeat center;
text-align:center;
font-size:13px;
font-weight:bold;
color:#159dcc;
line-height:30px;
}
/*--------left menu---------*/
ul.left_menu{
101
width:180px;
padding:0px;
margin:0px;
list-style:none;
}
ul.left_menu li{
margin:0px;
list-style:none;
}
ul.left_menu li.odd a{
width:166px;height:25px;display:block; border-bottom:1px
#e4e4e4 dashed;
text-decoration:none;color:#504b4b;padding:0 0 0 14px; lineheight:25px;
}
ul.left_menu li.even a{
width:166px;height:25px;display:block; border-bottom:1px
#e4e4e4 dashed; background-color:#f0f4f5;
text-decoration:none;color:#504b4b;padding:0 0 0 14px; lineheight:25px;
}
ul.left_menu li.even a:hover, ul.left_menu li.odd a:hover{
color:#000; text-decoration:underline;
}
.border_box{
width:180px;
height:auto;
text-align:center;
background:url(images/box_bottom_bg.gif) no-repeat center
bottom;
}
.product_title{
color:#ff8a00;
padding:5px 0 5px 0;
font-weight:bold;
}
.product_title a{
text-decoration:none;
color:#ff8a00;
padding:5px 0 5px 0;
font-weight:bold;
}
.product_title a:hover{
color:#064E5A;
}
.product_img{
padding:5px 0 5px 0;
}
.prod_price{
padding:5px 0 5px 0;
}
span.reduce{
color:#666666;
text-decoration:line-through;
}
102
span.price{
color: #ff8a00;
}
/*----------newsletter--------------*/
input.newsletter_input{
width:150px;
height:16px;
border:1px #ddd9d9 solid;
margin:10px 0 5px 0;
font-size:12px;
padding:3px;
color:#999999;
}
a.join{
width:17px;
display:block;
margin:0px 0 5px 110px;
padding:2px 8px 6px 8px;
text-decoration: underline;
color:#169ECC;
}
.banner_adds{
width:180px;
text-align:center;
padding:10px 0 10px 0;
}
/*--------------oferta------------------*/
.oferta{
width:585px;
height:156px;
background:url(images/slider_bg.gif) no-repeat center;
float:left;
padding:0px;
margin:0 0 5px 5px;
}
.oferta_img{
float:left;
padding:10px 0 0 10px;
}
.oferta_title{
font-size:15px;
color:#159dcc;
font-weight:bold;
}
.oferta_details{
width:340px;
float:left;
padding:20px 0 0 30px;
}
.oferta_text{
padding:5px 0 5px 0;
font-size:12px;
color:#159dcc;
text-align:justify;
line-height:15px;
}
103
/*center content--------------------------*/
.center_content{
width: 600px;
float: left;
padding: 5px 10px 5px 15px;
font-family: Arial, Helvetica, sans-serif;
}
.center_title_bar{
width:575px;
height:31px;
float:left;
padding:0 0 0 10px;
margin:0 0 0 5px;
line-height:31px;
font-size:12px;
color:#159DCC;
font-weight:bold;
background:url(images/bar_bg.gif) no-repeat center;
}
/*----------------------right content--------------*/
.right_content{
width:180px;
float:left;
padding:0px;
}
.shopping_cart{
width:180px;
height:84px;
text-align:center;
}
.cart_title{
font-size:12px;
font-size:12px;
color:#847676;
font-weight:bold;
padding:0px;
}
.cart_details{
width:115px;
float:left;
padding:5px 0 0 15px;
text-align:left;
}
.cart_icon{
float:left;
padding:5px 0 0 5px;
}
span.border_cart{
width:100px;
height:1px;
margin:3px 0 3px 0;
display:block;
border-top:1px #999999 dashed;
}
104
/*---------prod_box----------*/
.prod_box{
width:173px;
height:auto;
float:left;
padding:10px 10px 10px 11px;
}
.center_prod_box{
width:173px;height: auto;float:left; textalign:center;padding:0px; margin:0px; border:1px #F0F4F5
solid;
}
.prod_details_tab{
width:173px;
height:31px;
float:left;
margin:3px 0 0 0;
}
img.left_bt{
float:left;
padding:6px 0 0 6px;
}
a.prod_details{
width:75px;
height:24px;
display:block;
float:right;
background:url(images/link_bg.gif) no-repeat center;
margin:2px 5px 0 0;
text-align:center;
line-height:24px;
text-decoration:none;
color:#159dcc;
}
a.prod_compare{
width:75px;
height:24px;
display:block;
float:left;
background:url(images/link_bg.gif) no-repeat center;
margin:2px 0 0 5px;
text-align:center;
line-height:24px;
text-decoration:none;
color:#159dcc;
}
a.prod_buy{
width:75px;
height:24px;
display:block;
float:left;
background:url(images/link_bg.gif) no-repeat center;
margin:2px 0 0 5px;
text-align:center;
line-height:24px;
105
text-decoration:none;
color: #006600;
}
/*---------prod_box_big----------*/
.prod_box_big{
width:554px;
height:auto;
float:left;
padding:10px 10px 15px 15px;
}
.center_prod_box_big{
width:554px;height: auto;float:left; textalign:center;padding:0 0 10px 0; margin:0px;border:1px #F0F4F5
solid;
}
.product_img_big{
width:170px;
padding:10px 0 0 10px;
float:left;
}
.details_big_box{
width:345px;
float:left;
padding:0 0 0 15px;
text-align:left;
}
.product_title_big{
color:#ff8a00;
padding:5px 0 5px 0;
font-weight:bold;
font-size:14px;
}
.specifications{
font-size:12px;
font-weight:bold;
line-height:18px;
}
.thumbs{
padding:8px 5px 8px 5px;
border:1px #DFD1D1 solid;
margin:15px 0 0 0;
}
.thumbs a{
padding:3px;
}
.prod_price_big{
padding:5px 0 5px 0;
font-size:16px;
}
a.addtocart{
width:76px;
height:27px;
display:block;
float:left;
background:url(images/addtocart.gif) no-repeat left;
padding:0 0 0 33px;
106
text-decoration:none;
line-height:27px;
color:#1c4a52;
}
a.compare{
width:76px;
height:27px;
display:block;
float:left;
margin:0 0 0 10px;
background:url(images/compare.gif) no-repeat left;
padding:0 0 0 33px;
text-decoration:none;
line-height:27px;
color:#1c4a52;
}
span.blue{
color:#159DCC;
}
/*---------------contact_form------------------*/
.contact_form{
width:355px;
float:left;
padding:0px 0 0 75px;
}
.form_row{
width:335px;
clear:both;
padding:10px 0 10px 0;
color:#a53d17;
}
label.contact{
width:75px;
float:left;
font-size:12px;
text-align:right;
padding:4px 5px 0 0;
color: #333333;
}
input.contact_input{
width:253px;
height:18px;
background-color:#fff;
color:#999999;
border:1px #DFDFDF solid;
float:left;
}
textarea.contact_textarea{
width:253px;
height:100px;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
color: #999999;
background-color:#fff;
border:1px #DFDFDF solid;
float:left;
107
}
a.contact{
width:99px;
height:27px;
display:block;
float:right;
margin:0 0 0 10px;
background:url(images/contact_bt.gif) no-repeat left;
padding:0 0 0 10px;
text-decoration:none;
line-height:27px;
color:#1c4a52;
}
/*--------------footer----------------*/
.footer{
width:1000px;
clear:both;
height:65px;
background:url(images/footer_bg.gif) repeat-x top;
}
.left_footer{
float:left;
width:300px;
padding:5px 0 0 10px;
}
.right_footer{
float:right;
padding:15px 30px 0 0;
}
.right_footer a{
padding:0 0 0 7px;
text-decoration:none;
color: #666666;
}
.right_footer a:hover{
text-decoration:underline;
}
.center_footer{
float:left;
width:200px;
text-align:center;
color:#666666;
padding:10px 0 0 60px;
}
108
Fly UP