ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (Τ.Ε.Ι.) ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΘΕΜΑ:

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (Τ.Ε.Ι.) ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΘΕΜΑ:"

Transcript

1 ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (Τ.Ε.Ι.) ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΘΕΜΑ: ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΕΦΑΡΜΟΓΗΣ ΔΙΑΔΙΚΤΥΟΥ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΔΙΟΙΚΗΤΙΚΩΝ ΥΠΗΡΕΣΙΩΝ ΣΤΟ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΤΟΥ Τ.Ε.Ι. ΚΑΒΑΛΑΣ, ΜΕ ΧΡΗΣΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ MySQL ΚΑΙ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ HTML ΚΑΙ PHP. ΣΥΓΓΟΥΡΟΓΛΟΥ ΜΑΡΓΑΡΙΤΑ ΣΠΟΥΔΑΣΤΡΙΑ Δρ. ΧΑΤΖΗΣ ΒΑΣΙΛΕΙΟΣ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ ΚΑΒΑΛΑ, 2006

2 ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΕΦΑΡΜΟΓΗΣ ΔΙΑΔΙΚΤΥΟΥ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΔΙΟΙΚΗΤΙΚΩΝ ΥΠΗΡΕΣΙΩΝ ΣΤΟ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΤΟΥ Τ.Ε.Ι. ΚΑΒΑΛΑΣ, ΜΕ ΧΡΗΣΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ MySQL ΚΑΙ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ HTML ΚΑΙ PHP.

3 ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (Τ.Ε.Ι.) ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΕΦΑΡΜΟΓΗΣ ΔΙΑΔΙΚΤΥΟΥ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΔΙΟΙΚΗΤΙΚΩΝ ΥΠΗΡΕΣΙΩΝ ΣΤΟ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΤΟΥ Τ.Ε.Ι. ΚΑΒΑΛΑΣ, ΜΕ ΧΡΗΣΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ MySQL ΚΑΙ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ HTML ΚΑΙ PHP. ΣΥΓΓΟΥΡΟΓΛΟΥ ΜΑΡΓΑΡΙΤΑ ΣΠΟΥΔΑΣΤΡΙΑ Δρ. ΧΑΤΖΗΣ ΒΑΣΙΛΕΙΟΣ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ ΚΑΒΑΛΑ, 2006

4 ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΕΦΑΡΜΟΓΗΣ ΔΙΑΔΙΚΤΥΟΥ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΔΙΟΙΚΗΤΙΚΩΝ ΥΠΗΡΕΣΙΩΝ ΣΤΟ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΤΟΥ Τ.Ε.Ι. ΚΑΒΑΛΑΣ, ΜΕ ΧΡΗΣΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ MySQL ΚΑΙ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ HTML ΚΑΙ PHP. Πτυχιακή εργασία της Συγγούρογλου Μαργαρίτας Τμήμα ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ Τ.Ε.Ι. Καβάλας Εγκρίνεται για παρουσίαση από τον Πρόεδρο της εποπτεύουσας επιτροπής

5 Ευχαριστώ την οικογένειά μου για την στήριξη και την συμπαράστασή τους. Ευχαριστώ τον Επίκουρο Καθηγητή κ. Χατζή Βασίλειο για την καθοδήγηση και τη βοήθειά του κατά τη διάρκεια της δημιουργίας της διαδικτυακής εφαρμογής και όλους όσους βοήθησαν «άμεσα ή έμμεσα» στην πραγματοποίησή της. Συγγούρογλου Μαργαρίτα Καβάλα, 2006

6 ΠΕΡΙΕΧΟΜΕΝΑ ΕΝΟΤΗΤΑ 1 1. Εργαλεία που χρησιμοποιήθηκαν για την εφαρμογή MySQL HTML PHP Apache.2 ΕΝΟΤΗΤΑ 2 2. Παρουσίαση της Διαδικτυακής Εφαρμογής Γενικά Σπουδαστές Διαχειριστές.5 ΠΑΡΑΡΤΗΜΑ Α ΕΝΟΤΗΤΑ 3 3. Περιγραφή της Βάσης Δεδομένων Γενικά Περιγραφή των Πινάκων 12 ΠΑΡΑΡΤΗΜΑ Β ΕΝΟΤΗΤΑ 4 4.Επεξήγηση του κώδικα της εφαρμογής Γενικά Εισαγωγική σελίδα Σύνδεση Διαχειριστή Επιλογή δραστηριότητας Εισαγωγή/Τροποποίηση προγράμματος Διαθεσιμότητα Αιθουσών Προβολή Σπουδαστών ανά Μάθημα Συγκεντρωτικό Πρόγραμμα Ποσοστά Συμμετοχής ανά Εργαστήριο Σύνδεση Χρήστη Επιλογή Μαθημάτων Δήλωση Εργαστηρίων.103 ΠΑΡΑΡΤΗΜΑ Γ ΒΙΒΛΙΟΓΡΑΦΙΑ 123

7 ΕΝΟΤΗΤΑ 1.: «Εργαλεία που Χρησιμοποιήθηκαν για την Εφαρμογή» 1. ΕΡΓΑΛΕΙΑ που ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΑΝ για την ΕΦΑΡΜΟΓΗ 1.1. Γενικά Η εφαρμογή που περιγράφεται είναι μια Web τοποθεσία που εξυπηρετεί διοικητικές ανάγκες του Τμήματος Διαχείρισης Πληροφοριών. Περιλαμβάνει ιστοσελίδες συνδεμένες μεταξύ τους, στις οποίες έχουν πρόσβαση οι διαχειριστές της εφαρμογής και οι σπουδαστές του Τμήματος. Όλοι έχουν πρόσβαση μόνο αν έχουν όνομα χρήστη (username) και κωδικό πρόσβασης (password). Για τη σχεδίαση της εφαρμογής χρησιμοποιήθηκε η MySQL ως ένα σύστημα διαχείρισης βάσεων δεδομένων, η γλώσσα προγραμματισμού HTML για το σχεδιασμό της εφαρμογής, η γλώσσα PHP για τη σχεδίαση των script και ο Apache διακομιστής για την προβολή των σελίδων MySQL Η MySQL, είναι ένα σύστημα διαχείρισης βάσεων δεδομένων που ελέγχει την πρόσβαση στα δεδομένα ώστε να μπορούν πολλοί χρήστες μαζί να συνδέονται και να δουλεύουν με αυτή. Επιτρέπει την αποθήκευση, την αναζήτηση, την ταξινόμηση και την ανάκληση δεδομένων. Χρησιμοποιεί την SQL για να δέχεται ερωτήματα προς τη βάση δεδομένων και είναι διαθέσιμη για εφαρμογές ανοιχτού κώδικα που δικαιολογεί το χαμηλό της κόστος. Έχει υψηλή απόδοση, εύκολη διαμόρφωση και εκμάθηση HTML Η HTML, είναι μια γλώσσα συνεννόησης του Παγκόσμιου Ιστού. Επιτρέπει τη δημιουργία απλών αλλά και πολύπλοκων ιστοσελίδων με οποιονδήποτε επεξεργαστή κειμένου, που περιέχουν κείμενο, λίστες, πίνακες, πλαίσια, γραφικά, ήχο, βίντεο, συνδέσμους προς άλλες σελίδες. Είναι κατανοητή από όλους τους υπολογιστές και ο καθένας από αυτούς ερμηνεύει τις σελίδες της με το δικό του τρόπο. Οι διάφορες εκδόσεις της είναι ανοιχτές για τον καθένα. 1

8 ΕΝΟΤΗΤΑ 1.: «Εργαλεία που Χρησιμοποιήθηκαν για την Εφαρμογή» 1.4. PHP Η PHP, είναι μια γλώσσα script που σχεδιάστηκε για το Web. Ενσωματώνεται σε HTML σελίδες και εκτελείται κάθε φορά που κάποιος θα επισκέπτεται τις σελίδες αυτές. Είναι προϊόν ανοιχτού κώδικα και είναι διαθέσιμη για πολλά λειτουργικά συστήματα. Με την PHP, είναι δυνατή η σύνδεση με τη MySQL χωρίς κανένα πρόβλημα και είναι μια αποτελεσματική λειτουργική μονάδα για τον Apache διακομιστή. Έχει υψηλή απόδοση, χαμηλό κόστος, εύκολη μάθηση και χρήση, διασυνδέσεις με πολλά διαφορετικά συστήματα βάσεων δεδομένων Apache Ο Apache Web διακομιστής μπορεί να χρησιμοποιηθεί με την PHP και την MySQL και να χειρίζεται οποιοδήποτε αρχείο.php και.html ως αρχεία PHP. Μπορεί να σταματήσει να τρέχει ανά πάσα στιγμή απλά με το κλείσιμο του παραθύρου της κονσόλας του Αpache. 2

9 ΕΝΟΤΗΤΑ 2.: «Παρουσίαση Διαδικτυακής Εφαρμογής» 2. ΠΑΡΟΥΣΙΑΣΗ της ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ 2.1. Γενικά Η Διαδικτυακή εφαρμογή η οποία περιγράφεται αποτελείται από δύο τμήματα. Το ένα αφορά τους σπουδαστές του Τμήματος Διαχείρισης Πληροφοριών οι οποίοι καλούνται να δηλώνουν τα εργαστηριακά τους μαθήματα μέσω internet και το άλλο αφορά τους διαχειριστές της εφαρμογής οι οποίοι διαμορφώνουν τα στοιχεία της βάσης δεδομένων εισάγοντας ή τροποποιώντας τα υπάρχοντα δεδομένα σύμφωνα με τις ανάγκες του Τμήματος. Σχήμα1. Είσοδος στην εφαρμογή Οι χρήστες για να έχουν πρόσβαση στην εφαρμογή χρησιμοποιούν το username και το password τους με τα οποία τους επιτρέπεται η σύνδεση και χρήση της εφαρμογής. Η πρώτη λοιπόν σελίδα που συναντούν κατά τη σύνδεσή τους είναι ο έλεγχος των στοιχείων του χρήστη για να πραγματοποιηθεί το login. 3

10 ΕΝΟΤΗΤΑ 2.: «Παρουσίαση Διαδικτυακής Εφαρμογής» 2.2. Σπουδαστές Οι σπουδαστές σαν απλοί χρήστες έχουν διαφορετικό login από τους διαχειριστές της εφαρμογής. Κάνοντας login, αφού τα στοιχεία του χρήστη επιβεβαιωθούν από την εφαρμογή, εμφανίζεται μια σελίδα με όλα τα μαθήματα του προγράμματος σπουδών του Τμήματος Διαχείρισης Πληροφοριών του Τ.Ε.Ι. Καβάλας ανά εξάμηνο σπουδών. Εκεί οι σπουδαστές καλούνται να επιλέξουν τα εργαστηριακά τους μαθήματα. Μπορούν να τσεκάρουν και τα μη εργαστηριακά, τα οποία όμως θα εμφανιστούν απλά για να συμπληρώσουν το προσωπικό πρόγραμμα του εκάστοτε σπουδαστή και χωρίς καμία άλλη ιδιότητα. Αφού επιλέξουν όλα τα επιθυμητά τους μαθήματα και πατήσουν το κουμπί «ΑΠΟΣΤΟΛΗ», οδηγούνται στην επόμενη σελίδα όπου βλέπουν τα μαθήματα που επέλεξαν στην προηγούμενη, με τη μορφή ωρολογίου προγράμματος. Αυτό διευκολύνει τη χρήση της εφαρμογής, γιατί οι σπουδαστές είναι εξοικειωμένοι με την εικόνα αυτή και δεν δυσανασχετούν στο αντίκρισμά της. Σχήμα2. Δήλωση εργαστηριακών ομάδων 4

11 ΕΝΟΤΗΤΑ 2.: «Παρουσίαση Διαδικτυακής Εφαρμογής» Εδώ η εφαρμογή τους δίνει τη δυνατότητα να δηλώσουν τα εργαστήριά τους στην μέρα και ώρα που τους βολεύει. Βλέπουν όλα τα μαθήματα που έχουν επιλέξει στη θέση του προγράμματος όπου διεξάγονται. Έτσι, τους είναι εύκολο να δουν ποια ομάδα εργαστηρίου τους, ταιριάζει στο πρόγραμμα σύμφωνα με τα υπόλοιπα μαθήματά τους και πατώντας το κουμπί «ΕΓΓΡΑΦΗ» να τη δηλώσουν. Σε περίπτωση που μετανιώσουν για την επιλογή της ομάδας εργαστηρίου που έχουν δηλώσει, έχουν τη δυνατότητα να διαγραφούν από αυτή πατώντας το κουμπί «ΔΙΑΓΡΑΦΗ» και να επιλέξουν κάποια άλλη. Στη σελίδα αυτή ο σπουδαστής βλέπει δίπλα σε κάθε μάθημα δύο αριθμούς που αντιπροσωπεύουν το πλήθος των ήδη εγγεγραμμένων σπουδαστών και τη χωρητικότητα της ομάδας. Αν κάποιο εργαστήριο είναι πλήρες, ο σπουδαστής δε μπορεί να το δηλώσει. Τελειώνοντας τη δήλωση των εργαστηρίων του, βγαίνει από το πρόγραμμα δήλωσης εργαστηριακών ομάδων κάνοντας logout Διαχειριστές Οι διαχειριστές έχουν περισσότερα προνόμια και ενέργειες να εκτελέσουν από τους απλούς χρήστες. Αυτοί ενημερώνουν τη Βάση Δεδομένων σε κάθε αλλαγή χειμερινού/εαρινού εξαμήνου με το ωρολόγιο πρόγραμμα της περιόδου και τροποποιούν τα υπάρχοντα στοιχεία σε περίπτωση κάποιας αλλαγής. Η εφαρμογή τους δίνει τη δυνατότητα να διαμορφώσουν τα δεδομένα της βάσης και του συστήματος οποιαδήποτε στιγμή το κρίνουν απαραίτητο, μέσω ενός γραφικού περιβάλλοντος εργασίας. Αρχικά είναι και αυτοί υποχρεωμένοι να κάνουν login και αν η εφαρμογή πιστοποιήσει τα στοιχεία τους, τους παραχωρούνται οι παρακάτω δυνατότητες. Περνώντας από τη σελίδα του login, οδηγούνται στην επόμενη όπου καλούνται να επιλέξουν τη διεργασία που θέλουν να χρησιμοποιήσουν. Επιλέγοντας ανάμεσα από τις διεργασίες Εισαγωγή μαθημάτων/μετατροπή του εξαμηνιαίου προγράμματος, Ωρολόγιο πρόγραμμα χρήσης αιθουσών, Φοιτητές ανά επιλεγμένο εργαστήριο, Ωρολόγιο πρόγραμμα μαθημάτων, Ποσοστιαία προβολή συμμετοχών ανά εργαστήριο μπορούν να δουν στατιστικές πληροφορίες και να κάνουν τις μετατροπές που είναι απαραίτητες. Η διεργασία Εισαγωγή μαθημάτων/μετατροπή εξαμηνιαίου προγράμματος, δίνει τη δυνατότητα στο διαχειριστή να εισάγει κάποιο μάθημα σε οποιαδήποτε μέρα 5

12 ΕΝΟΤΗΤΑ 2.: «Παρουσίαση Διαδικτυακής Εφαρμογής» και ώρα του προγράμματος. Επιλέγει αρχικά το εξάμηνο για το οποίο θα κάνει τις μετατροπές και εμφανίζεται στην ίδια σελίδα το υπάρχον πρόγραμμα μαθημάτων του εξαμήνου. Για να αλλάξει εξάμηνο, επιλέγει ξανά το εξάμηνο που επιθυμεί και του εμφανίζεται το αντίστοιχο πρόγραμμα μαθημάτων το οποίο μπορεί να τροποποιήσει. Στο πρόγραμμα εμφανίζονται η περιγραφή του μαθήματος με την ιδιότητά του και τον αριθμό της ομάδας του, η αίθουσα στην οποία διεξάγεται και ο μέγιστος αριθμός των σπουδαστών που επιτρέπεται να το δηλώσουν. Σχήμα3. Διαμόρφωση εξαμηνιαίου προγράμματος Ο διαχειριστής μπορεί να διαγράψει κάποιο μάθημα που ήδη υπάρχει σε μια συγκεκριμένη μέρα και ώρα πατώντας το κουμπί «DELETE» που βρίσκεται ακριβώς δίπλα στην περιγραφή του εκάστοτε μαθήματος. Αν θέλει απλά να τροποποιήσει την υπάρχουσα εγγραφή, στο πεδίο με το κουμπί «UPDATE» επιλέγει τα νέα στοιχεία της εγγραφής και πατάει το κουμπί για να ολοκληρωθεί η τροποποίηση. Στο πεδίο με το κουμπί «UPDATE», εμφανίζονται μόνο τα μαθήματα που υπάρχουν στη 6

13 ΕΝΟΤΗΤΑ 2.: «Παρουσίαση Διαδικτυακής Εφαρμογής» συγκεκριμένη θέση του προγράμματος. Αν η επιθυμία του είναι να εισάγει μια νέα εγγραφή, στο πεδίο με το κουμπί «INSERT» επιλέγει το μάθημα με την ιδιότητά του, τον αριθμό της ομάδας του, την αίθουσα στην οποία θα διενεργείται και το μέγιστο επιτρεπόμενο πλήθος σπουδαστών που μπορούν να το δηλώσουν. Στο πεδίο για την εισαγωγή νέου μαθήματος, εμφανίζονται μόνο τα μαθήματα του τρέχοντος εξαμήνου. Τέλος, πατώντας το κουμπί «INSERT», όπως και οποιοδήποτε από τα άλλα κουμπιά τροποποίησης, επανεμφανίζεται η σελίδα ανανεωμένη σύμφωνα με τις αλλαγές του διαχειριστή. Η διεργασία Ωρολόγιο πρόγραμμα χρήσης αιθουσών, δίνει στατιστικές πληροφορίες στο διαχειριστή και με την αξιοποίησή τους διευκολύνεται και βελτιώνεται η διαχείριση της Βάσης Δεδομένων. Στη διεργασία αυτή ο διαχειριστής καλείται να επιλέξει για ποια μέρα και ώρα επιθυμεί να δει την κατάληψη των αιθουσών του Τμήματος. Με αυτό τον τρόπο μπορεί να ενημερώνεται ανά πάσα στιγμή για το ποια αίθουσα είναι διαθέσιμη ώστε να αποφεύγονται δυσάρεστες καταστάσεις. Θα τον βοηθήσει να σχεδιάσει ευκολότερα το εξαμηνιαίο πρόγραμμα, θα μπορεί να δίνει λύσεις σε ομάδες που επιθυμούν να χρησιμοποιήσουν κάποια αίθουσα για συμπληρωματικά μαθήματα ή ακόμη και για βοηθητικές ενέργειες (ανοιχτά εργαστήρια προς χρήση από τους σπουδαστές). Η διεργασία Φοιτητές ανά επιλεγμένο εργαστήριο προβάλει το αποτέλεσμα των ηλεκτρονικών δηλώσεων των εργαστηριακών μαθημάτων. Μετά το τέλος των ηλεκτρονικών δηλώσεων, ο διαχειριστής εκδίδει καταστάσεις ανά εργαστηριακή ομάδα με το ονόματα των συμμετεχόντων. Επιλέγοντας αρχικά το μάθημα και την ομάδα του εργαστηρίου την οποία επιθυμεί να εκτυπώσει, εμφανίζεται η κατάσταση των ονομάτων των σπουδαστών που τη δήλωσαν. Έτσι απλοποιείται η διαδικασία και επιτρέπει στον διαχειριστή όχι μόνο να εκτυπώσει στην οθόνη τους συμμετέχοντες ανά εργαστηριακή ομάδα αλλά και ανά μάθημα συγκεντρωτικά. Η διεργασία Ωρολόγιο πρόγραμμα μαθημάτων εκτυπώνει στην οθόνη το πρόγραμμα των μαθημάτων όπως αυτό έχει διαμορφωθεί ανά εξάμηνο. Στη σελίδα που εμφανίζεται μετά την επιλογή της διεργασίας, ο διαχειριστής επιλέγει το εξάμηνο που επιθυμεί και στην ίδια σελίδα εμφανίζεται το πρόγραμμα μαθημάτων έτοιμο να εκτυπωθεί. Αυτό εξυπηρετεί στη λειτουργικότητα της εφαρμογής για την άμεση πληροφόρηση σε ότι έχει σχέση με το ωρολόγιο πρόγραμμα μαθημάτων του Τμήματος. 7

14 ΕΝΟΤΗΤΑ 2.: «Παρουσίαση Διαδικτυακής Εφαρμογής» Η διεργασία Συμμετοχές ανά εργαστήριο υπολογίζει το ποσοστό πληρότητας των εργαστηριακών ομάδων. Πληροφορεί τον διαχειριστή για τα εργαστήρια που έχουν κλείσει και για αυτά που επιτρέπουν κι άλλες συμμετοχές. Είναι μια δυναμική σελίδα η οποία ενημερώνεται ταυτόχρονα με την κάθε ενέργεια των σπουδαστών. 8

15 ΕΝΟΤΗΤΑ 2.: «Παρουσίαση Διαδικτυακής Εφαρμογής» Σχήμα1. Είσοδος στην εφαρμογή Σελ.3 ΠΑΡΑΡΤΗΜΑ Α Σχήμα2. Δήλωση εργαστηριακών ομάδων Σελ.4 9

16 ΕΝΟΤΗΤΑ 2.: «Παρουσίαση Διαδικτυακής Εφαρμογής» Σχήμα3. Διαμόρφωση εξαμηνιαίου προγράμματος - Σελ.6 10

17 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» 3. ΠΕΡΙΓΡΑΦΗ της ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ 3.1. Γενικά Για τη δημιουργία της Βάσης Δεδομένων της εφαρμογής, χρησιμοποιήθηκε το σύστημα διαχείρισης βάσεων δεδομένων MySQL. Η σχεδίαση της Βάσης Δεδομένων πρέπει να ικανοποιεί τις απαιτήσεις του χρήστη σε ό,τι αφορά την απόδοση. Χρησιμοποιώντας μόνον ένα πίνακα που θα συγκεντρώνει όλα τα δεδομένα, προκύπτει μεγάλος πλεονασμός δεδομένων όπου δύσκολα θα παραμένουν συνεπή λόγω του πλεονασμού τους. Για την αποφυγή πλεονασμού δεδομένων, σχεδιάστηκαν σε τρίτη κανονική μορφή δέκα πίνακες, οι οποίοι εξυπηρετούν τις ανάγκες της εφαρμογής και συνδέονται μεταξύ τους όπως φαίνεται στο Σχήμα1. Σχήμα1. Σχέσεις ένα προς πολλά 11

18 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» 3.2. Περιγραφή των Πινάκων Κάθε πίνακας αποτελείται από κάποιες στήλες-πεδία. Μία από αυτές, καθορίζεται ως πρωτεύον κλειδί όπου οι τιμές που περιέχονται στις γραμμές της είναι μοναδικές. Αναλύοντας τον κάθε πίνακα χωριστά, βλέπουμε τα πεδία και τη λειτουργικότητά τους: Ο πίνακας days αποτελείται από δύο πεδία, το id_day το οποίο είναι το πρωτεύον κλειδί του και το day το οποίο περιέχει τις μέρες της εβδομάδας στις οποίες είναι εφικτό να διεξαχθούν οι συνεδρίες. Σχήμα2. Πίνακας days Ο πίνακας hours αποτελείται από δύο πεδία, το id_hour το οποίο είναι το πρωτεύον κλειδί του και το hour που περιέχει τις ώρες στις οποίες βασίζεται η σχεδίαση του εβδομαδιαίου προγράμματος μαθημάτων. Σχήμα3. Πίνακας hours Ο πίνακας semesters αποτελείται από δύο πεδία επίσης, το id_semester που είναι το πρωτεύον κλειδί του και το semester που περιέχει τις ονομασίες των εξαμήνων φοίτησης στο Τμήμα Διαχείρισης Πληροφοριών. Σχήμα4. Πίνακας semesters 12

19 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» Ο πίνακας rooms περιλαμβάνει το πεδίο id_room που είναι το πρωτεύον κλειδί του πίνακα, το πεδίο room που περιέχει τις ονομασίες των αιθουσών του Τμήματος Διαχείρισης Πληροφοριών όπου διεξάγονται οι συνεδρίες, το πεδίο capacity το οποίο προσδιορίζει τη χωρητικότητα, σε σπουδαστές, της κάθε αίθουσας και τέλος, το πεδίο quality, το οποίο προσδιορίζει το είδος της αίθουσας, εργαστήριο ή θεωρία. Σχήμα5. Πίνακας rooms Ο πίνακας departments μας πληροφορεί για την ιδιότητα που μπορεί να έχει μία συνεδρία. Πρωτεύον κλειδί του πίνακα είναι το πεδίο id_department, οι ιδιότητες περιλαμβάνονται στο πεδίο quality και το μέγιστο επιτρεπόμενο πλήθος σπουδαστών που μπορούν να συμμετέχουν περιλαμβάνεται στο πεδίο max_students. Σχήμα6. Πίνακας departments Ο πίνακας users σχεδιάστηκε για τη διαχείριση του login της εφαρμογής. Σύμφωνα με αυτόν, επιτρέπεται ή όχι η πρόσβαση των χρηστών στην εφαρμογή. Το πρωτεύον κλειδί αυτού του πίνακα είναι το id_user και τα άλλα δύο ομώνυμα πεδία του, περιλαμβάνουν το username και το password του κάθε χρήστη. Σχήμα7. Πίνακας users 13

20 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» Ο πίνακας students περιέχει δεδομένα που αφορούν τους σπουδαστές. Περιέχει βασικά στοιχεία όπως το ονοματεπώνυμο και τον αριθμό μητρώου, στα πεδία aem για τον αριθμό μητρώου, f_name για το όνομα και l_name για το επώνυμο του σπουδαστή. Το πρωτεύον κλειδί του πίνακα είναι το id_student και το τελευταίο πεδίο του το id_user. Όπως μπορούμε εύκολα να διακρίνουμε, το πεδίο id_user είναι και πεδίο του πίνακα users και μάλιστα είναι και πρωτεύον κλειδί του πίνακα αυτού. Με αυτό τον τρόπο οι πίνακες students και users συνδέονται μεταξύ τους. Έτσι, ο κάθε χρήστης έχει το αντίστοιχο username και password του για να έχει πρόσβαση στην εφαρμογή. Αυτή είναι σύνδεση ένα προς ένα μεταξύ των δύο πινάκων γιατί το id_user είναι μοναδικό για κάθε σπουδαστή και η εγγραφή του κάθε σπουδαστή είναι μοναδική στον πίνακα students. Σχήμα8. Πίνακας students Ο πίνακας lessons σχεδιάστηκε για να κρατά δεδομένα που αφορούν τα μαθήματα που διδάσκονται και περιλαμβάνονται στο πρόγραμμα σπουδών του Τμήματος Διαχείρισης Πληροφοριών. Τα πεδία του πίνακα είναι το name όπου περιγράφεται η ονομασία του μαθήματος, το quality όπου περιγράφεται το είδος του μαθήματος, δηλαδή αν είναι θεωρία με το Θ, αν είναι ασκήσεις πράξεις με το Α και αν είναι εργαστηριακό με το Ε. Ακόμα, το πεδίο duration για τη διάρκεια διδασκαλίας του μαθήματος σε ώρες και το πεδίο groups για τον αριθμό των ομάδων που δημιουργούνται για κάθε μάθημα. Το πρωτεύον κλειδί του πίνακα είναι το πεδίο id_lesson και τα τελευταία πεδία του είναι το id_semester και το id_department. Το id_semester είναι το πρωτεύον κλειδί του πίνακα semesters, ο οποίος συνδέεται με τον πίνακα lessons με σύνδεση ένα προς πολλά. Έτσι, για κάθε μάθημα υπάρχει ένα id_semester και για κάθε id_semester πολλά μαθήματα. Αυτό συμβαίνει 14

21 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» γιατί ένα μάθημα μπορεί να ανήκει μόνο σε ένα εξάμηνο σπουδών και σε ένα εξάμηνο σπουδών ανήκουν περισσότερα από ένα μαθήματα. Με αυτή τη σύνδεση ο πίνακας lessons ενημερώνεται με το εξάμηνο στο οποίο βρίσκεται το κάθε μάθημα. Το id_department είναι το πρωτεύον κλειδί του πίνακα departments, ο οποίος συνδέεται με τον πίνακα lessons με σύνδεση ένα προς πολλά. Έτσι, για κάθε μάθημα υπάρχει ένα id_ department και για κάθε id_ department πολλά μαθήματα. Αυτό συμβαίνει γιατί μία εγγραφή ενός μαθήματος μπορεί να ανήκει μόνο σε ένα είδος τμήματος και ένα είδος τμήματος ανήκει σε περισσότερες από μία εγγραφές μαθημάτων. Αυτό συμβαίνει γιατί μία εγγραφή ενός μαθήματος δε μπορεί να ανήκει σε περισσότερα από ένα είδη τμημάτων. Με αυτή τη σύνδεση, ο πίνακας lessons ενημερώνεται με το είδος τμήματος το οποίο χαρακτηρίζει το κάθε μάθημα. Σχήμα9. Πίνακας lessons Ένας από τους τελευταίους δύο και πιο βασικούς πίνακες είναι ο πίνακας schedule. Είναι ο πίνακας ο οποίος αποτελεί το ωρολόγιο πρόγραμμα μαθημάτων όλων των εξαμήνων, για μια συγκεκριμένη χρονική περίοδο. Τροποποιείται ανάλογα με τις ενέργειες του διαχειριστή και αλλάζει σε κάθε αλλαγή εξαμηνιαίας περιόδου. Αποτελείται από τα πεδία id_lesson, id_day, id_hour, id_room, declarations, groups, students και το πρωτεύον κλειδί του πίνακα, το οποίο είναι το πεδίο id_schedule. Τα πεδία id_lesson, id_day, id_hour και id_room είναι πρωτεύοντα κλειδιά των αντίστοιχων πινάκων lessons, days, hours και rooms. Από αυτά τα πεδία ο schedule ενημερώνεται για το ποια μέρα(id_day), ποια ώρα του ωρολογίου προγράμματος(id_hour) και σε ποια αίθουσα(id_room) διεξάγεται κάποιο μάθημα(id_lesson). 15

22 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» Οι πίνακες lessons, days, hours και rooms συνδέονται με τον πίνακα schedule με σύνδεση ένα προς πολλά. Αυτό συμβαίνει γιατί στο ωρολόγιο πρόγραμμα όλων των εξαμήνων συγκεντρωτικά, το οποίο εκφράζεται μέσα από τον πίνακα schedule, υπάρχουν πολλές εγγραφές σε μία συγκεκριμένη ημέρα, σε μία συγκεκριμένη ώρα, σε μία συγκεκριμένη αίθουσα και σε μία συγκεκριμένη εγγραφή μαθήματος(του πίνακα lessons). Επομένως, αυτά τα πεδία των πινάκων που είναι μοναδικά σ αυτούς, επαναλαμβάνονται στον πίνακα schedule. Το πεδίο groups περιγράφει την ομάδα του μαθήματος που βρίσκεται σε μια συγκεκριμένη εγγραφή στον πίνακα του προγράμματος. Κυρίως τα εργαστηριακά μαθήματα και λιγότερο οι ασκήσεις πράξεις και οι θεωρίες, εμφανίζονται σε διαφορετικές ομάδες το καθένα, ώστε να ικανοποιούν το πλήθος των σπουδαστών που τα δηλώνουν για λόγους καλύτερης λειτουργίας τους και μεγαλύτερης απόδοσής τους. Το πεδίο declarations, είναι ένα συνεχώς μεταβαλλόμενο πεδίο, στο οποίο αλλάζει η τιμή του κάθε φορά που κάποιος σπουδαστής δηλώνει ή διαγράφεται από κάποια ομάδα μαθήματος, δηλαδή από κάποια εγγραφή από τον πίνακα του προγράμματος. Το πεδίο students, περιέχει το μέγιστο αριθμό σπουδαστών που μπορούν να δηλώσουν τη συγκεκριμένη ομάδα μαθήματος, δηλαδή τη συγκεκριμένη εγγραφή του πίνακα schedule. Τα δύο τελευταία πεδία συνεργάζονται για ένα επιτρεπτό αποτέλεσμα. Οι δηλώσεις των σπουδαστών για μία συγκεκριμένη εγγραφή, δεν μπορεί να υπερβεί τον μέγιστο επιτρεπόμενο αριθμό δηλώσεων. Επομένως, η τιμή του πεδίου declarations δε μπορεί να υπερβεί την τιμή του πεδίου students. Σχήμα10. Πίνακας schedule 16

23 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» Ο τελευταίος και εξίσου σημαντικός με τον προηγούμενο πίνακας της Βάσης Δεδομένων, είναι ο πίνακας participation. Αυτός ενημερώνεται παράλληλα με την τροποποίηση της τιμής του πεδίου declarations του πίνακα schedule. Κρατά δεδομένα που αφορούν τους σπουδαστές, όπως ποιοι σπουδαστές έχουν δηλώσει ένα συγκεκριμένο εργαστηριακό μάθημα. Από τον πίνακα participation αντλούνται πολλές σημαντικές πληροφορίες. Το πρωτεύον κλειδί του πίνακα είναι το πεδίο id_participation. Τα υπόλοιπα πεδία του είναι το id_user, το id_schedule, το id_lesson και το groups. Όπως φαίνεται τα τρία από τα τέσσερα πεδία του πίνακα, είναι πρωτεύον κλειδιά άλλων πινάκων. Οι συνδέσεις είναι και εδώ ένα προς πολλά. Το id_user είναι το πρωτεύον κλειδί του πίνακα users και μας πληροφορεί για το ποιος έχει κάνει τη δήλωση του εργαστηριακού μαθήματος σε κάποια εγγραφή του πίνακα participation. Η σύνδεση είναι ένα προς πολλά γιατί ένας σπουδαστής θα κάνει περισσότερες από μία δηλώσεις μαθημάτων και έτσι, το id_user του θα εμφανίζεται περισσότερες από μία φορές στον πίνακα participation, σε αντίθεση με τη συχνότητα εμφάνισής του στον πίνακα users, όπου είναι μοναδική. Το id_schedule είναι το πρωτεύον κλειδί του πίνακα schedule και μας πληροφορεί για το ποια εγγραφή του ωρολογίου προγράμματος έχει δηλωθεί σε μια συγκεκριμένη εγγραφή του πίνακα participation. Η σύνδεση είναι ένα προς πολλά γιατί, μία εγγραφή του ωρολογίου προγράμματος θα δηλωθεί περισσότερες από μία φορές, από διαφορετικούς σπουδαστές και έτσι θα εμφανιστεί πολλές φορές στον πίνακα participation. Αντίθετα, η εγγραφή αυτή θα εμφανίζεται μόνο μία φορά στον πίνακα schedule. Το id_lesson είναι πρωτεύον κλειδί στον πίνακα lessons και μας πληροφορεί για το ποιο μάθημα έχει δηλωθεί σε μία εγγραφή του πίνακα participation. Η σύνδεση των πινάκων lessons και participation είναι σύνδεση ένα προς πολλά. Είναι ευνόητο ότι ένα μάθημα θα δηλωθεί περισσότερες από μία φορές, από διαφορετικούς σπουδαστές και έτσι, θα εμφανίζεται συχνά στις εγγραφές του πίνακα participation. Αντίθετα, στον πίνακα lessons θα εμφανίζεται μοναδικά. Το πεδίο groups, χαρακτηρίζει την ομάδα του επιλεγμένου μαθήματος στην οποία έγινε η δήλωση του σπουδαστή. Από τα δύο προηγούμενα πεδία, θα μπορούσαμε να βρούμε σε ποια ομάδα της συγκεκριμένης εγγραφής αναφέρεται η 17

24 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» δήλωση του σπουδαστή, αλλά εξυπηρετεί καλύτερα τη λειτουργικότητα της Βάσης Δεδομένων όταν άμεσα μπορεί να αντληθεί αυτή η πληροφορία. Σχήμα11. Πίνακας participation Η Βάση Δεδομένων όπως περιγράφηκε παραπάνω, διαχειρίζεται όλες τις πληροφορίες που είναι απαραίτητες για τη λειτουργία της εφαρμογής. Τόσο οι πληροφορίες που δίνουν οι σπουδαστές καθώς δηλώνουν τα εργαστηριακά τους μαθήματα, όσο και οι διαχειριστές που εισάγουν ή τροποποιούν τα υπάρχοντα δεδομένα, ενημερώνουν τη Βάση Δεδομένων η οποία πρέπει να είναι επίκαιρη για να είναι αποτελεσματική η λειτουργία της εφαρμογής. 18

25 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» ΠΑΡΑΡΤΗΜΑ Β Σχήμα1. Σχέσεις ένα προς πολλά Σελ.11 Σχήμα2. Πίνακας days Σελ.12 Σχήμα3. Πίνακας hours Σελ.12 19

26 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» Σχήμα4. Πίνακας semesters Σελ.12 Σχήμα5. Πίνακας rooms - Σελ.13 Σχήμα6. Πίνακας departments Σελ.13 Σχήμα7. Πίνακας users - Σελ.13 Σχήμα8. Πίνακας students Σελ.14 20

27 ΕΝΟΤΗΤΑ 3.: «Περιγραφή της Βάσης Δεδομένων» Σχήμα9. Πίνακας lessons Σελ.15 Σχήμα10. Πίνακας schedule - Σελ.16 Σχήμα11. Πίνακας participation Σελ.18 21

28 4. ΕΠΕΞΗΓΗΣΗ του ΚΩΔΙΚΑ της ΕΦΑΡΜΟΓΗΣ 4.1.Γενικά Για την υλοποίηση της εφαρμογής χρησιμοποιήθηκαν κάποια από τα πιο δυνατά εργαλεία Web ανάπτυξης. Η PHP, που χρησιμοποιείται ενσωματωμένη μέσα στις HTML σελίδες, είναι ένα από αυτά τα εργαλεία. Είναι ένα προϊόν ανοιχτού κώδικα και μπορεί να προσαρμοστεί σε όποιες αλλαγές κριθούν απαραίτητες στο μέλλον. Η MySQL είναι επίσης ένα ακόμη πολύ γρήγορο και δυνατό εργαλείο. Είναι ένα σύστημα διαχείρισης βάσεων δεδομένων που επιτρέπει την αποτελεσματική αποθήκευση, αναζήτηση, ταξινόμηση και ανάκληση των δεδομένων με χρήση SQL ερωτημάτων. Ξεκινώντας την επεξήγηση του κώδικα υλοποίησης της εφαρμογής είναι καλό να επισημανθεί πως η PHP χρησιμοποιήθηκε με τον Apache διακομιστή και πως με τη MySQL και τα ερωτήματα της SQL προς αυτή είχαμε ένα τέλειο και λειτουργικότατο αποτέλεσμα. 4.2.Εισαγωγική σελίδα Σχήμα1. Εισαγωγική σελίδα 22

29 Η εισαγωγή της εφαρμογής καλεί τον χρήστη να επιλέξει με ποια ιδιότητα θα συνδεθεί στην εφαρμογή. Οι ιδιότητες διακρίνονται σε αυτή του Διαχειριστή, ο οποίος τροποποιεί τη βάση δεδομένων με βάση τις ανάγκες του προγράμματος και σε αυτή του Σπουδαστή, ο οποίος καλείται να δηλώσει τα εργαστηριακά του μαθήματα μέσω internet. Η εισαγωγική σελίδα προβάλλεται στο σχήμα 1. Ο κώδικας για την προβολή του σχήματος 1 περιγράφεται παρακάτω: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title>δήλωση εργαστηρίων</title> 6 </head> 7 <BODY bgcolor="silver"> 8 <TABLE border=0 align="center"> 9 <TR><TD align="center"><img src="fotos/tei_kav.jpg"></td> 10 <TD align="center"><img src="fotos/inf_man.gif"></td> 11 <TD align="center"><img src="fotos/infoman_logo.jpg"></td></tr> 12 <TR><TD align="center" colspan=3><br><br><br><br> 13 <A href="log_in4.html"><font color="#00a5c6" size=5><b>συνδεση ΔΙΑΧΕΙΡΙΣΤΗ</B></FONT></A><BR><BR> 14 <A href="log_in3.html"><font color="#00a5c6" size=5><b>συνδεση ΣΠΟΥΔΑΣΤΗ</B></FONT></A></TD></TR> 15 </TABLE> 16 </BODY> 17 </HTML> Όπως φαίνεται στον κώδικα, έχουμε την έναρξη και τη λήξη μιας ιστοσελίδας με την ετικέτα HTML στις αριθμημένες γραμμές 1 για την έναρξη και 17 για τη λήξη, η οποία είναι απαραίτητη για τη δημιουργία της. Όλες οι ιστοσελίδες που θα περιγραφούν παρακάτω, διαιρούνται σε δύο ενότητες όπως και αυτή που αναλύουμε. Την ενότητα HEAD και την ενότητα BODY. Η ενότητα HEAD παρέχει πληροφορίες για το URL της ιστοσελίδας και το μόνο στοιχείο της που βλέπει ο χρήστης, είναι ο 23

30 τίτλος της ιστοσελίδας που περιγράφεται στην ετικέτα TITLE στη γραμμή 5. Η ενότητα BODY δημιουργεί το περιεχόμενο της ιστοσελίδας. Στη γραμμή 7 βλέπουμε ότι στην ετικέτα BODY περιλαμβάνεται και η ετικέτα BGCOLOR με την οποία καθορίζεται το χρώμα του φόντου της ιστοσελίδας που δημιουργείται. Στη γραμμή 8 έχουμε την έναρξη δημιουργίας ενός πίνακα. Στην ετικέτα TABLE, για τη δημιουργία του πίνακα, περιλαμβάνονται οι ετικέτες BORDER και ALIGN. Η ετικέτα BORDER καθορίζει το πάχος του περιγράμματος και των διαχωριστικών γραμμών σε pixel, για το διαχωρισμό του κειμένου και των αντικειμένων που θα περιέχει ο πίνακας. Η τιμή που έχει στη συγκεκριμένη περίπτωση είναι 0 (μηδέν), δηλαδή οι διαχωριστικές γραμμές του πίνακα δε θα είναι ορατές. Αυτό συμβαίνει γιατί ο πίνακας στην ιστοσελίδα αυτή θα λειτουργεί μόνο ως αντικείμενο διάταξης. Η ετικέτα ALIGN στη συγκεκριμένη περίπτωση στοιχίζει τον πίνακα στο κέντρο της ιστοσελίδας. Έτσι, έχουμε έναν πίνακα στοιχισμένο στο κέντρο της εισαγωγικής σελίδας, ο οποίος βοηθά στη διάταξη των αντικειμένων που περιλαμβάνει για ένα καλύτερο αποτέλεσμα. Τα αντικείμενα που περιλαμβάνει η ιστοσελίδα είναι τρεις εικόνες και δύο link. Για τη διάταξή τους στο χώρο, περιλαμβάνονται στις δύο γραμμές και τρεις στήλες από τις οποίες αποτελείται ο πίνακας. Στη γραμμή 9 σχεδιάζεται η πρώτη γραμμή του πίνακα με την ετικέτα <TR> και ακολουθεί η δημιουργία του πρώτου κελιού της γραμμής με την ετικέτα <TD>. Το πρώτο κελί περιλαμβάνει την εικόνα tei_kav.jpg στοιχισμένη στο κέντρο του κελιού. Στη γραμμή 10 δημιουργείται το δεύτερο κελί της πρώτης γραμμής του πίνακα, το οποίο περιλαμβάνει την εικόνα inf_man.gif που είναι επίσης στοιχισμένη στο κέντρο του κελιού. Τέλος, στη γραμμή 11 δημιουργείται το τρίτο και τελευταίο κελί της γραμμής. Αυτό περιλαμβάνει την εικόνα infoman_logo.jpg στοιχισμένη στο κέντρο του κελιού. Οι εικόνες τοποθετούνται στην ιστοσελίδα με την ετικέτα <IMG>. Τα δύο link περιλαμβάνονται στη δεύτερη γραμμή του πίνακα. Στη γραμμή 12 βλέπουμε τη δημιουργία της δεύτερης γραμμής με την ετικέτα <TR> και του κελιού με την ετικέτα <TD>. Το κελί επεκτείνεται σε τρεις στήλες, επομένως είναι συγχώνευση τριών κελιών και γίνεται με την ετικέτα COLSPAN. Στις γραμμές 13 και 14 σχεδιάζονται τα δύο link το καθένα από τα οποία παραπέμπει σε διαφορετική ιστοσελίδα. Τα link σχεδιάζονται με την ετικέτα Α. Το πρώτο για τη ΣΥΝΔΕΣΗ ΔΙΑΧΕΙΡΙΣΤΗ παραπέμπει στην ιστοσελίδα log_in4.html και το δεύτερο για τη 24

31 ΣΥΝΔΕΣΗ ΣΠΟΥΔΑΣΤΗ παραπέμπει στην ιστοσελίδα log_in3.html. Για τη διαμόρφωση της γραμματοσειράς που χρησιμοποιείται στην εμφάνιση των link υπεύθυνη είναι η ετικέτα <FONT> με τις ιδιότητές της. Η ιδιότητα COLOR είναι υπεύθυνη για το χρώμα της γραμματοσειράς και η ιδιότητα SIZE για το μέγεθός της. Η ετικέτα <BR> που βλέπουμε να εμφανίζεται στον κώδικα χρησιμοποιείται για να προστεθεί μια αλλαγή γραμμής. Μετά την εισαγωγική σελίδα όπου επιλέγεται από τον χρήστη η ιδιότητα με την οποία θα συνδεθεί στην εφαρμογή, εμφανίζεται η αντίστοιχη ιστοσελίδα σύνδεσης που περιγράφεται παρακάτω. 4.3.Σύνδεση Διαχειριστή Επιλέγοντας την ιδιότητα του διαχειριστή για τη σύνδεση στην εφαρμογή, ο χρήστης καλείται να συμπληρώσει τα πεδία που εμφανίζονται και πατώντας το κουμπί Log In να συνδεθεί. Σχήμα2. Σύνδεση Διαχειριστή 25

32 Ο κώδικας για την προβολή του σχήματος 2 περιγράφεται παρακάτω: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title>σύνδεση Διαχειριστή</title> 6 </head> 7 <BODY bgcolor=silver> 8 <FORM action="choose.php" method="post"> 9 <TABLE border=0 align="center" width=100% height=100%> 10 <TR><TD align="center"><br><br><br> 11 <TABLE border=1 align='center' rules=none width=60% height=60% bgcolor='#c6eff7'> 12 <TR><TD align="center"><br><br><br><br><table border=0 align='center' bgcolor='#94d6e7' width=40% height=40%> 13 <TR><TD> 14 Username: 15 <INPUT type="text" name="username"><br> 16 </TD></TR><TR><TD> 17 Password: 18 <INPUT type="password" name="password"><br> 19 </TD></TR><TR><TD align="center"> 20 <INPUT type="submit" name="login" value="log In"> 21 </TD></TR> 22 </TABLE> 23 </TD></TR> 24 </TABLE> 25 </TD></TR> 26 </TABLE> 27 </FORM> 28 </BODY> 29 </HTML> Όπως αναφέρεται παραπάνω, και αυτή η ιστοσελίδα διαιρείται στις ενότητες HEAD και BODY. Στην ενότητα HEAD, στην γραμμή 5 περιγράφεται ο τίτλος της 26

33 ιστοσελίδας και στην ενότητα BODY περιλαμβάνεται η ετικέτα BGCOLOR που προσδιορίζει το χρώμα στο φόντο της ιστοσελίδας, στη γραμμή 7. Στη γραμμή 8, βλέπουμε την ετικέτα <FORM> με την οποία γίνεται η έναρξη μιας φόρμας. Μια φόρμα αποτελείται από δύο βασικά μέρη: τη δομή και το σενάριο επεξεργασίας. Η δομή μιας φόρμας αποτελείται από πλαίσια κειμένου, ραδιοπλήκτρα, πτυσσόμενα μενού και άλλα στοιχεία τα οποία βοηθούν στην επεξεργασία δεδομένων. Το κάθε στοιχείο της φόρμας έχει ένα όνομα που προσδιορίζει την τιμή που θα περιέχει. Το σενάριο CGI (Common Gateway Interface=Διασύνδεση Κοινής Πύλης) είναι ένα πρόγραμμα που επικοινωνεί με τον διακομιστή με μια τυποποιημένη μέθοδο (τύπου CGI) για ανταλλαγή πληροφοριών. Απαραίτητο στοιχείο σε μια φόρμα είναι το κουμπί υποβολής. Όταν ο χρήστης το πατήσει, τα δεδομένα των στοιχείων της φόρμας, δηλαδή το ζευγάρι όνομα στοιχείου και τιμή, στέλνονται στον διακομιστή και μετατρέπονται μέσω του σεναρίου CGI σε κάτι που θα μπορεί να διαβαστεί και να κατανοηθεί. Οι πληροφορίες αυτές μπορούν να σταλούν στο διακομιστή με δύο μεθόδους: την GET και την POST. Η μέθοδος GET στέλνει τις πληροφορίες στο τέλος του URL και σε περιορισμένη ποσότητα., ενώ η μέθοδος POST τις στέλνει με τη μορφή ενός αρχείου με αποτέλεσμα να στέλνεται όλη η πληροφορία, χωρίς την αμφιβολία της αποκοπής δεδομένων. Επομένως, στη γραμμή 8 όπου γίνεται η έναρξη της δημιουργίας μιας φόρμας, βλέπουμε τις ιδιότητες action και method. Η ιδιότητα action δηλώνει τη θέση που θα εκτελεστεί το σενάριο CGI στο διακομιστεί όταν υποβληθεί η φόρμα, που είναι η choose.php και η ιδιότητα method δηλώνει τη μέθοδο με την οποία θα σταλούν οι πληροφορίες των στοιχείων της φόρμας στο σενάριο CGI, που είναι η POST. Όπως μπορούμε να φανταστούμε βλέποντας το σχήμα 2, η ιστοσελίδα αποτελείται από περισσότερους από έναν πίνακες. Οι πίνακες σε αυτή την ιστοσελίδα είναι τρεις, όπου ο ένας εσωκλείει τον άλλο. Στη γραμμή 9 δημιουργείται ο πρώτος πίνακας, στοιχισμένος στο κέντρο και με τις ιδιότητές του width και height προσδιορίζεται το πόσο μεγάλος πρέπει να είναι ως προς το πλήρες μέγεθος του παραθύρου. Η τιμή των ιδιοτήτων αυτών είναι 100% άρα είναι όσο το μέγεθος του παραθύρου και λειτουργεί, όπως έχουμε ξαναδεί, σαν πίνακας διάταξης των στοιχείων της σελίδας. Στη γραμμή 10 δημιουργείται η πρώτη γραμμή και το πρώτο 27

34 κελί του πίνακα στοιχισμένο στο κέντρο, το οποίο θα περιέχει τον δεύτερο πίνακα. Ο δεύτερος πίνακας δημιουργείται αμέσως μετά στη γραμμή 11, με στοίχιση στο κέντρο του κελιού που τον περιέχει, με περίγραμμα 1, χωρίς καμία εσωτερική γραμμή πλέγματος από την ιδιότητα rules=none, μέγεθος 60% σε σχέση με το πλήρες μέγεθος του παραθύρου και με χρώμα στο φόντο του το δεκαεξαδικό κωδικό #C6EFF7. Στη γραμμή 12 δημιουργείται η πρώτη γραμμή και το πρώτο κελί του πίνακα, το οποίο θα περιέχει τον τρίτο και τελευταίο πίνακα της σελίδας. Ο τρίτος πίνακας είναι στοιχισμένος στο κέντρο του κελιού που τον περιέχει, δεν έχει περίγραμμα και γραμμές πλέγματος, έχει χρώμα φόντου τον δεκαεξαδικό κωδικό #94D6E7 και το μέγεθός του είναι 40% ως προς το πλήρες μέγεθος του παραθύρου. Στην γραμμή 13 δημιουργείται η πρώτη γραμμή και το πρώτο κελί του τρίτου πίνακα. Στη συνέχεια σχηματίζονται τα πεδία κειμένου στα οποία ο χρήστης θα εισάγει το username και το password του. Στη γραμμή 14 αναγράφεται το όνομα της ετικέτας του πλαισίου κειμένου που δημιουργείται στην γραμμή 15 με το tag <INPUT>. Η ιδιότητα type του INPUT καθορίζει το είδος του στοιχείου που θα προστεθεί στη φόρμα. Στη συγκεκριμένη περίπτωση, το στοιχείο θα είναι ένα πλαίσιο κειμένου και η τιμή του type θα είναι η text. Η άλλη ιδιότητα του INPUT που βλέπουμε στη γραμμή 15 είναι η name και με αυτή δίνεται το όνομα με το οποίο θα αναγνωρίζεται η πληροφορία του πλαισίου κειμένου όταν φτάσει στο διακομιστή. Στη συγκεκριμένη περίπτωση το username του χρήστη θα έχει το όνομα username. Εδώ κλείνει αυτό το κελί και η γραμμή του πίνακα (γραμμή 16) και δημιουργείται μια νέα γραμμή και ένα καινούργιο κελί (γραμμή 16) για να προστεθεί ένα ακόμη στοιχείο στη φόρμα της σελίδας. Στη γραμμή 17 αναγράφεται το όνομα της ετικέτας του επόμενου στοιχείου και στη γραμμή 18 δημιουργείται το πλαίσιο κωδικού πρόσβασης στο οποίο ο χρήστης θα πληκτρολογήσει τον κωδικό πρόσβασής του για να συνδεθεί. Επομένως η ιδιότητα type έχει την τιμή password και η ιδιότητα name έχει την τιμή password που χαρακτηρίζει την πληροφορία του πλαισίου κειμένου. Κλείνει και αυτό το κελί και η γραμμή και δημιουργείται η τρίτη γραμμή αυτού του πίνακα (γραμμή 19) για να προστεθεί ακόμη ένα στοιχείο στη φόρμα της ιστοσελίδας. Στη γραμμή 20 δημιουργείται το κουμπί υποβολής για να μπορούν να σταλούν οι πληροφορίες που δίνει ο χρήστης στα διάφορα στοιχεία της φόρμας στο διακομιστή. Η ιδιότητα type θα έχει την τιμή submit (=υποβολή) για να καθορίσει το είδος του στοιχείου, η ιδιότητα 28

35 name θα έχει την τιμή login και προστίθεται ακόμη μία ιδιότητα η value, για να δώσει το κείμενο που θα εμφανίζεται στο κουμπί υποβολής, δηλαδή Log In. Τέλος, στη γραμμή 21 κλείνει το κελί και η τρίτη γραμμή του πίνακα, στη γραμμή 22 κλείνει ο τρίτος πίνακας, στη γραμμή 23 κλείνει το κελί και η γραμμή του δεύτερου πίνακα, ο οποίος κλείνει στην επόμενη γραμμή. Πατώντας το κουμπί υποβολής με την επιγραφή Log In, στέλνονται το username και το password που πληκτρολόγησε ο χρήστης, στη σελίδα choose.php η οποία αναλύεται παρακάτω. 29

36 4.3.1.Επιλογή δραστηριότητας Μετά τη διαδικασία του LogIn που είδαμε παραπάνω και αφού γίνει ο έλεγχος ορθότητας των κωδικών πρόσβασης και επιτραπεί η είσοδος του χρήστη στην εφαρμογή, καλείται να επιλέξει με ποια δραστηριότητα από τις προτεινόμενες θα ασχοληθεί. Σχήμα3. Επιλογή δραστηριότητας Ο κώδικας για την προβολή του σχήματος 3 περιγράφεται παρακάτω: 1 <HTML> 2 <head> 30

37 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title>επιλογή δραστηριότητας</title> 6 </head> 7 <BODY bgcolor="silver"> 8 <TABLE border=0 align="center" wigth=100% height=100%> 9 <TR><TD align="center"><font size=5 color="#00a5c6"><u><b>επιλογη ΔΙΕΡΓΑΣΙΑΣ</B></U></FONT> 10 <TR><TD align="right"><a href="index.html"><img src="home.gif"></a> 11 <TR><TD align="center"> 12 <? 13 $conn=mysql_connect("localhost", "margarita", "100"); 14 mysql_select_db("laboratoriesdb"); 15 $username=$_post['username']; 16 $password=$_post['password']; 17 $sql="select username,password,id_user from users"; 18 $result=mysql_query($sql, $conn) or die(mysql_error()); 19 while($row=mysql_fetch_array($result)) 20 { 21 if($username==$row[0] && $password==$row[1]) 22 { 23 echo "<TABLE border=1 align='center' bgcolor='#94d6e7' wigth=100 height=100>"; 24 echo "<TR><TD align='center'><br>"; 25 echo "<FORM action='insert4.php' method='post'>"; 26 echo "<INPUT type='submit' value='εισαγωγή μαθημάτων/μετατροπή εξαμηνιαίου προγράμματος.'>"; 27 echo "<INPUT type='hidden' name='semester' value=-1>"; 28 echo "<INPUT type='hidden' name='insert_sched' value=-1>"; 29 echo "<INPUT type='hidden' name='action' value='a'>"; 30 echo "<INPUT type='hidden' name='username' value='".$username."'>"; 31 echo "<INPUT type='hidden' name='password' value='".$password."'>"; 32 echo "</FORM>&nbsp&nbsp&nbsp<BR><BR>"; 33 echo "<FORM action='chdh.html' method='post'>"; 31

38 34 echo "<INPUT type='submit' value='ωρολόγιο πρόγραμμα χρήσης αιθουσών.'>"; 35 echo "<INPUT type='hidden' name='username' value='".$username."'>"; 36 echo "<INPUT type='hidden' name='password' value='".$password."'>"; 37 echo "</FORM><BR><BR>"; 38 echo "<FORM action='483.html' method='post'>"; 39 echo "<INPUT type='submit' value='φοιτητές ανά επιλεγμένο εργαστήριο.'>"; 40 echo "<INPUT type='hidden' name='username' value='".$username."'>"; 41 echo "<INPUT type='hidden' name='password' value='".$password."'>"; 42 echo "</FORM><BR><BR>"; 43 echo "<FORM action='choosesemester.php' method='post'>"; 44 echo "<INPUT type='submit' value='ωρολόγιο πρόγραμμα μαθημάτων.'>"; 45 echo "<INPUT type='hidden' name='semester' value=-1>"; 46 echo "<INPUT type='hidden' name='username' value='".$username."'>"; 47 echo "<INPUT type='hidden' name='password' value='".$password."'>"; 48 echo "</FORM><BR><BR>"; 49 echo "<FORM action='pososta_ergastirion.php' method='post'>"; 50 echo "<INPUT type='submit' value='συμμετοχές ανά εργαστήριο (%).'>"; 51 echo "<INPUT type='hidden' name='username' value='".$username."'>"; 52 echo "<INPUT type='hidden' name='password' value='".$password."'>"; 53 echo "</FORM></TD></TR></TABLE>"; 54 } 55 } 56?> 57 </TD></TR> 58 </TABLE> 59 </BODY> 60 </HTML> Για την αποφυγή επαναλήψεων, η επεξήγηση του κώδικα θα ξεκινήσει από τη γραμμή 8 όπου δημιουργείται ο πίνακας διάταξης των αντικειμένων της ιστοσελίδας. Οι ιδιότητες του πίνακα τον διαμορφώνουν ως εξής: δεν έχει περίγραμμα ή γραμμές πλέγματος, είναι στοιχισμένος στο κέντρο και το μέγεθος του είναι όσο το πλήρες μέγεθος του παραθύρου. Στη γραμμή 9 δημιουργείται η πρώτη σειρά και το πρώτο 32

39 κελί του πίνακα με το περιεχόμενό του στοιχισμένο στο κέντρο. Το περιεχόμενο του κελιού αυτού είναι η επιγραφή ΕΠΙΛΟΓΗ ΔΙΕΡΓΑΣΙΑΣ με μέγεθος γραμματοσειράς 5, χρώμα τον δεκαεξαδικό κωδικό #00Α5C, υπογραμμισμένη και με έντονα γράμματα. Στη γραμμή 10 έχουμε τη δημιουργία της επόμενης γραμμής και του επόμενου κελιού, με το περιεχόμενό του στοιχισμένο δεξιά. Το περιεχόμενο του κελιού αυτού είναι ένα link με τη μορφή μιας εικόνας, το οποίο μεταφέρει τον χρήστη που θα το πατήσει στην αρχική σελίδα, όπου καλείται ο χρήστης να συνδεθεί με τη μορφή του διαχειριστή ή του σπουδαστή. Στη γραμμή 11 δημιουργείται η τρίτη σειρά με το αντίστοιχο κελί, το περιεχόμενο του οποίου θα είναι στοιχισμένο στο κέντρο. Στη 12 η γραμμή βλέπουμε μια PHP ετικέτα που λέει στο Web διακομιστή ότι ξεκινάει η εγγραφή σε PHP κώδικα. Στις γραμμές 13 και 14 βλέπουμε τις εντολές του PHP κώδικα με τις οποίες θα συνδεθούμε με τον MySQL διακομιστή και τη βάση δεδομένων αντίστοιχα. Στις εντολές αυτές συμπεριλαμβάνονται το όνομα του υπολογιστή στον οποίο βρίσκεται ο MySQL διακομιστής, το όνομα σύνδεσης του χρήστη, ο κωδικός πρόσβασης του χρήστη, για τη σύνδεση με τον διακομιστή και το όνομα της βάσης δεδομένων, για τη σύνδεση στη βάση που θέλουμε. Όπως έχουμε ήδη αναφέρει, οι πληροφορίες που μεταφέρονται από τα στοιχεία μιας φόρμας στη θέση του διακομιστή που υποδεικνύεται, έχουν κάποιο όνομα που τις χαρακτηρίζει. Έτσι, οι πληροφορίες για το όνομα και τον κωδικό πρόσβασης με τα οποία προσπαθεί να συνδεθεί ο χρήστης, μεταφέρονται με τα ονόματα username και password αντίστοιχα. Με αυτά τα ονόματα θα ανακτηθούν οι πληροφορίες που έδωσε ο χρήστης και ο τρόπος ανάκτησης των πληροφοριών αυτών θα γίνει με τη συνάρτηση $_POST[], όπως φαίνεται στη γραμμή 15 για το username και στη γραμμή 16 για το password αντίστοιχα. Παρακάτω, με ένα ερώτημα σε SQL ανακτούνται από τη βάση δεδομένων όλα τα username, τα password και τα id_user του πίνακα users, των χρηστών στους οποίους επιτρέπεται η πρόσβαση. Το ερώτημα αυτό (γραμμή 17) καταχωρείται σε μία μεταβλητή, με την οποία θα σταλεί στην MySQL. Στη γραμμή 18 χρησιμοποιείται η συνάρτηση mysql_query() με την οποία στέλνεται το ερώτημα αφού συνδεθεί με τη βάση δεδομένων. Παράλληλα, με τη χρήση της συνάρτησης die(), εξάγεται ένα μήνυμα λάθους σε περίπτωση που απέτυχε η σύνδεση με τη βάση δεδομένων ή που για κάποιο λόγο δεν εκτελέστηκε το ερώτημα στη MySQL. Έτσι αν αποτύχει η σύνδεση με τη βάση ή η εκτέλεση του ερωτήματος θα εκτυπωθεί στην οθόνη ένα μήνυμα λάθους που θα εξηγεί το λόγο της 33

40 αποτυχίας και θα τερματιστεί το script. Για την περίπτωση που δεν εμφανιστεί μήνυμα λάθους, άρα όλα πήγαν καλά, η μεταβλητή $result θα περιέχει τα αποτελέσματα του ερωτήματος. Ο έλεγχος ορθότητας του username και του password που πληκτρολόγησε ο χρήστης γίνεται στις γραμμές 19 και 21. Με κάθε επανάληψη της while() καλείται η συνάρτηση mysql_fetch_array(). Η συνάρτηση αυτή παίρνει κάθε γραμμή από το σύνολο των αποτελεσμάτων και επιστρέφει τη γραμμή σε μορφή πίνακα όπου κάθε τιμή γίνεται πεδίο του πίνακα. Δηλαδή, οι τιμές μιας γραμμής από τα αποτελέσματα του ερωτήματος θα εμφανίζονται σε κάθε μια από τις τιμές του πίνακα $row[0], $row[1], κλπ. Έτσι, ο έλεγχος ορθότητας του username και του password γίνεται όπως φαίνεται στη γραμμή 21. Μόνο όταν η διαδικασία του ελέγχου επιτρέψει την πρόσβαση, θα εμφανιστούν οι δραστηριότητες για να συνεχίσει ο χρήστης. Στη γραμμή 23, δημιουργείται ο πίνακας όπου θα προβληθούν τα στοιχεία με τους τίτλους των δραστηριοτήτων και στη γραμμή 24 η πρώτη γραμμή και το πρώτο κελί του πίνακα. Σ αυτό θα περιέχονται όλα τα κουμπιά υποβολής και οι φόρμες που θα προσδιορίζουν τη θέση που θα στέλνονται οι αντίστοιχες πληροφορίες. Οι πληροφορίες που θα στέλνονται από όλες τις φόρμες πατώντας κάποιο από τα κουμπιά υποβολής, θα είναι κρυφά από το χρήστη στοιχεία που θα εξυπηρετούν λειτουργικούς σκοπούς. Όλες οι φόρμες θα στέλνουν την κοινή πληροφορία του username και του password του χρήστη, στην αντίστοιχη θέση του διακομιστή. Στη γραμμή 25 δημιουργείται η πρώτη φόρμα με θέση για την αποστολή των πληροφοριών, την insert4.php. Στη γραμμή 26 δημιουργείται το κουμπί υποβολής της φόρμας, με μήνυμα τον τίτλο της δραστηριότητας για την οποία δημιουργήθηκε που είναι ο Εισαγωγή μαθημάτων/μετατροπή εξαμηνιαίου προγράμματος. Η ιστοσελίδα insert4.php εμφανίζει, όπως θα δούμε και παρακάτω, δύο σελίδες αλληλοεξαρτώμενες στις οποίες η πρώτη καλεί το χρήστη να επιλέξει το εξάμηνο για το οποίο θα κάνει της τροποποιήσεις του εξαμηνιαίου προγράμματος και αφού το κάνει εμφανίζεται η δεύτερη. Αυτός είναι ο λόγος που στη γραμμή 27 δημιουργείται ένα κρυφό για το χρήστη στοιχείο τύπου hidden, το οποίο στέλνει την πληροφορία -1 με όνομα semester. Ο λόγος ύπαρξης της γραμμής 27 θα κατανοηθεί καλύτερα παρακάτω, όπως και των γραμμών 28 και 29 στις οποίες δημιουργούνται ακόμη δύο κρυφά στοιχεία τις φόρμας και στέλνουν τις πληροφορίες -1 και α με τα ονόματα insert_sched και action αντίστοιχα. 34

41 Στη γραμμή 33 δημιουργείται η δεύτερη φόρμα με θέση για την αποστολή των πληροφοριών, την chdh.html. Στη γραμμή 34 δημιουργείται το κουμπί υποβολής της φόρμας με τίτλο δραστηριότητας, τον Ωρολόγιο πρόγραμμα χρήσης αιθουσών και στις γραμμές 35 και 36 τα στοιχεία για την αποστολή των κρυφών πληροφοριών για το username και το password του χρήστη. Στη συνέχεια, δημιουργείται η επόμενη φόρμα (γραμμή 38) με θέση για την αποστολή των πληροφοριών, την 483.html. Στη γραμμή 39 δημιουργείται το κουμπί υποβολής της φόρμας με τίτλο δραστηριότητας, τον Φοιτητές ανά επιλεγμένο εργαστήριο και στις γραμμές 40 και 41 τα δύο κοινά με τις άλλες φόρμες κρυφά στοιχεία για το username και το password. Στη γραμμή 43 δημιουργείται η φόρμα με κουμπί υποβολής (γραμμή 44) το Ωρολόγιο πρόγραμμα μαθημάτων το οποίο στέλνει πληροφορίες στη σελίδα choosesemester.php. Με αυτή τη φόρμα στέλνεται, εκτός από τα username και password, η πληροφορία -1 με όνομα semester η οποία θα εξηγηθεί καλύτερα παρακάτω. Τέλος, στη γραμμή 49 δημιουργείται η φόρμα με θέση αποστολής των πληροφοριών την pososta_ergastirion.php. Στη γραμμή 50 δημιουργείται το κουμπί υποβολής της, με τίτλο δραστηριότητας τον Συμμετοχές ανά εργαστήριο (%). Έτσι τελειώνοντας τη δημιουργία των φορμών και της ιστοσελίδας, βλέπουμε πάλι μια όμοια αλλά αντίστροφη ετικέτα PHP (γραμμή 56) που συναντήσαμε και στη γραμμή 12 να υποδηλώνει το τέλος του ΡΗΡ κώδικα. Παρακάτω θα συνεχιστεί η επεξήγηση των υπόλοιπων ιστοσελίδων της εφαρμογής. Θα κατανοηθεί πλήρως ο τρόπος λειτουργίας της όπως και τα σημεία που δεν επεξηγήθηκαν παραπάνω. Η επεξήγηση των υπόλοιπων ιστοσελίδων θα συνεχιστεί με τη σειρά που αναφέρθηκαν παραπάνω. Θα ξεκινήσουμε με την ιστοσελίδα insert.php και θα συνεχίσουμε με τις chdh.html, 483.html, choosesemester.php και pososta_ergastirion.php. 35

42 Εισαγωγή/Τροποποίηση εξαμηνιαίου προγράμματος Με την επιλογή της δραστηριότητας Εισαγωγή μαθημάτων/μετατροπή εξαμηνιαίου προγράμματος από τον χρήστη, εμφανίζεται αρχικά η παρακάτω σελίδα: Σχήμα4. Επιλογή εξαμήνου Σε αυτή τη σελίδα ο χρήστης καλείται να επιλέξει το εξάμηνο στο οποίο θέλει να κάνει εισαγωγή ή αλλαγή μαθήματος, αίθουσας ή οποιουδήποτε άλλου στοιχείου σε κάποια ώρα και μέρα του εξαμηνιαίου προγράμματος. Αφού το επιλέξει από τη λίστα του μενού του εξαμήνου και πατήσει το κουμπί υποβολής με τίτλο οk, εμφανίζεται η παρακάτω σελίδα, όπου φαίνεται το εξαμηνιαίο πρόγραμμα που είναι περασμένο στην εφαρμογή και ισχύει την συγκεκριμένη χρονική στιγμή: 36

43 Σχήμα5. Μετατροπή εξαμηνιαίου προγράμματος Ο κώδικας για την προβολή των σχημάτων 4 και 5 είναι: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title> Εισαγωγή/Τροποποίηση εξαμηνιαίου προγράμματος</title> 6 </head> 7 <BODY bgcolor="silver"> 8 <FORM action="insert4.php" method="post"> 9 <TABLE border=0 align="center"> 10 <TR> 11 <TD>ΕΙΣΑΓΩΓΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΕΞΑΜΗΝΟΥ 12 <SELECT name="semester"> 37

44 13 <? 14 $conn=mysql_connect("localhost", "margarita", "100"); 15 mysql_select_db("laboratoriesdb"); 16 $username=$_post['username']; 17 $password=$_post['password']; //Επιλογή εξαμήνου για εισαγωγή προγράμματος 18 $sql_lessons="select id_semester,semester from semesters"; 19 $result_lessons=mysql_query($sql_lessons, $conn) or die(mysql_error()); 20 while($row_lessons=mysql_fetch_row($result_lessons)){echo "<OPTION value='".$row_lessons[0]."'>".$row_lessons[1]."";} 21 echo "</SELECT></TD>"; 22 echo "<TD><INPUT type='submit' value='ok'></td>"; 23 echo "<INPUT type='hidden' name='insert_sched' value=-1>"; 24 echo "<INPUT type='hidden' name='action' value='a'>"; 25 echo "<INPUT type='hidden' name='username' value=".$username.">"; 26 echo "<INPUT type='hidden' name='password' value=".$password.">"; 27 echo "</FORM>"; 28 echo "<TD align='right'><form action='choose.php' method='post' style='marginbottom:0;margin-top:0'>"; 29 echo "<BUTTON name='submit' value='submit' type='submit'><img src='home.gif'></button>"; 30 echo "<INPUT type='hidden' name='username' value=".$username.">"; 31 echo "<INPUT type='hidden' name='password' value=".$password.">"; 32 echo "</FORM></TD></TR>"; //insert 33 $insert_sched=$_post['insert_sched']; 34 if($insert_sched>0) 35 { 36 $less=$_post['lesson_in']; 37 $grou=$_post['group_in']; 38 $room=$_post['room_in']; 39 $stud=$_post['students_in']; 40 $d_in=$_post['day']; 38

45 41 $t_in=$_post['hour']; 42 $sql_insert="insert into schedule values ('', NULL, '$less', '$d_in', '$t_in', '$room', '$grou', '$stud')"; 43 $result_insert=mysql_query($sql_insert, $conn) or die(mysql_error()); 44 } //delete 45 $act=$_post['action']; 46 if($act=="d") 47 { 48 $id_sched=$_post['id_sched']; 49 $sql_d="delete from schedule where id_schedule={$id_sched}"; 50 $result_d=mysql_query($sql_d, $conn) or die(mysql_error()); 51 } //update 52 if($act=="u") 53 { 54 $id_sched=$_post['lesson_du']; 55 $grou=$_post['group_du']; 56 $roo=$_post['room_du']; 57 $stud=$_post['students_du']; 58 if($id_sched!="empty" && $grou!="empty" && $roo!="empty" && $stud!="empty") 59 { 60 $sql_u="update schedule set id_room={$roo}, groups={$grou}, students={$stud} where id_schedule={$id_sched}"; 61 $result_u=mysql_query($sql_u, $conn) or die(mysql_error()); 62 } 63 else {echo "You have to fill in all the texts!";} 64 } //Διαμόρφωση προγράμματος όταν ο χρήστης έχει επιλέξει εξάμηνο για μετατροπές. 65 $id_sem=$_post['semester']; 66 if($id_sem>0) 67 { 68 $sql_hour="select id_hour,hour from hours order by id_hour"; 69 $result_hour=mysql_query($sql_hour, $conn) or die(mysql_error()); 70 $t=0; 71 $hoursarray=array(); 39

46 72 while ($row_hour=mysql_fetch_array($result_hour)) {$hoursarray[$t]=$row_hour['hour'];$t++;} 73 $num_hours=$t; 74 $sql_day="select id_day,day from days order by id_day"; 75 $result_day=mysql_query($sql_day, $conn) or die(mysql_error()); 76 $d=0; 77 $daysarray=array(); 78 while ($row_day=mysql_fetch_array($result_day)) {$daysarray[$d]=$row_day['day'];$d++;} 79 $num_days=$d; 80 $sql="select semester from semesters where id_semester={$id_sem}"; 81 $result=mysql_query($sql, $conn) or die(mysql_error()); 82 $row=mysql_fetch_row($result); //Καταχωρώ τα id των μαθημάτων του συγκεκριμένου εξαμήνου σε έναν πίνακα. 83 $sql_ids="select id_lesson from lessons where id_semester={$id_sem}"; 84 $result_ids=mysql_query($sql_ids, $conn) or die(mysql_error()); 85 $ids=0; 86 while($row_ids=mysql_fetch_row($result_ids)) 87 { 89 if($ids==0) $ids_lessons=$row_ids[0]; 90 else $ids_lessons.=", ".$row_ids[0]; 91 $ids++; 92 } 93 $t=0; 94 $d=0; 95 echo "<table border=1 align='center' bgcolor='#c6eff7'>"; 96 echo "<tr><td colspan=6 align='center' bgcolor='#94d6e7'><b>".$row[0]."</b></td></tr>"; 97 echo "<tr><td bgcolor='#94d6e7'>&nbsp</td>"; 98 while($d<$num_days) 99 { 100 echo "<td align='center' bgcolor='#94d6e7'>".$daysarray[$d]."</td>"; 101 $d++; 102 } 40

47 103 $t=0; 104 $d=0; 105 echo "</tr>"; //HOURS 106 while($t<$num_hours) 107 { 108 echo "<tr><td bgcolor='#94d6e7'>".$hoursarray[$t]."</td>"; //DAYS - lessons 109 while($d<$num_days) 110 { 111 $sql_sched="select id_schedule,id_lesson,groups,id_room,students from schedule where id_day=($d+1) and id_hour=($t+1) and id_lesson IN ($ids_lessons)"; 112 $result_sched=mysql_query($sql_sched, $conn) or die(mysql_error()); //Εμφανίζω τα μαθήματα του προγράμματος. 113 echo "<td>"; 114 $m=0; 115 while($row_sched=mysql_fetch_row($result_sched)) 116 { 117 $id_less_sched=$row_sched[1]; 118 if($m==0) $all_sched=$id_less_sched; 119 else $all_sched.=", ".$id_less_sched; 120 $m++; 121 $sql_name="select name,quality from lessons where id_lesson={$id_less_sched}"; 122 $result_name=mysql_query($sql_name, $conn) or die(mysql_error()); 123 $row_name=mysql_fetch_row($result_name); 124 $sql_room="select room from rooms where id_room={$row_sched[3]}"; 125 $result_room=mysql_query($sql_room, $conn) or die(mysql_error()); 126 $row_room=mysql_fetch_row($result_room); 127 echo $row_name[0]." ".$row_name[1].$row_sched[2]."<br>"; 128 echo $row_room[0]." ".$row_sched[4]; //DELETE 129 echo"<formaction='insert4.php'method='post'style='margin-bottom:0;margin-top:0'>"; 130 echo "<INPUT type='submit' value='delete'>"; 131 echo "<INPUT type='hidden' name='id_sched' value=".$row_sched[0].">"; 41

48 132 echo "<INPUT type='hidden' name='action' value='d'>"; 133 echo "<INPUT type='hidden' name='day' value=".($d+1).">"; 134 echo "<INPUT type='hidden' name='hour' value=".($t+1).">"; 135 echo "<INPUT type='hidden' name='semester' value=".$id_sem.">"; 136 echo "<INPUT type='hidden' name='insert_sched' value=-1>"; 137 echo "<INPUT type='hidden' name='username' value=".$username.">"; 138 echo "<INPUT type='hidden' name='password' value=".$password.">"; 139 echo "</FORM>"; 140 echo "<hr>"; 141 } // while($row_sched=mysql_fetch_row($result_sched)) //INSERT 142 echo"<formaction='insert4.php'method='post'style='margin-bottom:0;margin-top:0'>"; 143 echo "<SELECT name='lesson_in' maxlength=2>"; 144 $sql_lessons="select id_lesson,name,qualityfrom lessons whereid_semester={$id_sem}"; 145 $result_lessons=mysql_query($sql_lessons, $conn) or die(mysql_error()); 146 echo "<OPTION value='empty'>-"; 147 while($row_lessons=mysql_fetch_row($result_lessons)) 148 { 149 echo "<OPTION value='".$row_lessons[0]."'>".$row_lessons[1]; 150 echo "(".$row_lessons[2].")"; 151 } 152 echo "</SELECT>"; //groups 153 echo "<BR><SELECT name='group_in'>"; 154 echo "<OPTION value='empty'>-"; 155 for($i=0;$i<10;$i++) {echo "<OPTION value=".$i.">".$i;} 156 echo "</SELECT>"; //room 157 echo "<SELECT name='room_in'>"; 158 $sql_room="select id_room,room from rooms"; 159 $result_room=mysql_query($sql_room, $conn) or die(mysql_error()); 160 echo "<OPTION value='empty'>-"; 161 while($row_room=mysql_fetch_row($result_room)) {echo "<OPTION value='".$row_room[0]."'>".$row_room[1];} 162 echo "</SELECT>"; 42

49 //student 163 echo "<INPUT type='text' name='students_in' size=3>"; 164 echo "<INPUT type='submit' value='insert'>"; 165 echo "<INPUT type='hidden' name='insert_sched' value=1>"; 166 echo "<INPUT type='hidden' name='day' value=".($d+1).">"; 167 echo "<INPUT type='hidden' name='hour' value=".($t+1).">"; 168 echo "<INPUT type='hidden' name='semester' value=".$id_sem.">"; 169 echo "<INPUT type='hidden' name='action' value='a'>"; 170 echo "<INPUT type='hidden' name='username' value=".$username.">"; 171 echo "<INPUT type='hidden' name='password' value=".$password.">"; 172 echo "</FORM><hr>"; //UPDATE - lesson 173 echo"<formaction='insert4.php'method='post'style='margin-bottom:0;margin-top:0'>"; 174 echo "<SELECT name='lesson_du' maxlength=2>"; 175 $sql_lessons="select id_schedule,id_lesson from schedule where id_day=($d+1) and id_hour=($t+1) and id_lesson IN ($ids_lessons)"; 176 $result_lessons=mysql_query($sql_lessons, $conn) or die(mysql_error()); 177 $catch=0; 178 $catch_less=array(); 179 $catch_less[0]=""; 180 while($row_lessons=mysql_fetch_row($result_lessons)) 181 { 182 $sql_name_less="selectname,quality from lessons where id_lesson={$row_lessons[1]}"; 183 $result_name_less=mysql_query($sql_name_less, $conn) or die(mysql_error()); 184 $row_name_less=mysql_fetch_row($result_name_less); 185 $row=$row_name_less[0]."(".$row_name_less[1].")"; 186 if(!in_array($row,$catch_less)){echo "<OPTION value='".$row_lessons[0]."'>".$row;} 187 $catch_less[$catch]=$row; 188 $catch++; 189 } 190 echo "</SELECT>"; //group 191 $sql_less="select id_schedule,id_lesson,id_room,groups,students from schedule where id_day=($d+1) and id_hour=($t+1) and id_lesson IN ($ids_lessons)"; 192 $result_less=mysql_query($sql_less, $conn) or die(mysql_error()); 193 $row_less=mysql_fetch_row($result_less); 43

50 194 if($row_less!="") 195 { 196 echo "<BR><SELECT name='group_du' maxlength=2>"; 197 for($i=0;$i<10;$i++) 198 { 199 if($row_less[3]==$i) {echo "<OPTION value=".$i." selected>".$i;} 200 else {echo "<OPTION value=".$i.">".$i;} 201 } 202 echo "</SELECT>"; //room 203 $sql_rless="select room from rooms where id_room={$row_less[2]}"; 204 $result_rless=mysql_query($sql_rless, $conn) or die(mysql_error()); 205 $row_rless=mysql_fetch_row($result_rless); 206 echo "<SELECT name='room_du'>"; 207 $sql_rooms="select id_room,room from rooms"; 208 $result_rooms=mysql_query($sql_rooms, $conn) or die(mysql_error()); 209 while($row_rooms=mysql_fetch_row($result_rooms)) 210 { 211 if($row_rless[0]==$row_rooms[1]) {echo "<OPTION value='".$row_rooms[0]."' selected>".$row_rooms[1];} 212 else {echo "<OPTION value='".$row_rooms[0]."'>".$row_rooms[1];} 213 } 214 echo "</SELECT>"; //students 215 echo "<INPUT type='text' name='students_du' size=3 value='".$row_less[4]."'>"; 216 } // if($row_less!="") 217 else 218 { //group 219 $row_less=mysql_fetch_row($result_less); 220 echo "<BR><SELECT name='group_du' maxlength=2>"; 221 for($i=0;$i<10;$i++) {echo "<OPTION value=".$i.">".$i;} 222 echo "</SELECT>"; //room 223 echo "<SELECT name='room_du'>"; 44

51 224 $sql_rooms="select id_room,room from rooms"; 225 $result_rooms=mysql_query($sql_rooms, $conn) or die(mysql_error()); 226 while($row_rooms=mysql_fetch_row($result_rooms)) 227 {echo "<OPTION value='".$row_rooms[0]."'>".$row_rooms[1];} 228 echo "</SELECT>"; //students 229 echo "<INPUT type='text' name='students_du' size=3>"; 230 } //else 231 echo "<INPUT type='submit' value='update'>"; 232 echo "<INPUT type='hidden' name='day' value=".($d+1).">"; 233 echo "<INPUT type='hidden' name='hour' value=".($t+1).">"; 234 echo "<INPUT type='hidden' name='semester' value=".$id_sem.">"; 235 echo "<INPUT type='hidden' name='action' value='u'>"; 236 echo "<INPUT type='hidden' name='insert_sched' value=-1>"; 237 echo "<INPUT type='hidden' name='username' value=".$username.">"; 238 echo "<INPUT type='hidden' name='password' value=".$password.">"; 239 echo "</FORM>"; 240 echo "</td>"; 241 $d++; 242 } // while($d<$num_days) 243 echo "</tr>"; 244 $t++; 245 $d=0; 246 } // while($t<$num_hours) 247 echo "</table>"; 248 } // if($id_sem>0) 249?> 250 </TABLE></FORM> 251 </BODY> 252 </HTML> Όπως περιγράφεται και παραπάνω αυτή η δραστηριότητα περιλαμβάνει δύο τμήματα τα οποία αλληλεξαρτώνται. Αρχικά, βλέποντας τον κώδικα αυτής της σελίδας, γίνεται η έναρξη της φόρμας που θα περιέχει τα στοιχεία του πρώτου τμήματος της σελίδας. Η φόρμα ξεκινάει από τη γραμμή 8 και τελειώνει στη γραμμή 45

52 27. Το βασικό στοιχείο του πρώτου τμήματος της εφαρμογής είναι το μενού των εξαμήνων από το οποίο ο χρήστης θα επιλέξει αυτό που επιθυμεί να τροποποιήσει. Η δημιουργία του μενού ξεκινάει από τη γραμμή 12 έως και τη γραμμή 21. Στη γραμμή 12 βλέπουμε το tag <SELECT> με το οποίο δημιουργείται το μενού επιλογών και την ιδιότητά του name που καθορίζει το όνομα της μεταβλητής που θα περιέχει την τιμή της επιλογής του χρήστη, η οποία είναι το semester. Στη γραμμή 13 ξεκινάει ο κώδικας PHP, στις γραμμές 14 και 15 γίνεται η σύνδεση με τη βάση δεδομένων της εφαρμογής και στις γραμμές 16 και 17 ανακτώνται πληροφορίες σχετικά με τον χρήστη που είναι συνδεμένος τη συγκεκριμένη χρονική στιγμή στη συγκεκριμένη θέση της εφαρμογής. Στη γραμμή 18 καλούνται από τη βάση δεδομένων τα ids των εξαμήνων και τα αντίστοιχα ονόματά τους από τον πίνακα των εξαμήνων (semesters) με το ερώτημα : select id_semester,semester from semesters. Έπειτα, ο βρόγχος με τη while (γραμμή 20) ορίζει τις επιλογές του μενού των εξαμήνων. Ο πίνακας row_lessons περιέχει στα κελιά του τα αποτελέσματα του SQL ερωτήματος, μία γραμμή αποτελεσμάτων για κάθε loop. Όταν φτάσει στην τελευταία γραμμή αποτελεσμάτων αυτό θα είναι και το τελευταίο loop που θα πραγματοποιηθεί. Τα αποτελέσματα του ερωτήματος ανακαλώνται με διάφορους τρόπους. Είδαμε στην επεξήγηση του κώδικα της σελίδας για την επιλογή δραστηριότητας, τη χρήση της mysql_fetch_array() και παραπάνω την χρήση της mysql_fetch_row(). Και οι δύο αυτές επιλογές ανακτούν μία γραμμή από το σύνολο των αποτελεσμάτων του εκάστοτε ερωτήματος και την επιστρέφουν ως έναν πίνακα. Η πρώτη ως ένα συσχετιζόμενο πίνακα και η δεύτερη ως έναν απαριθμητό πίνακα. Υπάρχουν βέβαια και άλλοι τρόποι ανάκλησης αποτελεσμάτων αλλά δε χρησιμοποιούνται στην εφαρμογή αυτή. Στην γραμμή 20 εμφανίζεται, στην υλοποίηση της while, το tag <OPTION> με το οποίο προσθέτονται επιλογές στο μενού επιλογών των εξαμήνων. Η ιδιότητά του είναι η value που έχει την τιμή η οποία καταχωρείται στην τιμή της μεταβλητής semester όταν επιλεγεί από τον χρήστη ώστε να γνωρίζουμε κάθε φορά την επιλογή του. Η τιμή που θα έχει η επιλογή του κάθε εξαμήνου θα είναι το id που τη χαρακτηρίζει. Έτσι, η τιμή της value θα είναι η row_lessons[0] και η αντίστοιχη 46

53 τιμή που θα εμφανίζεται στο μενού θα είναι η row_lessons[1] όπως φαίνεται με το τέλος του tag. Τελειώνοντας με τη δημιουργία του μενού επιλογών, δημιουργούνται το κουμπί υποβολής της φόρμας, στη γραμμή 22, με τίτλο ok, το κρυφό για τον χρήστη στοιχείο με όνομα insert_sched και τιμή -1, το κρυφό στοιχείο με όνομα action και τιμή a, και τέλος τα κρυφά στοιχεία με όνομα username και password και τιμές τα στοιχεία του χρήστη ο οποίος είναι συνδεμένος. Οι τιμές των κρυφών στοιχείων θα κατανοηθούν παρακάτω. Το κουμπί υποβολής της φόρμας, στέλνει της πληροφορίες στη σελίδα insert4.php που είναι η ίδια η σελίδα στην οποία βρίσκεται. Πριν τελειώσουμε με το πρώτο τμήμα της εφαρμογής, στη γραμμή 28 έως 32 δημιουργείται μια νέα φόρμα με κουμπί υποβολής την εικόνα home.gif (γραμμή 29) το οποίο μεταφέρει τον χρήστη, εφόσον το πατήσει, πίσω στη σελίδα για την επιλογή δραστηριότητας (σελίδα choose.php). Αφού λοιπόν ο χρήστης επιλέξει το εξάμηνο για το οποίο επιθυμεί να κάνει τις μετατροπές στο εβδομαδιαίο πρόγραμμα, καλείται και πάλι η ίδια σελίδα, η insert4.php. Εμφανίζεται επομένως ξανά το μενού επιλογών των εξαμήνων (Σχήμα 4) και στη συνέχεια εμφανίζεται το ωρολόγιο εβδομαδιαίο πρόγραμμα όπως αυτό διαμορφώνεται τη συγκεκριμένη χρονική στιγμή (Σχήμα 5). Θα επεξηγηθεί ο κώδικας από τη γραμμή 65 έως τη γραμμή 248 για να δούμε πως δημιουργείται ο πίνακας του προγράμματος. Στη γραμμή 65, καταχωρείται η τιμή της μεταβλητής semester στην μεταβλητή id_sem. Στη γραμμή 66, γίνεται ο έλεγχος του αν έχει επιλεγεί εξάμηνο. Προϋπόθεση για την εμφάνιση του προγράμματος είναι να έχει επιλεγεί το εξάμηνο προς τροποποίηση από τον χρήστη. Αν δεν έχει επιλέγει εξάμηνο από το πρώτο τμήμα της σελίδας αυτής, η τιμή της μεταβλητής id_sem θα είναι -1 και έτσι δε θα υλοποιηθεί το περιεχόμενο της if το οποίο εμφανίζει τον πίνακα του προγράμματος. Το -1 είναι η τιμή της semester που στέλνεται με κάθε κουμπί υποβολής στην εφαρμογή εκτός από το τμήμα εκείνο στο οποίο επιλέγεται το εξάμηνο από τον χρήστη και παίρνει την τιμή του id του εξαμήνου, που είναι μεγαλύτερο του μηδέν (>0). Ο σχεδιασμός του πίνακα του προγράμματος ξεκινάει με την άντληση πληροφοριών από τη βάση δεδομένων. Αρχικά παίρνουμε πληροφορίες σχετικά με τις 47

54 ώρες και τις μέρες της εβδομάδας που διενεργούνται διδασκαλίες και την ονομασία του εξαμήνου που αντιστοιχεί στο id το οποίο στάλθηκε με το κουμπί υποβολής του προηγούμενου τμήματος της σελίδας. Τα ερωτήματα που χρησιμοποιούνται γι αυτές της πληροφορίες είναι: select id_hour,hour from hours order by id_hour, γραμμή 68 select id_day,day from days order by id_day, γραμμή 74 select semester from semesters where id_semester=$id_sem, γραμμή 80 Οι πληροφορίες για τις ώρες και τις μέρες καταχωρούνται στους αντίστοιχους πίνακες για να είναι εύκολα προσβάσιμες. Όπως είδαμε και παραπάνω, για να ανακτήσουμε τις πληροφορίες που χρειαζόμαστε, δεν αρκεί μόνο το ερώτημα προς τη βάση δεδομένων αλλά και η χρήση της while. Έτσι, στη γραμμή 72, η while καλείται να καταχωρήσει στον πίνακα hoursarray[] όλες τις ώρες που ζητήθηκαν από τη βάση δεδομένων και το πλήθος των εγγραφών στη μεταβλητή num_hours. Ο αντίστοιχος πίνακας για τις μέρες είναι ο daysarray[] (γραμμή 78) και το πλήθος των εγγραφών η μεταβλητή num_days (γραμμή 79). Στη συνέχεια χρησιμοποιείται το ερώτημα: select id_lesson from lessons where id_semester={id_sem}, γραμμή 83 για τα μαθήματα που περιλαμβάνονται στο συγκεκριμένο εξάμηνο και μπορούν να επιλεγούν από τον χρήστη για το εβδομαδιαίο πρόγραμμα. Όπως με τις πληροφορίες των ωρών και των ημερών, έτσι και εδώ τα ids των μαθημάτων αυτού του εξαμήνου θα μπουν σ ένα πίνακα. Ο πίνακας αυτός δε θα είναι με αριθμημένα κελιά όπως οι προηγούμενοι, αλλά θα μοιάζει με string γιατί θα χρησιμοποιηθεί σε ερώτημα προς τη βάση δεδομένων. Το όνομα του πίνακα είναι ids_lessons και το πλήθος των εγγραφών του είναι η μεταβλητή ids (γραμμή 91) που αυξάνεται κατά ένα σε κάθε επανάληψη της while (γραμμή 86). Οι εγγραφές των ids, χωρίζονται με κόμμα (,). Στις γραμμές 89 και 90 χρησιμοποιείται μία if για ευνόητους λόγους. Αφού συγκεντρώθηκαν οι πληροφορίες που είναι απαραίτητες για τη δημιουργία του πίνακα του προγράμματος, στη γραμμή 95 ξεκινάει η σχεδίασή του. Πριν την έναρξη της σχεδίασής του στις γραμμές 93 και 94 μηδενίζονται δύο βοηθητικοί μετρητές, ο πρώτος για τις ώρες και ο δεύτερος για τις μέρες του προγράμματος. 48

55 Στη γραμμή 96, όπου σχεδιάζεται η πρώτη γραμμή του πίνακα, εμφανίζεται το εξάμηνο στο οποίο έχει επιλεγεί να γίνουν οι τροποποιήσεις. Η μεταβλητή που εμφανίζει το εξάμηνο είναι η $row[0] η οποία αντλεί την πληροφόρησή της από τη γραμμή 82. Στην επόμενη γραμμή του πίνακα του εβδομαδιαίου προγράμματος εμφανίζονται οι μέρες μιας εβδομάδας ανά κελί οι οποίες περιέχονται στον ανάλογο πίνακα. Χρησιμοποιείται μια while($d<$num_day) -γραμμή 98- για να γίνει αυτό και ο πίνακας daysarray[] (γραμμή 100). Στις γραμμές 103 και 104 μηδενίζονται ξανά οι βοηθητικοί μετρητές πριν αρχίσει το σημαντικό μέρος της σχεδίασης του πίνακα. Πριν συνεχιστεί η επεξήγηση του κώδικα, να αναφερθεί το εξής: χρησιμοποιούνται πληροφορίες από τον πίνακα της βάσης δεδομένων που υπάρχει καταχωρημένο το εβδομαδιαίο πρόγραμμα μαθημάτων όλων των εξαμήνων. Επίσης, χρησιμοποιούνται δύο φωλιασμένες while, με τις οποίες, όπως θα δούμε παρακάτω, ελέγχουν σε ποια μέρα και σε ποια ώρα βρίσκεται η σχεδίαση του πίνακα. Η πρώτη while (γραμμή 106 έως 246) ελέγχει τι ώρες, δηλαδή ποια γραμμή του πίνακα σχεδιάζεται. Εδώ είναι και η βασική λειτουργία του βοηθητικού μετρητή t (γραμμή 106). Στην γραμμή 108, δημιουργείται μια γραμμή που στο πρώτο της κελί περιέχει την αντίστοιχη ώρα με βάση τον πίνακα των ωρών hoursarray[] και τη θέση του προγράμματος που βρισκόμαστε (t). Στην γραμμή 109 έως τη γραμμή 241, ακολουθεί η δεύτερη while που ελέγχει τις μέρες, δηλαδή σε ποια στήλη του πίνακα σχεδιάζεται κάποιο κελί. Εδώ εμφανίζεται και ο βοηθητικός μετρητής d (γραμμή 109). Στη γραμμή 111, αντλώνται πληροφορίες από τη βάση δεδομένων σχετικά με το πρόγραμμα μαθημάτων με το παρακάτω ερώτημα: "select id_schedule,id_lesson,groups,id_room,students from schedule where id_day=($d+1) and id_hour=($t+1) and id_lesson IN ($ids_lessons)" με το ερώτημα αυτό, πληροφορούμαστε για το ποιο μάθημα διεξάγεται τη συγκεκριμένη μέρα-στήλη στην οποία βρισκόμαστε, τη συγκεκριμένη ώρα-γραμμή που βρισκόμαστε και είναι μάθημα του εξαμήνου στο οποίο βρισκόμαστε ids_lessons (από τη γραμμή 89-90). Ακόμα, ποιο group-ομάδα του μαθήματος είναι, σε ποια 49

56 αίθουσα θα διενεργηθεί, το πόσοι μαθητές επιτρέπεται να συμμετέχουν σε αυτή την ομάδα και τέλος το id που χαρακτηρίζει τη μοναδικότητα αυτής της πληροφορίας. Μετά το ερώτημα, πρέπει να αξιοποιηθούν οι πληροφορίες που επιστρέφονται από τη βάση. Η while($row_sched=mysql_fetch_row($result_sched)) στη γραμμή 115 έως την γραμμή 141, παίρνει μια γραμμή από τα αποτελέσματα του ερωτήματος με κάθε loop. Αν δεν έχει επιστραφεί καμία γραμμή από τη βάση, άρα κανένα μάθημα αυτού του εξαμήνου δε διδάσκεται τη συγκεκριμένη μέρα και ώρα, η while δε θα πραγματοποιηθεί. Στην περίπτωση που θα επιστραφεί κάποια γραμμή αποτελέσματος, η while θα πραγματοποιηθεί και θα εμφανίσει το αντίστοιχο μάθημα στο ανάλογο κελί του πίνακα του προγράμματος. Επίσης, θα εμφανιστούν κάποια κουμπιά υποβολής με τα οποία θα πραγματοποιούνται οι μετατροπές του προγράμματος (σχήμα 4). Στη γραμμή 117, το δεύτερο στοιχείο από την γραμμή του αποτελέσματος η οποία επεξεργάζεται και είναι το id του μαθήματος, καταχωρείται στη μεταβλητή id_less_sched. Δημιουργείτε ένα string με τα ids των μαθημάτων στις γραμμές 118 και 119 όπως είδαμε και παραπάνω. Με το ερώτημα: select name, quality from lessons where id_lesson={$id_less_sched}, γραμμή 121 select room from rooms where id_room={$row_sched[3]}, γραμμή 124 ανακτάται από τη βάση το όνομα του μαθήματος, η ιδιότητά του και η αίθουσα διεξαγωγής του με σκοπό την εμφάνισή τους στον πίνακα του προγράμματος. Στις γραμμές 127 και 128, εμφανίζονται στον πίνακα, μαζί με την ομάδα και το πλήθος των σπουδαστών που μπορούν να το παρακολουθήσουν. Πριν κλείσει η while, δημιουργείται ένα κουμπί υποβολής με τίτλο DELETE. Έτσι, για κάθε μάθημα που θα εμφανίζεται, θα υπάρχει και ένα κουμπί DELETE με το οποίο ο χρήστης θα μπορεί να σβήσει την εγγραφή αυτή από το εβδομαδιαίο πρόγραμμα. Στη γραμμή 129 δημιουργείται η φόρμα του κουμπιού. Στη γραμμή 130 δημιουργείται το κουμπί υποβολής. Στη γραμμή 131 δημιουργείται το κρυφό στοιχείο με όνομα id_sched και περιεχόμενο το id της γραμμής του πίνακα schedule που επιθυμεί ο χρήστης να διαγραφεί. Στη γραμμή 132 δημιουργείται το κρυφό στοιχείο με όνομα action και περιεχόμενο τον χαρακτήρα d ο οποίος δηλώνει την ενέργεια που επιθυμεί ο χρήστης να γίνει. Στις γραμμές 133 και 134 δημιουργούνται τα κρυφά στοιχεία day και hour με περιεχόμενο τα id τις ώρας και 50

57 της μέρας αντίστοιχα στα οποία υπάρχει το μάθημα προς διαγραφή. Στη γραμμή 135 και 136 δημιουργούνται το κρυφό στοιχείο semester με περιεχόμενο το εξάμηνο προς μετατροπή και το κρυφό στοιχείο insert_sched με τιμή -1 για λειτουργικούς λόγους. Όπως φαίνεται από τα κρυφά στοιχεία που στέλνονται με το κουμπί υποβολής DELETE, δίνονται πλήρη στοιχεία σχετικά με το μάθημα που πρέπει να διαγραφεί. Η λειτουργία του στοιχείου action θα κατανοηθεί παρακάτω. Πέραν του κουμπιού DELETE με το οποίο ο χρήστης μπορεί να διαγράψει μια εγγραφή στο εβδομαδιαίο πρόγραμμα, εμφανίζονται και τα κουμπιά υποβολής INSERT και UPDATE για την τροποποίηση του εβδομαδιαίου προγράμματος μαθημάτων. Η δημιουργία του κουμπιού υποβολής INSERT, ξεκινάει στη γραμμή 142 και ολοκληρώνεται στην 172. Για το INSERT δημιουργείται μια νέα φόρμα (γραμμή 142) που εκτός από το κουμπί υποβολής περιέχει τρία μενού επιλογών, ένα πλαίσιο κειμένου και κάποια κρυφά στοιχεία. Για την εισαγωγή ενός μαθήματος στον πίνακα του προγράμματος, ο χρήστης καλείται να επιλέξει την ονομασία του μαθήματος και την ιδιότητά του, την ομάδα του μαθήματος, την αίθουσα στην οποία θα διεξάγεται και το πλήθος των σπουδαστών που θα μπορούν να το παρακολουθήσουν. Στη γραμμή 143 δημιουργείται το πρώτο μενού επιλογών για την επιλογή του μαθήματος και της ιδιότητάς του. Οι επιλογές θα αποτελούνται από μαθήματα μόνο του συγκεκριμένου εξαμήνου γιατί το πρόγραμμα βγαίνει χωριστά για κάθε εξάμηνο. Στη γραμμή 144, με το ερώτημα: "select id_lesson,name,quality from lessons where id_semester={$id_sem}" ανακτώνται από τη βάση δεδομένων οι πληροφορίες σχετικά με τα μαθήματα που διδάσκονται στο συγκεκριμένο εξάμηνο από τον πίνακα lessons. Στη γραμμή 146 δημιουργείται η πρώτη επιλογή για το μενού επιλογών που χαρακτηρίζει το κενό. Η επιλογή είναι η παύλα (-) και επιστρέφεται η ένδειξη empty η οποία ερμηνεύεται ως ότι ο χρήστης δεν έχει επιλέξει μάθημα προς εισαγωγή στο πρόγραμμα. Ακολουθεί μια while (γραμμή 147) που συμπληρώνει τις υπόλοιπες επιλογές για το μενού επιλογών. Στη γραμμή 153, δημιουργείται το δεύτερο μενού επιλογών που αφορά την επιλογή της ομάδας. Οι ομάδες δεν περιέχονται σε κάποιο πίνακα της βάσης ώστε να ανακτηθούν πληροφορίες από αυτόν με κάποιο ερώτημα. Η αρίθμησή τους είναι προκαθορισμένη και γι αυτό χρησιμοποιείται μια απλή for() (γραμμή 155) για τη δημιουργία των επιλογών του μενού. 51

58 Στη γραμμή 157, δημιουργείται το τρίτο μενού επιλογών για την επιλογή της αίθουσας του μαθήματος. Με το ερώτημα στη γραμμή 158: "select id_room,room from rooms" επιστρέφονται από τη βάση δεδομένων όλες οι αίθουσες του Τμήματος Διαχείρισης Πληροφοριών στις οποίες διενεργούνται οι παραδόσεις των μαθημάτων. Οι επιλογές αυτού του μενού επιλογών εμφανίζονται με τη χρήση μιας while() στη γραμμή 161. Σε όλα τα μενού επιλογών, η πρώτη επιλογή είναι αυτή του κενού για την αποφυγή λαθών και για αισθητικούς λόγους. Τέλος, στη γραμμή 163, δημιουργείται το πλαίσιο κειμένου όπου ο χρήστης καλείται να συμπληρώσει τον αριθμό του πλήθους των σπουδαστών. Στην γραμμή 164, δημιουργείται το κουμπί υποβολής της φόρμας. Στις γραμμές 165 έως 171, δημιουργούνται τα κρυφά στοιχεία της φόρμας. Το κρυφό στοιχείο insert_sched με τιμή 1 για λειτουργικούς λόγους που θα κατανοηθούν παρακάτω. Τα κρυφά στοιχεία day, hour και semester με τιμές το id της μέρας, της ώρας και του εξαμήνου στα οποία γίνεται η εισαγωγή μαθήματος. Το κρυφό στοιχείο action με τιμή a για να μην υποδεικνύει καμία ενέργεια όπως στην περίπτωση της διαγραφής. Εδώ τελειώνει η δημιουργία της φόρμας της εισαγωγής μαθήματος στο εβδομαδιαίο πρόγραμμα μαθημάτων. Στη συνέχεια επεξηγείτε η διαδικασία σχεδίασης της φόρμας για τo κουμπί υποβολής με τίτλο UPDATE, το οποίο λειτουργεί για την τροποποίηση μιας υπάρχουσας εγγραφής στο πρόγραμμα. Η ιδιότητα της τροποποίησης μιας υπάρχουσας εγγραφής στο εβδομαδιαίο πρόγραμμα του εξαμήνου, απαιτεί την παροχή του δικαιώματος στο χρήστη να τροποποιεί όλες τις ιδιότητες του μαθήματος. Έτσι, πρέπει να εμφανίζονται με τέτοιο τρόπο ώστε να διευκολύνουν τον χρήστη στην τροποποίηση του μαθήματος. Η υλοποίηση της ιδιότητας αυτή γίνεται από την γραμμή 173 έως τη γραμμή 239. Στη γραμμή 173, δημιουργείται η φόρμα του κουμπιού υποβολής UPDATE. Στη γραμμή 174, δημιουργείται το μενού επιλογών με όνομα lesson_du με το οποίο ο χρήστης επιλέγει το μάθημα που θέλει να τροποποιήσει. Το ερώτημα: "select id_schedule,id_lesson from schedule where id_day=($d+1) and id_hour=($t+1) and id_lesson IN ($ids_lessons) " ανακτά άπο τη βάση δεδομένων όλα τα μαθήματα που εμφανίζονται στο συγκεκριμένο εξάμηνο, τη συγκεκριμένη μέρα και ώρα. Έπειτα δημιουργείται ο 52

59 πίνακας catch_less με κενό περιεχόμενο γραμμή 178, 179. Με τη χρήση της while γραμμή 180 ορίζονται οι επιλογές για το μενού επιλογών. Με το ερώτημα: "select name, quality from lessons where id_lesson={$row_lessons[1]}" ανακτώνται από τη βάση δεδομένων το όνομα και η ιδιότητα για κάθε μάθημα προς προς θέσης του προγράμματος, σε κάθε loop προς while. Στη γραμμή 185, δημιουργείται ένα string με το όνομα και την ιδιότητα του μαθήματος προς εμφανίζονται στο μενού επιλογών. Στη γραμμή 186, με τη χρήση προς if δημιουργούνται οι επιλογές του μενού. Εδώ γίνεται αντιληπτή η χρήση του πίνακα catch_less και στη γραμμή 187 καταχωρείται στον πίνακα η τελευταία εμφανιζόμενη επιλογή του μενού προς αποφυγή προς επαναλαμβανόμενης εμφάνισής προς. Τέλος, στη γραμμή 190 κλείνει η δημιουργία του πρώτου μενού επιλογών για το μάθημα προς τροποποίηση. Για την τροποποίηση του μαθήματος εκτός από το μενού επιλογών για την επιλογή του όπως είδαμε παραπάνω, εμφανίζονται ένα μενού επιλογών για την ομάδα (του εργαστηριακού μαθήματος), ένα για την αίθουσα όπου θα διεξάγεται και ένα πλαίσιο κειμένου για το πλήθος των σπουδαστών που θα μπορούν να το δηλώνουν. Για την διευκόλυνση του χρήστη, με την επιλογή του μαθήματος προς τροποποίηση εμφανίζονται η ομάδα, η αίθουσα και το πλήθος των σπουδαστών που ισχύουν εκείνη τη χρονική στιγμή στα αντίστοιχα πεδία. Στην γραμμή 191, με το ερώτημα: "select id_schedule,id_lesson,id_room,groups,students from schedule where id_day=($d+1) and id_hour=($t+1) and id_lesson IN ($ids_lessons)" ανακτώνται από τη βάση δεδομένων όλα τα απαραίτητα στοιχεία για τη δημιουργία των υπόλοιπων πεδίων. Έτσι, αφού επιστραφεί κάποιο αποτέλεσμα από το παραπάνω βασικό ερώτημα (γραμμή 194 έως 216), η τιμή για την ομάδα που θα ισχύει τη συγκεκριμένη χρονική στιγμή (row_less[3]), θα οριστεί και θα εμφανίζεται ως προεπιλεγμένη στο πεδίο γραμμές 194 έως 202. Έπειτα, για τη δημιουργία του μενού επιλογών για την αίθουσα απαιτείται η ανάκτηση των αιθουσών από τη βάση δεδομένων με το παρακάτω ερώτημα: "select id_room,room from rooms", γραμμή

60 και για την εμφάνιση της προεπιλεγμένης αίθουσας απαιτείται το ερώτημα: "select room from rooms where id_room={$row_less[2]}", γραμμή 203 Έτσι, στη γραμμή 211, με τη χρήση της if καθορίζεται η προεπιλεγμένη τιμή που αντιστοιχεί στην ισχύουσα τιμή τη συγκεκριμένη χρονική στιγμή (row_less[2]) και στη γραμμή 212, δημιουργούνται οι υπόλοιπες επιλογές για το μενού επιλογών. Τέλος, στη γραμμή 215 δημιουργείται το πλαίσιο κειμένου για το πλήθος των σπουδαστών που μπορούν να δηλώσουν το συγκεκριμένο μάθημα και καθορίζεται και η προεπιλεγμένη τιμή (row_less[4]). Αν δεν επιστραφεί κάποιο αποτέλεσμα από το ερώτημα της γραμμής 191, θα δημιουργηθούν τα παραπάνω πεδία χωρίς προεπιλεγμένες τιμές γραμμή 217 έως 230. Γραμμές 220 έως 222, δημιουργία μενού επιλογών για την ομάδα. Γραμμές 223 έως 228, δημιουργία μενού επιλογών για την αίθουσα. Γραμμή 229, δημιουργία πλαισίου κειμένου για το πλήθος των σπουδαστών. Στις γραμμές 231 έως 238, δημιουργείται το κουμπί υποβολής της φόρμας UPDATE και τα κρυφά στοιχεία που θα σταλούν με το πάτημα του κουμπιού υποβολής. Ένα από τα κρυφά στοιχεία είναι και το στοιχείο action με τιμή u που χαρακτηρίζει την ενέργεια που γίνεται. Στη γραμμή 241, ο μετρητής d αυξάνεται κατά ένα, δηλαδή η διαδικασία σχεδίασης μετατοπίζεται κατά ένα κελί δεξιότερα και στη γραμμή 242, κλείνει η while για τον έλεγχο σχεδιασμού των στηλών (των ημερών). Έπειτα, στις γραμμές 244, 245 και 246, αυξάνεται κατά ένα ο μετρητής t, δηλαδή η διαδικασία σχεδίασης μετατοπίζεται μια γραμμή πιο κάτω, μηδενίζεται ο μετρητής d, δηλαδή ξεκινάει η σχεδίαση της νέας γραμμής ξανά από την πρώτη στήλη (από την αρχή της γραμμής) και κλείνει η while για τον έλεγχο σχεδιασμού των γραμμών (των ωρών). Στην γραμμή 248, κλείνει η if της γραμμής 66 όπου σχεδιάζεται ο πίνακας τροποποίησης του προγράμματος. Οι διεργασίες της εισαγωγής, της διαγραφής και της τροποποίησης του προγράμματος υλοποιούνται στην ίδια σελίδα. Παραπάνω περιγράφηκε η σχεδίασή τους και ο τρόπος που χρησιμοποιούνται από τον χρήστη. Τώρα θα περιγραφεί πως όλα αυτά τα πλαίσια, τα μενού επιλογών, τα κρυφά στοιχεία και τα κουμπιά 54

61 υποβολής τροποποιούν τα στοιχεία του εβδομαδιαίου προγράμματος στη βάση δεδομένων. Για την εισαγωγή κάποιου μαθήματος στη βάση δεδομένων το κρυφό στοιχείο insert_sched θα πρέπει να περιέχει τιμή θετική και μεγαλύτερη του μηδέν. Αφού ανακτηθεί η τιμή του στοιχείου αυτού, γραμμή 33, ελέγχεται αν πληρεί τις προϋποθέσεις για την εισαγωγή μαθήματος στο πρόγραμμα. Αν η τιμή του, υποδεικνύει την εισαγωγή μαθήματος τότε, ανακτώνται οι πληροφορίες που είναι απαραίτητες για αυτή την εργασία όπως το id του μαθήματος, το id της ομάδας, το id της αίθουσας, το πλήθος των σπουδαστών και τα ids της μέρας και ώρας όπου θα διεξάγεται το μάθημα γραμμές 36 έως 41. Τέλος, με την εντολή: "insert into schedule values ('', NULL, '$less', '$d_in', '$t_in', '$room', '$grou', '$stud')" ολοκληρώνεται η εισαγωγή του μαθήματος στον πίνακα του προγράμματος. Για την διαγραφή κάποιου μαθήματος από το πρόγραμμα, επομένως και από τη βάση δεδομένων, το κρυφό στοιχείο action πρέπει να περιέχει την τιμή d. Αφού ανακτηθεί η τιμή αυτού του στοιχείου, γραμμή 45, ελέγχεται αν η τιμή υποδεικνύει την ενέργεια αυτή, γραμμή 46. Αν ναι, τότε ανακτάται η τιμή του κρυφού στοιχείου id_sched το οποίο περιέχει το id της γραμμής του πίνακα του προγράμματος στη βάση δεδομένων που περιέχει το μάθημα που επιθυμεί ο χρήστης να διαγράψει και με την εντολή: "delete from schedule where id_schedule={$id_sched}" διαγράφεται από το εβδομαδιαίο πρόγραμμα μαθημάτων. Τέλος, για την τροποποίηση κάποιας εγγραφής του εβδομαδιαίου προγράμματος, απαιτείται από το στοιχείο action να περιέχει την τιμή u. Η τιμή του κρυφού στοιχείου action, έχει ανακτηθεί στη γραμμή 45 έτσι, μένει να ελεγχθεί αν η τιμή του υποδεικνύει την ενέργεια αυτή. Αν ναι, ανακτώνται οι πληροφορίες που είναι απαραίτητες όπως, το id της γραμμής του πίνακα του προγράμματος στη βάση δεδομένων που βρίσκεται καταχωρημένο το συγκεκριμένο μάθημα, το id της ομάδας, το id της αίθουσας και το πλήθος των σπουδαστών που καταχωρήθηκαν από τον χρήστη, γραμμές 54 έως 57. Ελέγχεται το περιεχόμενό τους να μην είναι empty γραμμή 58 και εκτελείται η εντολή: 55

62 "update schedule set id_room={$roo}, groups={$grou}, students={$stud} where id_schedule={$id_sched}", γραμμή 60 Αν έστω και αν για κάποιο πεδίο ο χρήστης δεν έχει επιλέξει τιμή, εμφανίζεται το μήνυμα "You have to fill in all the texts!" και δεν εκτελείται η τροποποίηση γραμμή 63. Αυτή ήταν η επεξήγηση του κώδικα της σελίδας insert4.php με την οποία ο χρήστης διαμορφώνει το εβδομαδιαίο πρόγραμμα για κάθε εξάμηνο χρησιμοποιώντας ένα εύχρηστο περιβάλλον διεπαφής. 56

63 Διαθεσιμότητα Αιθουσών Με την επιλογή της δραστηριότητας Διαθεσιμότητα Αιθουσών από τον χρήστη, εμφανίζεται αρχικά η παρακάτω σελίδα: Σχήμα6. Επιλογή ημέρας και ώρας. Για την προβολή του σχήματος 6, χρησιμοποιήθηκε ο παρακάτω κώδικας: 1 <FRAMESET frameborder=0 rows="20%, *"> 2 <FRAME src="choosedh.php" name="dh" marginwidth=0 marginheight=0> 3 <FRAME src="empty.html" name="rooms"> 4 </FRAMESET> Η σελίδα chdh.html αποτελείται από μια διάταξη πλαισίων. Δύο πλαίσια που αλληλεξαρτώνται. Τα πλαίσια δημιουργούνται με το tag <FRAMESET> το οποίο έχει την ιδιότητα frameborder=0 για να μην εμφανίζονται τα περιγράμματα των πλαισίων. Με την ιδιότητα rows σχεδιάζονται δύο οριζόντια πλαίσια, το πρώτο αποτελεί το 20% του παραθύρου και το δεύτερο καταλαμβάνει το υπόλοιπο παράθυρο (*). Στην περίπτωση που θα θέλαμε να εμφανίζονται κάθετα τα πλαίσια, αντί για την ιδιότητα rows θα χρησιμοποιούσαμε την ιδιότητα cols. 57

64 Έπειτα, το tag <FRAME> με την ιδιότητά του src, επιτρέπει την αντιστοίχιση ενός URL στο αντίστοιχο πλαίσιο. Η ιδιότητα name χαρακτηρίζει το πλαίσιο και οι ιδιότητες marginwidth και marginheight καθορίζουν το μέγεθος των ορίων του πλαισίου από τα περιεχόμενά του. Έτσι, στο πρώτο πλαίσιο θα εμφανίζεται η σελίδα "choosedh.php" και στο δεύτερο η σελίδα "empty.html". Το όνομα του πρώτου πλαισίου θα είναι "dh" και του δεύτερου "rooms". Η σελίδα "empty.html" είναι μία κενή σελίδα η οποία εμφανίζεται μόνο στην πρώτη εμφάνιση του πλαισίου. Έτσι, η προσοχή του χρήστη προσηλώνετε στο πρώτο πλαίσιο από όπου θα ξεκινήσει τις ενέργειές του για να εμφανίσει τις αίθουσες που απασχολούνται για κάθε επιλογή του. πλαισίου: Παρακάτω, εμφανίζεται ο κώδικας της σελίδας "choosedh.php" του πρώτου 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title></title> 6 </head> 7 <BODY bgcolor="silver" target="dh"> 8 <FORM action="usageofrooms.php" method="post" target="rooms"> 9 <BR><BR><BR> 10 <TABLE border=0 align="center" bgcolor="#c6eff7" width=50% height=50%> 11 <TR><TD align='center'><font color="#00a5c6"><u><b>επιλογη ΗΜΕΡΑΣ ΚΑΙ ΩΡΑΣ</B></U></FONT><BR><BR> 12 <FONT color="#00a5c6">ημέρα:</font> 13 <SELECT name="day"> 14 <? 15 $conn=mysql_connect("localhost", "margarita", "100"); 16 mysql_select_db("laboratoriesdb"); 17 $sql="select id_day,day from days order by id_day"; 18 $result_h=mysql_query($sql, $conn) or die(mysql_error()); 58

65 19 echo "<OPTION value='*'>*"; 20 while($row=mysql_fetch_row($result_h)) 21 { 22 echo "<OPTION value='"; 23 echo $row[0]; 24 echo "'>".$row[1].""; 25 } 26 echo "</SELECT> 27 <FONT color='#00a5c6'>&nbsp&nbsp&nbspώρα:</font> 28 <SELECT name='hour'>"; 29 $sql="select id_hour,hour from hours order by id_hour"; 30 $result_d=mysql_query($sql, $conn) or die(mysql_error()); 31 echo "<OPTION value='*'>*"; 32 while($row=mysql_fetch_row($result_d)) 33 { 34 echo "<OPTION value='"; 35 echo $row[0]; 36 echo "'>".$row[1].""; 37 } 38 echo "</SELECT></TD>"; 39?> 40 <TD><INPUT type="submit" value="show"></td></tr> 41 </TABLE> 42 </FORM> 43 </BODY> 44 </HTML> Στη γραμμή 7, εμφανίζεται η ιδιότητα target με τιμή "dh" όπως το όνομα του πρώτου πλαισίου της σελίδας chdh.html. Αυτή η ιδιότητα καθορίζει τον προορισμό της σελίδας (γιατί βρίσκεται μέσα στο tag BODY) που όπως φαίνεται θα εμφανίζεται στο πρώτο αυτό πλαίσιο. Στη γραμμή 8, δημιουργείται η φόρμα της σελίδας "choosedh.php" και πατώντας το κουμπί υποβολής της φόρμας που υλοποιείται στη 59

66 γραμμή 40, θα εμφανίζεται στο δεύτερο πλαίσιο της σελίδας chdh.html, η σελίδα "usageofrooms.php" λόγω της ιδιότητας target με τιμή "rooms" (μέσα στο tag FORM), όπως το όνομα του δεύτερου πλαισίου της σελίδας. Στη γραμμή 10, ξεκινά η σχεδίαση του πίνακα για την επιλογή ημέρας και ώρας για την εμφάνιση των μη διαθέσιμων αιθουσών. Δημιουργείται ο τίτλος ΕΠΙΛΟΓΗ ΗΜΕΡΑΣ ΚΑΙ ΩΡΑΣ γραμμή 11. Δημιουργείται ο τίτλος Ημέρα: γραμμή 12- και ξεκινά ένα μενού επιλογών με τις ημέρες του προγράμματος, με όνομα "day" γραμμή 13. Με το ερώτημα: "select id_day,day from days order by id_day", γραμμή 17 ανακτώνται από τη βάση δεδομένων οι ημέρες του προγράμματος για τη δημιουργία των επιλογών του μενού επιλογών. Στη γραμμή 19, δημιουργείται η πρώτη επιλογή του μενού, η οποία είναι το (*), που δηλώνει την επιλογή όλων των ημερών του προγράμματος και στις γραμμές 20 έως 25 δημιουργούνται οι υπόλοιπες επιλογές των ημερών. Στη γραμμή 27, δημιουργείται ο τίτλος του επόμενου μενού επιλογών για τις ώρες, με τίτλο Ώρα: και στη γραμμή 28 η έναρξη της δημιουργίας του, με όνομα 'hour'. Με το ερώτημα: "select id_hour,hour from hours order by id_hour", γραμμή 29 ανακτώνται από τη βάση δεδομένων οι ώρες του προγράμματος για τη δημιουργία των επιλογών του μενού επιλογών. Όπως και παραπάνω, στη γραμμή 31 δημιουργείται η επιλογή που υποδηλώνει τη μαζική επιλογή των ωρών και στις γραμμές 32 έως 37 οι λοιπές επιλογές. Τέλος, στη γραμμή 40, δημιουργείται το κουμπί υποβολής της φόρμας με τίτλο "Show", η οποία στέλνει τις επιλογές του χρήστη για τη μέρα και την ώρα που επιθυμεί να εξετάσει τη διαθεσιμότητα των αιθουσών, στη σελίδα "usageofrooms.php". 60

67 Παρακάτω, εμφανίζεται ο κώδικας της σελίδας "usageofrooms.php" του δεύτερου πλαισίου: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title></title> 6 </head> 7 <BODY bgcolor="silver" target="rooms"> 8 <TABLE border=0 align="center" cellpadding=0 cellspacing=0> 9 <TR><TD align="center"><font color="#00a5c6" size=5><b><u>κατειλημμενεσ ΑΙΘΟΥΣΕΣ</U></B></FONT> 10 <TABLE border=1 align="center" bgcolor="#c6eff7" cellpadding=0 cellspacing=0 wigth=50% height=50%> 11 <? 12 $conn=mysql_connect("localhost", "margarita", "100"); 13 mysql_select_db("laboratoriesdb"); 14 $day=$_post['day']; 15 $hour=$_post['hour']; 16 $sql="select room from rooms order by id_room"; 17 $result=mysql_query($sql, $conn) or die(mysql_error()); 18 $num=mysql_num_rows($result); 19 $roomsarray=array(); 20 $r=0; 61

68 21 while($row_rooms=mysql_fetch_array($result)) 22 { 23 $roomsarray[$r]=$row_rooms['room']; $r++; 24 } //Αν ο χρήστης έχει επιλέξει να εμφανιστούν όλες οι ώρες και οι μέρες. 25 if($day=='*' && $hour=='*') 26 { //Καταχωρώ τις ώρες σε έναν πίνακα. 27 $sql="select hour from hours order by id_hour"; 28 $result_hour=mysql_query($sql, $conn) or die(mysql_error()); 29 $t=0; 30 $hoursarray=array(); 31 while ($row_hour=mysql_fetch_array($result_hour)) 32 { 33 $hoursarray[$t]=$row_hour['hour']; $t++; 34 } 35 $num_hours=$t; 36 $t=0; //Καταχωρώ τις μέρες σε έναν πίνακα 37 $sql="select day from days order by id_day"; 38 $result_day=mysql_query($sql, $conn) or die(mysql_error()); 39 $d=0; 40 $daysarray=array(); 41 while ($row_day=mysql_fetch_array($result_day)) 42 { 43 $daysarray[$d]=$row_day['day']; $d++; 62

69 44 } 45 $num_days=$d; //Αφήνω ένα κενό κελί 46 echo '<TR><TD bgcolor=#94d6e7>&nbsp</td>'; //Εμφανίζω τις μέρες στον πίνακα 47 for($w=0;$w<$num_days;$w++) 48 { 49 echo '<TD align=center bgcolor=#94d6e7 colspan='.$num.'>'.$daysarray[$w].'</td>'; 50 } //Αλλάζω γραμμή στον πίνακα, αφήνω ένα κενό κελί και εμφανίζω τις αίθουσες 51 echo '</TR><TR><TD bgcolor=#94d6e7>&nbsp</td>'; 52 for($w=0;$w<$num_days;$w++) 53 { 54 for($e=0;$e<$num;$e++) 55 { 56 echo '<TD bgcolor=#94d6e7 style="writing-mode: tb-rl;">'; 57 echo $roomsarray[$e]; 58 echo '</TD>'; 59 } 60 } //Εμφανίζω την πρώτη ώρα στην επόμενη γραμμή του πίνακα 61 echo '</TR><TR><TD bgcolor=#94d6e7>'.$hoursarray[$t].'</td>'; 62 $t++; 63

70 //Παίρνω στοιχεία από τη βάση για τις αίθουσες του προγράμματος 63 $i=1; 64 $j=1; 65 $sql_rooms="select id_day,id_hour,id_room from schedule order by id_hour,id_day,id_room"; 66 $result_rooms=mysql_query($sql_rooms, $conn) or die(mysql_error()); 67 while ($row_rooms=mysql_fetch_row($result_rooms)) 68 { //Αφήνω μια κενή γραμμή στην ώρα που δεν απασχολεί αίθουσες 69 while ($row_rooms[1]>$i) 70 { 71 for ($e=0;$e<$num*($num_days-$j)+1;$e++) echo '<TD>&nbsp</TD>'; 72 $j=1; 73 echo '</TR><TR><TD bgcolor=#94d6e7>'.$hoursarray[$t].'</td>'; 74 $t++; 75 $i++; 76 } 77 if ($row_rooms[1]==$i) 78 { 79 for ($e=0;$e<$num*($row_rooms[0]-1)+$row_rooms[2]-$j;$e++) 80 echo '<TD>&nbsp</TD>'; 81 echo '<TD bgcolor="black">&nbsp</td>'; 82 $j=$num*($row_rooms[0]-1)+$row_rooms[2]+1; 83 } 84 } 85 for ($e=0;$e<$num*$num_days-$j+1;$e++) 86 echo '<TD>&nbsp</TD>'; 64

71 87 echo '</TR>'; 88 while ($i<$num_hours) 89 { 90 echo '<TR><TD bgcolor=#94d6e7>'.$hoursarray[$t].'</td>'; 91 $t++; 92 for ($e=0;$e<$num*$num_days;$e++) 93 echo '<TD>&nbsp</TD>'; 94 echo '</TR>'; 95 $i++; 96 } 97 }//if //Αν ο χρήστης έχει επιλέξει να εμφανιστούν όλες οι μέρες για μια συγκεκριμένη ώρα. 98 if($day=='*' && $hour!='*') 99 { //Ανακτώ την επιλεγμένη ώρα από τη βάση 100 $sql="select hour from hours where id_hour={$hour}"; 101 $result_hour=mysql_query($sql, $conn) or die(mysql_error()); 102 $row_hour=mysql_fetch_array($result_hour); //Καταχωρώ τις μέρες σε έναν πίνακα 103 $sql="select day from days order by id_day"; 104 $result_day=mysql_query($sql, $conn) or die(mysql_error()); 105 $d=0; 106 $daysarray=array(); 107 while ($row_day=mysql_fetch_array($result_day)) 108 { 109 $daysarray[$d]=$row_day['day']; $d++; 110 } 65

72 111 $num_days=$d; //Αφήνω ένα κενό κελί και εμφανίζω τις μέρες 112 echo "<TR><TD bgcolor=#94d6e7>&nbsp</td>"; 113 for($w=0;$w<$num_days;$w++) 114 { 115 echo '<TD align=center bgcolor=#94d6e7 colspan='.$num.'>'.$daysarray[$w].'</td>'; 116 } //Αφήνω ένα κενό κελί και εμφανίζω τις αίθουσες 117 echo '</TR><TR><TD bgcolor=#94d6e7>&nbsp</td>'; 118 for($w=0;$w<$num_days;$w++) 119 { 120 for($e=0;$e<$num;$e++) 121 { 122 echo '<TD bgcolor=#94d6e7 style="writing-mode: tb-rl;">'; 123 echo $roomsarray[$e]; 124 echo '</TD>'; 125 } 126 } //Εμφανίζω την επιλεγμένη ώρα 127 echo '</TR><TR><TD bgcolor=#94d6e7>'.$row_hour[0].'<br><br></td>'; 128 $j=1; 129 $sql_rooms="select id_day,id_hour,id_room from schedule where id_hour={$hour} order by id_day,id_room"; 130 $result_rooms=mysql_query($sql_rooms, $conn) or die(mysql_error()); 131 while($row_rooms=mysql_fetch_row($result_rooms)) 66

73 132 { 133 for ($e=0;$e<$num*($row_rooms[0]-1)+$row_rooms[2]-$j;$e++) 134 echo '<TD>&nbsp</TD>'; 135 echo '<TD bgcolor="black">&nbsp</td>'; 136 $j=$num*($row_rooms[0]-1)+$row_rooms[2]+1; 137 } 138 for ($e=0;$e<$num*$num_days-$j-3;$e++) echo '<TD>&nbsp</TD>'; 139 echo '</TR>'; 140 }//if // Αν ο χρήστης έχει επιλέξει να εμφανιστούν όλες οι ώρες για μια συγκεκριμένη μέρα. 141 if($day!='*'&& $hour=='*') 142 { //Καταχωρώ τις ώρες σε έναν πίνακα 143 $sql="select hour from hours order by id_hour"; 144 $result_hour=mysql_query($sql, $conn) or die(mysql_error()); 145 $t=0; 146 $hoursarray=array(); 147 while ($row_hour=mysql_fetch_array($result_hour)) 148 { 149 $hoursarray[$t]=$row_hour['hour'];$t++;} 150 $num_hours=$t; 151 $t=0; //Παίρνω την επιλεγμένη ώρα από τη βάση 152 $sql="select day from days where id_day={$day}"; 153 $result_day=mysql_query($sql, $conn) or die(mysql_error()); 154 $row_day=mysql_fetch_array($result_day); 67

74 //Αφήνω ένα κενό κελί και εμφανίζω τη μέρα 155 echo '<TR><TD bgcolor=#94d6e7>&nbsp</td>'; 156 echo '<TD align=center bgcolor=#94d6e7 colspan='.$num.'>'.$row_day[0].'</td></tr>'; //Αφήνω ένα κενό κελί και εμφανίζω τις αίθουσες 157 echo '<TR><TD bgcolor=#94d6e7>&nbsp</td>'; 158 for($e=0;$e<$num;$e++) 159 { 160 echo '<TD bgcolor=#94d6e7 style="writing-mode: tb-rl;">'; 161 echo $roomsarray[$e]; 162 echo '</TD>'; 163 } //Εμφανίζω την πρώτη ώρα 164 echo '</TR><TR><TD bgcolor=#94d6e7>'.$hoursarray[$t].'<br><br></td>'; 165 $t++; 166 $sql_rooms="select id_day,id_hour,id_room from schedule where id_day={$day} order by id_hour,id_room"; 167 $result_rooms=mysql_query($sql_rooms, $conn) or die(mysql_error()); 168 $j=1; 169 $i=1; //Αφήνω μια κενή γραμμή στην ώρα που δεν απασχολεί αίθουσες 170 while ($row_rooms=mysql_fetch_row($result_rooms)) 171 { 172 while ($row_rooms[1]>$i) 68

75 173 { 174 for ($e=0;$e<$num-$j+1;$e++) echo '<TD>&nbsp</TD>'; 175 $j=1; 176 echo '</TR><TR><TD bgcolor=#94d6e7>'.$hoursarray[$t].'</td>'; 177 $t++; 178 $i++; 179 } 180 if ($row_rooms[1]==$i) 181 { 182 for ($e=0;$e<$row_rooms[2]-$j;$e++) echo '<TD>&nbsp</TD>'; 183 echo '<TD bgcolor="black">&nbsp</td>'; 184 $j=$row_rooms[2]+1; 185 } 186 } 187 for ($e=0;$e<$num-$j+1;$e++) echo '<TD>&nbsp</TD>'; 188 echo '</TR>'; 189 while ($i<$num_hours) 190 { 191 echo '<TR><TD bgcolor=#94d6e7>'.$hoursarray[$t].'</td>'; 192 $t++; 193 for ($e=0;$e<$num;$e++) echo '<TD>&nbsp</TD>'; 194 echo '</TR>'; 195 $i++; 196 } 197 }//if // Αν ο χρήστης έχει επιλέξει να εμφανιστεί μια συγκεκριμένη μέρα και ώρα. 69

76 198 if($day!='*' && $hour!='*') 199 { 200 $sql="select hour from hours where id_hour={$hour}"; 201 $result_hour=mysql_query($sql, $conn) or die(mysql_error()); 202 $row_hour=mysql_fetch_array($result_hour); 203 $sql="select day from days where id_day={$day}"; 204 $result_day=mysql_query($sql, $conn) or die(mysql_error()); 205 $row_day=mysql_fetch_array($result_day); 206 echo '<TR><TD bgcolor=#94d6e7>&nbsp</td>'; 207 echo '<TD align=center bgcolor=#94d6e7 colspan='.$num.'>'.$row_day[0].'</td>'; 208 echo '<TR><TD bgcolor=#94d6e7>&nbsp</td>'; 209 for($e=0;$e<$num;$e++) 210 { 211 echo '<TD bgcolor=#94d6e7 style="writing-mode: tb-rl;">'; 212 echo $roomsarray[$e]; 213 echo '</TD>'; 214 } 215 echo '<TR><TD bgcolor=#94d6e7>'.$row_hour[0].'<br><br></td>'; 216 $sql_rooms="select id_day,id_hour,id_room from schedule where id_hour={$hour} and id_day={$day} order by id_room"; 217 $result_rooms=mysql_query($sql_rooms, $conn) or die(mysql_error()); 218 $j=1; 219 while ($row_rooms=mysql_fetch_row($result_rooms)) 70

77 220 { 221 for ($e=0;$e<$row_rooms[2]-$j;$e++) echo'<td>&nbsp</td>'; 222 echo '<TD bgcolor="black">&nbsp</td>'; 223 $j=$row_rooms[2]+1; 224 } 225 for ($e=0;$e<$num-$j;$e++) echo '<TD>&nbsp</TD>'; 226 }//if 227?> 228 </TABLE> 229 </TD></TR> 230 </TABLE> 231 </BODY> 232 </HTML> Ο παραπάνω κώδικας περιγράφει τέσσερις διαφορετικές ενέργειες. Η πρώτη περιγράφει τη λειτουργία της εφαρμογής όταν ο χρήστης επιλέξει να εμφανιστούν οι αίθουσες που απασχολούνται για όλες τις μέρες και τις ώρες γραμμές 25 έως 97. Η δεύτερη περιγράφει τη λειτουργία της εφαρμογής όταν ο χρήστης επιλέξει να εμφανιστούν οι αίθουσες που απασχολούνται για όλες τις μέρες και για μια συγκεκριμένη ώρα γραμμές 98 έως 140. Η τρίτη περιγράφει τη λειτουργία της εφαρμογής για όλες τις ώρες και μια συγκεκριμένη μέρα γραμμές 141 έως 197. Τέλος, η τέταρτη περιγράφει τη λειτουργία της εφαρμογής για μια συγκεκριμένη ώρα και μια συγκεκριμένη μέρα γραμμές 198 έως 226. Πριν την περιγραφή των λειτουργιών, με το ερώτημα: "select room from rooms order by id_room", γραμμή 16 ανακτώνται από τη βάση δεδομένων τα ονόματα των αιθουσών που θα εμφανιστούν στο πρόγραμμα και καταχωρούνται σ έναν πίνακα με όνομα roomsarray γραμμές 21 έως 24. Όταν ο χρήστης επιλέξει να εμφανιστούν όλες οι μέρες και οι ώρες, προβάλλεται το παρακάτω σχήμα: 71

78 Σχήμα7. Προβολή όλων των ημερών και των ωρών Γραμμές 25 έως 97: Με τα ερωτήματα: "select hour from hours order by id_hour", γραμμή 27 "select day from days order by id_day", γραμμή 37 ανακτώνται από τη βάση δεδομένων όλες οι ώρες και οι μέρες και καταχωρούνται στους πίνακες hoursarray γραμμές 31 έως 34- και daysarray γραμμές 41 έως 44- αντίστοιχα. Σχεδιάζεται ο πίνακας εμφανίζοντας αρχικά τις ημέρες γραμμές 47 έως 50-, τις αίθουσες με τη χρήση του πίνακα roomsarray γραμμές 52 έως 60- και την πρώτη ώρα γραμμή 61. Με το ερώτημα της γραμμής 65: "select id_day,id_hour,id_room from schedule order by id_hour,id_day,id_room" ανακτώνται από τη βάση δεδομένων πληροφορίες για την εμφάνιση των αιθουσών στη σωστή θέση στον πίνακα. Ο βρόγχος της while που εκτελείται για τις γραμμές 67 έως 84, σχεδιάζει τον πίνακα για την εμφάνιση των απασχολούμενων αιθουσών σύμφωνα με τα 72

79 αποτελέσματα του παραπάνω ερωτήματος. Ο μετρητής i που εμφανίζεται στη γραμμή 69 και 77, δείχνει την γραμμή-ώρα στην οποία βρίσκεται η διαδικασία της σχεδίασης. Ελέγχεται λοιπόν αν το συγκεκριμένο αποτέλεσμα του ερωτήματος (γραμμή 69 και 77) αναφέρεται στη συγκεκριμένη γραμμή. Αν ναι, τότε ο αλγόριθμος στη γραμμή 79, σχεδιάζει κενά κελιά έως ότου φτάσει σ αυτό που πρέπει να σχεδιαστεί το χρωματισμένο (μαύρο) κελί ως υπόδειξη χρήσης της αντίστοιχης αίθουσας. Αφού σχεδιαστεί και το μαύρο κελί γραμμή 81- συνεχίζεται η επόμενη επανάληψη του βρόγχου για την επόμενη γραμμή αποτελέσματος. Αν η συγκεκριμένη γραμμή αποτελέσματος, δεν αναφέρεται στη γραμμή όπου βρίσκεται η διαδικασία της σχεδίασης, τότε σχεδιάζεται μια κενή γραμμή χωρίς χρωματισμένα κελιά γραμμές 69 έως 76. Στις γραμμές 85 έως 87, αν κάποια γραμμή δεν θα εμφανίσει κάποια άλλη αίθουσα ως απασχολούμενη, συμπληρώνεται με κενά κελιά. Τέλος, αν η προβολή των απασχολούμενων αιθουσών τελειώσει και ο πίνακας του προγράμματος δεν έχει ολοκληρωθεί, συμπληρώνεται με κενές γραμμές γραμμές 88 έως 96. Για το σχεδιασμό του πίνακα του προγράμματος για τις υπολειπόμενες δυνατές επιλογές του χρήστη, χρησιμοποιείται η ίδια διαδικασία όπως παραπάνω. Η δεύτερη δυνατή επιλογή του χρήστη, είναι η επιλογή όλων των ημερών και μιας συγκεκριμένης ώρας γραμμές 98 έως 140. Αρχικά ανακτώνται από τη βάση δεδομένων η επιλεγμένη ώρα με το ερώτημα: "select hour from hours where id_hour={$hour}", γραμμή 100 και οι ημέρες οι οποίες καταχωρούνται σ έναν πίνακα με το ερώτημα: "select day from days order by id_day", γραμμήη 103 Έπειτα, εμφανίζονται οι μέρες -γραμμές 113 έως 116- και οι αίθουσες στον πίνακα γραμμές 118 έως 126. Εμφανίζεται η επιλεγμένη ώρα γραμμή 127- και ακολουθεί το ερώτημα: "select id_day,id_hour,id_room from schedule where id_hour={$hour} order by id_day,id_room", γραμμή 129 με το οποίο ανακτώνται από τη βάση δεδομένων πληροφορίες για την εμφάνιση των αιθουσών με τη σωστή σειρά. 73

80 Επειδή επιλέγεται μόνο μια ώρα να εμφανίζεται, ο πίνακας θα έχει μια γραμμή για να εμφανιστούν οι αίθουσες. Έτσι, στις γραμμές 131 έως 137, με τον αλγόριθμο της γραμμής 79, εμφανίζονται τα χρωματισμένα κελιά στον πίνακα που υποδηλώνουν τη μη διαθεσιμότητα των αντίστοιχων αιθουσών. Τέλος, στη γραμμή 138, συμπληρώνεται ο πίνακας με κενά κελιά αν δεν έχει ολοκληρωθεί η σχεδίασή του με τις απασχολούμενες αίθουσες. Σχήμα8. Προβολή όλων των ημερών και μιας ώρας Η τρίτη δυνατή επιλογή του χρήστη είναι να ζητήσει την εμφάνιση όλων των ωρών και μιας συγκεκριμένης μέρας γραμμές 141 έως 197. Για τη σχεδίαση αυτού του πίνακα αρχικά ανακτώνται από τη βάση δεδομένων όλες οι ώρες και η μέρα με τα παρακάτω ερωτήματα: "select hour from hours order by id_hour", γραμμή 143 "select day from days where id_day={$day}", γραμμή 152 Έπειτα, ξεκινά η σχεδίαση του πίνακα. Στη γραμμή 156, εμφανίζεται η μέρα, στις γραμμές 158 έως 163, εμφανίζονται οι αίθουσες και στη γραμμή 164, εμφανίζεται η ώρα. Με το ερώτημα: 74

81 "select id_day,id_hour,id_room from schedule where id_day={$day} order by id_hour,id_room", γραμμή 166 ανακτώνται από τη βάση δεδομένων πληροφορίες για την εμφάνιση των αιθουσών με τη σωστή σειρά. Στη συνέχεια, εκτελείται η while στις γραμμές 170 έως 186 για την εμφάνιση των χρωματισμένων κελιών. Τέλος, συμπληρώνεται η γραμμή στην οποία βρίσκεται η σχεδίαση με κενά κελιά γραμμή 187- και συμπληρώνεται ο πίνακας με κενές γραμμές αν αυτό είναι απαραίτητο γραμμές 189 έως 196. Σχήμα9. Προβολή όλων των ωρών και μιας ημέρας Τέλος, η τέταρτη δυνατή επιλογή του χρήστη όπου μπορεί να επιλέξει μία συγκεκριμένη ώρα και μέρα για να δει τη διαθεσιμότητα των αιθουσών, σχεδιάζεται όπως οι παραπάνω. Με τα παρακάτω δύο ερωτήματα, ανακτώνται από τη βάση δεδομένων η ημέρα και η ώρα της επιλογής του χρήστη: "select hour from hours where id_hour={$hour}", γραμμή

82 "select day from days where id_day={$day}", γραμμή 203 Έπειτα, σχεδιάζεται στον πίνακα η μέρα, οι αίθουσες και η ώρα και ακολουθεί το ερώτημα: "select id_day,id_hour,id_room from schedule where id_hour={$hour} and id_day={$day} order by id_room", γραμμή 216 με το οποίο ανακτώνται από τη βάση πληροφορίες για την εμφάνιση των αιθουσών με τη σωστή σειρά. Τέλος, εκτελείται η while με μια μικρή τροποποίηση του αλγορίθμου που χρησιμοποιήθηκε στις προηγούμενες ενέργειες. Σχήμα10. Προβολή μιας συγκεκριμένης μέρας και ώρας 76

83 Προβολή Σπουδαστών ανά Μάθημα Με την επιλογή της δραστηριότητας Φοιτητές ανά επιλεγμένο εργαστήριο από τον χρήστη, εμφανίζεται αρχικά η παρακάτω σελίδα: Σχήμα11. Επιλογή ομάδας εργαστηρίου Για την προβολή του σχήματος 11, χρησιμοποιήθηκε ο παρακάτω κώδικας: 1 <FRAMESET frameborder=0 rows="20%, *"> 2 <FRAME src="choose483lesson.php" name="lesson" marginwidth=0 marginheight=0> 3 <FRAME src="empty.html" name="omada" marginwidth=0 marginheight=0> 4 </FRAMESET> Η σελίδα 483.html αποτελείται από μια διάταξη πλαισίων. Δύο πλαίσια που αλληλεξαρτώνται. Τα πλαίσια δημιουργούνται με το tag <FRAMESET> το οποίο έχει την ιδιότητα frameborder=0 για να μην εμφανίζονται τα περιγράμματα των πλαισίων. Με την ιδιότητα rows σχεδιάζονται δύο οριζόντια πλαίσια, το πρώτο 77

84 αποτελεί το 20% του παραθύρου και το δεύτερο καταλαμβάνει το υπόλοιπο παράθυρο (*). Έπειτα, το tag <FRAME> με την ιδιότητά του src επιτρέπει την αντιστοίχιση ενός URL στο αντίστοιχο πλαίσιο. Η ιδιότητα name χαρακτηρίζει το πλαίσιο και οι ιδιότητες marginwidth και marginheight καθορίζουν το μέγεθος των ορίων του πλαισίου από τα περιεχόμενά του. Έτσι, στο πρώτο πλαίσιο θα εμφανίζεται η σελίδα "choose483lesson.php" και στο δεύτερο η σελίδα "empty.html". Το όνομα του πρώτου πλαισίου θα είναι "lesson" και του δεύτερου "omada". Η σελίδα "empty.html" είναι μία κενή σελίδα όπου εμφανίζεται μόνο στην πρώτη εμφάνιση του πλαισίου ώστε η προσοχή του χρήστη να προσηλώνετε στο πρώτο πλαίσιο από όπου θα ξεκινήσει τις ενέργειές του, ώστε να εμφανίσει τους φοιτητές κάποιας εργαστηριακής ομάδας. Παρακάτω, εμφανίζεται ο κώδικας της σελίδας "choose483lesson.php" του πρώτου πλαισίου: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title>φοιτητές ανά επιλεγμένο εργαστήριο</title> 6 </head> 7 <BODY bgcolor="silver" target="lesson"> 8 <FORM action="omades483ergastirion.php" method="post" target="omada"> 9 <BR><BR><BR> 10 <TABLE border=0 align="center" bgcolor="#c6eff7"width=50% height=50%> 11 <TR><TD><FONT color="#00a5c6"><u>επιλογή μαθήματος:</u></font></td> 12 <TD><SELECT name="lesson"> 13 <? 14 $conn=mysql_connect("localhost", "margarita", "100"); 15 mysql_select_db("laboratoriesdb"); 16 $sql="select id_lesson,name from lessons where quality='ε'"; 17 $result=mysql_query($sql, $conn) or die(mysql_error()); 78

85 18 while($row=mysql_fetch_row($result)) 19 { 20 echo "<OPTION value='"; 21 echo $row[0]; 22 echo "'>".$row[1]."&nbspe"; 23 } 24 echo "</SELECT></TD> 25 <TD><FONT color='#00a5c6'> Ομάδα:</FONT> 26 <SELECT name='group'>"; 27 echo "<OPTION value=*>*"; 28 for($i=1;$i<10;$i++) 29 { 30 echo "<OPTION value=".$i.">".$i; 31 } 32 echo "</SELECT></TD>"; 33?> 34 <TD><INPUT type="submit" value="show"></td></tr> 35 </TABLE> 36 </FORM> 37 </BODY> 38 </HTML> Στη γραμμή 7, εμφανίζεται η ιδιότητα target με τιμή "lesson" όπως το όνομα του πρώτου πλαισίου της σελίδας 483.html. Αυτή η ιδιότητα καθορίζει τον προορισμό της σελίδας (γιατί βρίσκεται μέσα στο tag BODY) που όπως φαίνεται θα εμφανίζεται στο πρώτο αυτό πλαίσιο. Στη γραμμή 8, δημιουργείται η φόρμα της σελίδας "choose483lesson.php" και πατώντας το κουμπί υποβολής της φόρμας που υλοποιείται στη γραμμή 33, θα εμφανίζεται στο δεύτερο πλαίσιο της σελίδας 483.html, η σελίδα "omades483ergastirion.php" λόγω της ιδιότητας target με τιμή "omada" (μέσα στο tag FORM), όπως το όνομα του δεύτερου πλαισίου της σελίδας. Στη γραμμή 10, ξεκινά η σχεδίαση του πίνακα για την επιλογή εργαστηριακού μαθήματος και της ομάδας αυτού. Δημιουργείται ο τίτλος Επιλογή μαθήματος: γραμμή 11, και ένα μενού επιλογών με τα εργαστηριακά μαθήματα, με όνομα 'lesson' γραμμή 12. Στη γραμμή 13 ξεκινά η εγγραφή του php κώδικα. Με το ερώτημα: 79

86 "select id_lesson,name from lessons where quality='ε'" ανακτώνται από τη βάση δεδομένων όλα τα εργαστηριακά μαθήματα γραμμή 16. Στις γραμμές 18 έως 23, δημιουργούνται οι επιλογές του μενού επιλογών. Έπειτα, δημιουργείται το δεύτερο μενού επιλογών όπου ο χρήστης μπορεί να επιλέξει ποια ομάδα του συγκεκριμένου εργαστηριακού μαθήματος επιθυμεί να εμφανίσει. Ο τίτλος του δεύτερου μενού επιλογών είναι Ομάδα: - γραμμή 25 και το όνομα του 'group' γραμμή 26. Στις γραμμές 27 έως 31, δημιουργούνται οι επιλογές για το δεύτερο μενού επιλογών. Τέλος, στη γραμμή 34 δημιουργείται το κουμπί υποβολής με τίτλο Show. Πατώντας το κουμπί υποβολής Show, στο δεύτερο πλαίσιο της σελίδας 483.html, εμφανίζεται η σελίδα "omades483ergastirion.php" όπως φαίνεται στο σχήμα12. Σχήμα12. Εμφάνιση ομάδων εργαστηρίων 80

87 Ο κώδικας της σελίδας αυτής φαίνεται παρακάτω: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title>εμφάνιση ομάδων εργαστηρίων</title> 6 </head> 7 <BODY bgcolor="silver"> 8 <? 9 $conn=mysql_connect("localhost", "margarita", "100"); 10 mysql_select_db("laboratoriesdb"); 11 $lesson=$_post['lesson']; 12 $group=$_post['group']; 13 echo" <TABLE border=0 align='center' bgcolor='#c6eff7' width=50% height=50%>"; 14 echo "<TR><TD align='center' colspan=2><br>"; 15 $sql="select id_lesson,name,groups from lessons where quality='ε' order by id_lesson"; 16 $result=mysql_query($sql, $conn) or die(mysql_error()); 17 while($row_schedule=mysql_fetch_row($result)) 18 { 19 if($lesson==$row_schedule[0]) 20 { 21 echo "<U><B>".$row_schedule[1]."</B></U>"; 22 echo "</TD></TR>"; 23 if($group!="*") 24 { 25 $sql_group="select id_day,id_hour,id_room from schedule where id_lesson={$row_schedule[0]} and groups={$group}"; 26 $result_group=mysql_query($sql_group, $conn) or die(mysql_error()); 27 $row_group=mysql_fetch_row($result_group); 28 } else{ 81

88 29 $sql_group="select id_day,id_hour,id_room from schedule where id_lesson={$row_schedule[0]}"; 30 $result_group=mysql_query($sql_group, $conn) or die(mysql_error()); 31 $row_group=mysql_fetch_row($result_group); 32 } 33 $sql_day="select day from days where id_day={$row_group[0]}"; 34 $result_day=mysql_query($sql_day, $conn) or die(mysql_error()); 35 $row_day=mysql_fetch_row($result_day); 36 $sql_hour="select hour from hours where id_hour={$row_group[1]}"; 37 $result_hour=mysql_query($sql_hour, $conn) or die(mysql_error()); 38 $row_hour=mysql_fetch_row($result_hour); 39 $sql_room="select room from rooms where id_room={$row_group[2]}"; 40 $result_room=mysql_query($sql_room, $conn) or die(mysql_error()); 41 $row_room=mysql_fetch_row($result_room); 42 echo "<TR><TD colspan=2>"; 43 if($group!="*"){echo "E".$group;} else{echo "E";} 44 echo "( "; 45 echo $row_day[0]; 46 echo ", "; 47 echo $row_hour[0]; 48 echo ", "; 49 echo $row_room[0].")"; 50 echo "</TD></TR>"; 51 $users=array(); 52 $u=0; 53 echo "<TR><TD align='center'><br><br><table border=1 align='center' rules=none width=100% height=50% bgcolor='#94d6e7'>"; 54 if($group!="*"){ 55 $sql_parts="select id_user from participation where id_lesson={$row_schedule[0]} and groups={$group}"; 56 $result_parts=mysql_query($sql_parts, $conn) or die(mysql_error()); 82

89 57 } else { 58 $sql_parts="select id_user from participation where id_lesson={$row_schedule[0]}"; 59 $result_parts=mysql_query($sql_parts, $conn) or die(mysql_error()); 60 } 61 while($row_parts=mysql_fetch_row($result_parts)) 62 { 63 $sql_name_user="select l_name,f_name,aem,id_user from students where id_user={$row_parts[0]}"; 64 $result_name_user=mysql_query($sql_name_user, $conn)or die(mysql_error()); 65 $row_name_user=mysql_fetch_row($result_name_user); 66 if(!in_array($row_name_user[3], $users)) 67 { 68 echo "<TR><TD align='left'>&nbsp"; 69 echo $row_name_user[0]." ".$row_name_user[1]; 70 echo "</TD><TD align='right'>&nbsp"; 71 echo $row_name_user[2]; 72 echo "</TD></TR>"; 73 } 74 $users[$u]=$row_name_user[3]; 75 $u++; 76 } 77 echo "</table></td></tr>"; 78 } 79 } 80 echo "&nbsp</td></tr>"; 81 echo "</TABLE>"; 82?> 83 </BODY> 84 </HTML> Πατώντας το κουμπί υποβολής της φόρμας του πρώτου πλαισίου στέλνονται στη σελίδα του δεύτερου πλαισίου πληροφορίες σχετικά με το μάθημα και την ομάδα του μαθήματος για τα οποία επιθυμεί ο χρήστης να εμφανίσει τους συμμετέχοντες. 83

90 Στις γραμμές 11 και 12, ανακτώνται οι σχετικές πληροφορίες και στη γραμμή 13 ξεκινάει ο σχεδιασμός του πίνακα όπου θα εμφανίζονται τα ονόματα των συμμετεχόντων. Με το ερώτημα: "select id_lesson,name,groups from lessons where quality='ε' order by id_lesson", γραμμή 15 ανακτώνται από τη βάση δεδομένων όλα τα εργαστηριακά μαθήματα και αναζητείται το μάθημα που έχει επιλέξει ο χρήστης, γραμμή 19. Με την εύρεση του συγκεκριμένου μαθήματος, εκτυπώνεται στην οθόνη το όνομά του γραμμή 21. Έπειτα, ελέγχεται η ομάδα που έχει επιλεγεί από τον χρήστη. Αν έχει επιλέξει μια συγκεκριμένη ομάδα η ανάκτηση πληροφοριών από τη βάση δεδομένων γίνεται με το εξής ερώτημα: "select id_day,id_hour,id_room from schedule where id_lesson={$row_schedule[0]} and groups={$group}", γραμμή 25 ενώ αν έχει επιλέξει το * που συμβολίζει το πλήθος των ομάδων, η ανάκτηση πληροφοριών από τη βάση δεδομένων γίνεται με το εξής ερώτημα: "select id_day,id_hour,id_room from schedule where id_lesson={$row_schedule[0]}", γραμμή 29 με τα παραπάνω δύο ερωτήματα οι πληροφορίες που ανακτώνται είναι τα ids της μέρας, της ώρας και της αίθουσας για το συγκεκριμένο μάθημα και αν έχει επιλεγεί συγκεκριμένη ομάδα και της ομάδας αυτής. Στις γραμμές 33 έως 41, με τα ερωτήματα: "select day from days where id_day={$row_group[0]}", γραμμή 33 "select hour from hours where id_hour={$row_group[1]}", γραμμή 36 "select room from rooms where id_room={$row_group[2]}", γραμμή 39 ανακτώνται πληροφορίες σχετικά με τη μέρα, την ώρα και την αίθουσα όπου διεξάγεται το συγκεκριμένο μάθημα, από τους αντίστοιχους πίνακες της βάσης δεδομένων. Στη γραμμή 43, εκτυπώνεται στην οθόνη το γράμμα Ε που χαρακτηρίζει το εργαστηριακό μάθημα και αν έχει επιλεγεί συγκεκριμένη ομάδα και ο αριθμός της ομάδας αυτής. Ακολούθως, στις γραμμές 44 έως 49, εκτυπώνεται στην οθόνη, η 84

91 αντίστοιχη ημέρα, ώρα και αίθουσα όπου διεξάγεται το συγκεκριμένο μάθημα. Με τα ερωτήματα: "select id_user from participation where id_lesson={$row_schedule[0]} and groups={$group}", γραμμή 55 "select id_user from participation where id_lesson={$row_schedule[0]}", γραμμή 58 ανακτώνται τα ids των users που έχουν δηλώσει συμμετοχή στο συγκεκριμένο μάθημα. Στη γραμμή 63, με το ερώτημα: "select l_name,f_name,aem,id_user from students where id_user={$row_parts[0]}" ανακτώνται πληροφορίες όπως το επώνυμο, το όνομα και το Α.Ε.Μ. των παραπάνω users. Με τα στοιχεία που επιστρέφει αυτό το ερώτημα μπορούν να εμφανιστούν στην οθόνη τα ονόματα και τα Α.Ε.Μ. των σπουδαστών. Τέλος, ο κώδικας που εμφανίζει τα παραπάνω στοιχεία περιγράφεται στις γραμμές 66 έως 73 και χρησιμοποιείται ένας βοηθητικός πίνακας ονόματος users, που δημιουργείται στη γραμμή 51, έτσι ώστε να αποφευχθούν επαναλήψεις ονομάτων. Η κενή σελίδα empty.html που εμφανίζεται αρχικά στο δεύτερο πλαίσιο δημιουργείται με τον παρακάτω κώδικα: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 </head> 6 <BODY bgcolor="silver"> 7 </BODY> 8 </HTML> όπως φαίνεται ο παραπάνω κώδικας είναι πλήρως κατανοητός. 85

92 Συγκεντρωτικό Πρόγραμμα Με την επιλογή της δραστηριότητας Ωρολόγιο πρόγραμμα μαθημάτων από τον χρήστη, εμφανίζεται αρχικά η παρακάτω σελίδα: Σχήμα13. Επιλογή εργαστηρίου Στη σελίδα αυτή ο χρήστης καλείται να επιλέξει το εξάμηνο για το οποίο επιθυμεί να εμφανιστεί το εβδομαδιαίο πρόγραμμα μαθημάτων. Αφού επιλέξει το εξάμηνο και πατήσει το κουμπί υποβολής ok, εμφανίζεται η παρακάτω σελίδα: Σχήμα14. Προβολή εβδομαδιαίου προγράμματος μαθημάτων 86

93 κώδικας: Για την προβολή των σχημάτων 13 και 14, χρησιμοποιήθηκε ο παρακάτω 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title>ωρολόγιο πρόγραμμα μαθημάτων</title> 6 </head> 7 <BODY bgcolor="silver"> 8 <FORM action="choosesemester.php" method="post"> 9 <TABLE border=0 align="center"> 10 <TR> 11 <TD>ΕΜΦΑΝΙΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΕΞΑΜΗΝΟΥ 12 <SELECT name="semester"> 13 <? 14 $conn=mysql_connect("localhost", "margarita", "100"); 15 mysql_select_db("laboratoriesdb"); 16 $username=$_post['username']; 17 $password=$_post['password']; 18 $sql_lessons="select id_semester,semester from semesters"; 19 $result_lessons=mysql_query($sql_lessons, $conn) or die(mysql_error()); 20 while($row_lessons=mysql_fetch_row($result_lessons)){echo "<OPTION value='".$row_lessons[0]."'>".$row_lessons[1]."";} 21 echo "</SELECT></TD>"; 22 echo "<TD><INPUT type='submit' value='ok'></td>"; 23 echo "<INPUT type='hidden' name='insert_sched' value=-1>"; 24 echo "<INPUT type='hidden' name='action' value='a'>"; 35 echo "<INPUT type='hidden' name='username' value='".$username."'>"; 36 echo "<INPUT type='hidden' name='password' value='".$password."'>"; 37 echo "</FORM>"; 87

94 38 echo "<TD><FORM action='choose.php' method='post' style='margin-bottom:0;margintop:0'>"; 39 echo "<BUTTON name='submit' value='submit' type='submit'><img src='home.gif'></button>"; 40 echo "<INPUT type='hidden' name='username' value='".$username."'>"; 41 echo "<INPUT type='hidden' name='password' value='".$password."'>"; 42 echo "</FORM></TD></TR>"; 43 $id_sem=$_post['semester']; 44 if($id_sem>0) 45 { 46 $sql_hour="select id_hour,hour from hours order by id_hour"; 47 $result_hour=mysql_query($sql_hour, $conn) or die(mysql_error()); 48 $t=0; 49 $hoursarray=array(); 50 while ($row_hour=mysql_fetch_array($result_hour)) {$hoursarray[$t]=$row_hour['hour'];$t++;} 51 $num_hours=$t; 52 $sql_day="select id_day,day from days order by id_day"; 53 $result_day=mysql_query($sql_day, $conn) or die(mysql_error()); 54 $d=0; 55 $daysarray=array(); 56 while($row_day=mysql_fetch_array($result_day)) $daysarray[$d]=$row_day['day'];$d++;} 57 $num_days=$d; 58 $sql="select semester from semesters where id_semester={$id_sem}"; 59 $result=mysql_query($sql, $conn) or die(mysql_error()); 60 $row=mysql_fetch_row($result); 61 $sql_ids="select id_lesson from lessons where id_semester={$id_sem}"; 62 $result_ids=mysql_query($sql_ids, $conn) or die(mysql_error()); 63 $ids=0; 64 while($row_ids=mysql_fetch_row($result_ids)) 65 { 66 if($ids==0) $ids_lessons=$row_ids[0]; 88

95 67 else $ids_lessons.=", ".$row_ids[0]; 68 $ids++; 69 } 70 $t=0; 71 $d=0; 72 echo "<table border=1 align='center' bgcolor='#c6eff7'>"; 73 echo "<tr><td colspan=6 align='center' bgcolor='#94d6e7'><b>".$row[0]."</b></td></tr>"; 74 echo "<tr><td bgcolor='#94d6e7' align='center'>&nbsp</td>"; 75 while($d<$num_days) 76 { 77 echo "<td bgcolor='#94d6e7' align='center'>".$daysarray[$d]."</td>"; 78 $d++; 79 } 80 $t=0; 81 $d=0; 82 echo "</tr>"; //HOURS 83 while($t<$num_hours) 84 { 85 echo "<tr><td bgcolor='#94d6e7'>".$hoursarray[$t]."</td>"; //DAYS //lessons 86 while($d<$num_days) 87 { 88 $sql_sched="select id_schedule,id_lesson,groups,id_room,students from schedule where id_day=($d+1) and id_hour=($t+1) and id_lesson IN ($ids_lessons)"; 89 $result_sched=mysql_query($sql_sched, $conn) or die(mysql_error()); 90 echo "<td>&nbsp"; 91 $m=0; 92 while($row_sched=mysql_fetch_row($result_sched)) 93 { 94 $id_less_sched=$row_sched[1]; 95 if($m==0) $all_sched=$id_less_sched; 96 else $all_sched.=", ".$id_less_sched; 89

96 97 $m++; 98 $sql_name="select name,quality from lessons where id_lesson={$id_less_sched}"; 99 $result_name=mysql_query($sql_name, $conn) or die(mysql_error()); 100 $row_name=mysql_fetch_row($result_name); 101 $sql_room="select room from rooms where id_room={$row_sched[3]}"; 102 $result_room=mysql_query($sql_room, $conn) or die(mysql_error()); 103 $row_room=mysql_fetch_row($result_room); 104 echo $row_name[0]." ".$row_name[1].$row_sched[2]."<br>"; 105 echo $row_room[0]." ".$row_sched[4]."<br>"; 106 } 107 echo "</td>"; 108 $d++; 109 } 110 echo "</tr>"; 111 $t++; $d=0; 112 } 113 echo "</table>"; 114 } 115?> 116 </TABLE> 117 </BODY> 118 </HTML> Ξεκινώντας την επεξήγηση του κώδικα της παραπάνω σελίδας, πρέπει να σημειωθεί ότι το πρώτο τμήμα, όπου ο χρήστης επιλέγει το εξάμηνο για το οποίο επιθυμεί να εμφανίσει το εβδομαδιαίο πρόγραμμα, λειτουργεί ακριβώς το ίδιο με το πρώτο τμήμα της σελίδας για την Εισαγωγή και Τροποποίηση του εβδομαδιαίου προγράμματος. Έτσι, δημιουργείται ένα μενού επιλογών για την επιλογή του εξαμήνου από τον χρήστη, γραμμές 12 έως 21. Με το ερώτημα: "select id_semester,semester from semesters", γραμμή 18 90

97 ανακτώνται από τη βάση δεδομένων πληροφορίες σχετικά με τα εξάμηνα για τη δημιουργία των επιλογών του μενού επιλογών, που υλοποιείται στη γραμμή 20. Στη γραμμή 22, δημιουργείται το κουμπί υποβολής με τίτλο ok καθώς και κάποια κρυφά στοιχεία. Στις γραμμές 38 έως 42, δημιουργείται το κουμπί υποβολής που επιστρέφει τον χρήστη στη σελίδα επιλογής διεργασίας. Στη γραμμή 43, η τιμή της μεταβλητής semester καταχωρείται στη μεταβλητή id_sem. Αν ο χρήστης δεν έχει επιλέξει κάποιο εξάμηνο τότε η τιμή της μεταβλητής αυτής θα είναι αρνητική και ίση με -1, την οποία παίρνει κατά την επιλογή της διεργασίας από τον χρήστη, όπως φαίνεται στη γραμμή 45 του κώδικα της σελίδας για την επιλογή διεργασίας. Έτσι, δε θα εμφανιστεί τίποτε άλλο πέραν του μενού επιλογών για την επιλογή εξαμήνου. Αυτό θα συμβεί γιατί προϋπόθεση για την εμφάνιση κάποιου προγράμματος είναι η επιλογή εξαμήνου. Στη γραμμή 44 φαίνεται ο έλεγχος που γίνεται για την τήρηση αυτού του κανόνα. Σε αντίθετη περίπτωση, όπου ο χρήστης έχει επιλέξει το εξάμηνο που επιθυμεί, θα εμφανιστεί το εβδομαδιαίο πρόγραμμα του εξαμήνου όπως θα αναλυθεί παρακάτω. Ο κώδικα που εκτελεί την εμφάνιση του εβδομαδιαίου προγράμματος ξεκινά με την if της γραμμής 44 και τελειώνει με το τέλος της ίδιας if στη γραμμή 114. Με τα ερωτήματα: "select id_hour,hour from hours order by id_hour", γραμμή 46 "select id_day,day from days order by id_day", γραμμή 52 "select semester from semesters where id_semester={$id_sem}", γραμμή 58 "select id_lesson from lessons where id_semester={$id_sem}", γραμμή 61 ανακτώνται από τη βάση δεδομένων πληροφορίες για τις ώρες και τις μέρες και καταχωρούνται στους αντίστοιχους πίνακες hoursarray (γραμμές 48 έως 51) και daysarray (γραμμές 54 έως 57). Επίσης, ανακτάται ο τίτλος του εξαμήνου που έχει επιλέξει ο χρήστης και τα ids των μαθημάτων του εξαμήνου που καταχωρούνται στη μεταβλητή ids_lessons σαν string (γραμμές 63 έως 69). 91

98 Στη γραμμή 72 ξεκινάει ο σχεδιασμός του πίνακα για την εμφάνιση του προγράμματος. Στην πρώτη γραμμή του πίνακα σχεδιάζεται η εμφάνιση του εξαμήνου και στη δεύτερη η εμφάνιση των ημερών γραμμές 75 έως 79. Μετά εμφανίζεται η πρώτη ώρα γραμμή 85. Με το ερώτημα: "select id_schedule,id_lesson,groups,id_room,students from schedule where id_day=($d+1) and id_hour=($t+1) and id_lesson IN ($ids_lessons)", γραμμή 88 ανακτώνται από τη βάση δεδομένων πληροφορίες για την εμφάνιση των μαθημάτων στις κατάλληλες θέσεις του πίνακα ώστε να εμφανίζεται σωστά το εβδομαδιαίο πρόγραμμα μαθημάτων. Οι δύο while (γραμμές 83 έως 112 και 86 έως 109) εξυπηρετούν στο σχεδιασμό του πίνακα και οι δύο βοηθητικοί μετρητές d και t ως δείκτες της στήλης και της γραμμής σχεδίασης του πίνακα αντίστοιχα. Έπειτα, η while στη γραμμή 92, με τη χρήση των ερωτημάτων: "select name,quality from lessons where id_lesson={$id_less_sched}" "select room from rooms where id_room={$row_sched[3]}" στις γραμμές 98 και 101 αντίστοιχα, εμφανίζει τα μαθήματα με τα χαρακτηριστικά τους, δηλαδή την ομάδα, την αίθουσα και το πλήθος των σπουδαστών που μπορούν να το δηλώσουν γραμμές 104 και

99 Ποσοστά Συμμετοχής ανά εργαστήριο Με την επιλογή της δραστηριότητας Συμμετοχές ανά εργαστήριο (%) από τον χρήστη, εμφανίζεται αρχικά η παρακάτω σελίδα: Σχήμα15. Ποσοστά συμμετοχών ανά εργαστήριο Ο κώδικας για την εμφάνιση του σχήματος 15 περιγράφεται παρακάτω: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title>συμμετοχές ανά εργαστήριο (%)</title> 6 </head> 7 <BODY bgcolor="silver"> 93

100 8 <TABLE border=0 align="center" width=100% height=100%><tr><td align="center" colspan=2> 9 <FONT size=5 color="#00a5c6"><b><u>ποσοστά συμμετοχών ανά εργαστήριο.</u></b></font></td> 10 <TD align="center" colspan=2><form action="choose.php" method="post" style="margin-bottom:0;margin-top:0"> 11 <BUTTON name="submit" value="submit" type="submit"><img src="home.gif"></button> 12 <? 13 $conn=mysql_connect("localhost", "margarita", "100"); 14 mysql_select_db("laboratoriesdb"); 15 $username=$_post['username']; 16 $password=$_post['password']; 17 echo "<INPUT type='hidden' name='username' value=".$username.">"; 18 echo "<INPUT type='hidden' name='password' value=".$password.">"; 19?> 20 </FORM></TD></TR> 21 <TR><TD align="center" colspan=4> 22 <TABLE border=0 align="center" bgcolor='#31b5d6' width=100% height=100% style="margin-bottom:0;margin-top:0"> 23 <TR> 24 <? 25 for($i=1;$i<=7;$i++) 26 { 27 echo "<TD align='center' colspan=2><br>"; 28 echo "<table border=1 align='center' bgcolor='#94d6e7' width=80% height=80% style='margin-bottom:0;margin-top:0'>"; 29 echo "<tr><td align='center' colspan=2>"; 30 $sql_sem="select semester from semesters where id_semester={$i}"; 31 $result_sem=mysql_query($sql_sem, $conn) or die(mysql_error()); 32 $row_sem=mysql_fetch_row($result_sem); 33 echo "<U>".$row_sem[0]."</U></td>"; 94

101 34 $sql_lessons="select id_lesson,name,id_semester from lessons where quality='ε' and id_semester={$i} order by name"; 35 $result_lessons=mysql_query($sql_lessons, $conn) or die(mysql_error()); 36 while($row_lessons=mysql_fetch_row($result_lessons)) 37 { 38 $names=$row_lessons[1]; 39 $sql_sched="select declarations,groups,students from schedule where id_lesson={$row_lessons[0]} order by groups"; 40 $result_sched=mysql_query($sql_sched, $conn) or die(mysql_error()); 41 $labs=array(); 42 $j=0; 43 while($row_sched=mysql_fetch_row($result_sched)) 44 { 45 if(!in_array($row_sched[1], $labs)) 46 { 47 echo "<tr><td>"; 48 echo $names."&nbspe".$row_sched[1]."</td>"; 49 echo "<td align='center' bgcolor='#c6eff7'>"; 50 $pososto=(100*$row_sched[0])/$row_sched[2]; 51 echo $pososto."%"; 52 echo "</td></tr>"; 53 $labs[$j]=$row_sched[1]; 54 $j++; 55 } 56 } 57 } 58 echo "</table><br></td>"; 59 $t=$i%2; 60 if($t==0){echo "</TR><TR>";} 61 } 62?> 63 </TABLE> 64 </TR></TD></TABLE> 65 </BODY> 66 </HTML> 95

102 Στην παραπάνω σελίδα, όπως φαίνεται και στο σχήμα 15, προβάλλεται για κάθε εξάμηνο ένα πινακάκι με τα μαθήματα του κάθε εξαμήνου και το ποσοστό πληρότητας για το κάθε εξάμηνο. Στις γραμμές 10 έως 20, δημιουργείται το μοναδικό κουμπί υποβολής της σελίδας το οποίο μεταφέρει τον χρήστη πίσω στη σελίδα για την επιλογή νέας διεργασίας. Στις γραμμές 25 έως 61, σχεδιάζονται τα πινακάκια με τα μαθήματα και τα ποσοστά. Χρησιμοποιείται μία for με επτά (7) επαναλήψεις, όσα και τα εξάμηνα που περιέχουν εργαστηριακά μαθήματα. Με τα ερωτήματα: "select semester from semesters where id_semester={$i}", γραμμή 30 "select id_lesson, name, id_semester from lessons where quality='ε' and id_semester={$i} order by name", γραμμή 34 "select declarations, groups, students from schedule where id_lesson={$row_lessons[0]} order by groups", γραμμή 39 ανακτώνται πληροφορίες σχετικά με τα ονόματα των εξαμήνων έτσι ώστε να εμφανίζονται στην κορυφή του κάθε πίνακα και να υποδεικνύουν το εξάμηνο για το οποίο σχεδιάστηκαν. Ανακτώνται πληροφορίες σχετικά με τα εργαστηριακά μαθήματα για κάθε εξάμηνο χωριστά και πληροφορίες για το πλήθος των σπουδαστών που δηλώνουν το κάθε εργαστήριο (πεδίο declarations). Έτσι, η πρώτη while (γραμμή 36), σχεδιάζει τους πίνακες και η δεύτερη (γραμμή 43), εμφανίζει τα εργαστηριακά μαθήματα για το αντίστοιχο εξάμηνοπίνακα. Στη δεύτερη while (γραμμές 43 έως 56), υπολογίζεται και το ποσοστό συμμετοχών ανά εργαστήριο με την παρακάτω αριθμητική πράξη: $pososto=(100*$row_sched[0])/$row_sched[2];, γραμμή 50 Τέλος, χρησιμοποιείται ο πίνακας labs για την αποφυγή επανάληψης κάποιας ομάδας εργαστηριακού μαθήματος και οι γραμμές 59 και 60 για την αλλαγή γραμμής ώστε να μην εμφανίζονται όλοι οι πίνακες σε μια οριζόντια σειρά. 96

103 4.4.Σύνδεση Χρήστη Επιλέγοντας την ιδιότητα του σπουδαστή για τη σύνδεση στην εφαρμογή, ο χρήστης καλείται να συμπληρώσει τα πεδία που εμφανίζονται και πατώντας το κουμπί Log In να συνδεθεί. Σχήμα16. Σύνδεση Χρήστη Ο κώδικας για την προβολή του σχήματος 16 περιγράφεται παρακάτω: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title></title> 6 </head> 7 <BODY bgcolor=silver> 8 <FORM action="ergastiria8.php" method="post"> 9 <TABLE border=0 align="center" width=100% height=100%> 10 <TR><TD align="center"><br><br><br><br> 97

104 11 <TABLE border=0 align="center" bgcolor="#c6eff7" width=50% height=50%> 12 <TR><TD align="center"><br><br><br> 13 Username: 14 <INPUT type="text" name="username"></td> 15 </TR><TR><TD align="center"> 16 Password: 17 <INPUT type="password" name="password"></td> 18 </TR><TR><TD align="center"><br><br> 19 <INPUT type="submit" name="login" value="log In"><BR><BR></TD> 20 </TR> 21 </TABLE></TD></TR> 22 <INPUT type="hidden" name="user" value=-1> 23 <TABLE> 24 </FORM> 25 </BODY> 26 </HTML> Πατώντας το κουμπί υποβολής Log In, η φόρμα στέλνει τα στοιχεία του χρήστη (username, password) στη σελίδα "ergastiria8.php" μαζί με το κρυφό στοιχείο "user" με τιμή

105 Επιλογή Μαθημάτων Οι σπουδαστές επιλέγουν τα μαθήματα που επιθυμούν να δηλώσουν μέσω της σελίδας "ergastiria8.php", όπως φαίνεται στο παρακάτω σχήμα: Σχήμα17. Επιλογή Μαθημάτων Ο κώδικας για την προβολή του σχήματος 17 περιγράφεται παρακάτω: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 99

106 4 <meta http-equiv="content-language" content="el"> 5 <title>επιλογή Μαθημάτων</title> 6 </head> 7 <BODY bgcolor="silver"> 8 <TABLE border=0 align="center" bgcolor="#c6eff7"> 9 <? 10 $conn=mysql_connect("localhost", "margarita", "100"); 11 mysql_select_db("laboratoriesdb"); 12 $username=$_post['username']; 13 $password=$_post['password']; 14 echo "<FORM action='programma8.php' method='post'>"; 15 $user=$_post['user']; 16 if($user<0) 17 { 18 $sql="select id_user from users where username='".$username."' and password='".$password."'"; 19 $result=mysql_query($sql, $conn) or die(mysql_error()); 20 } 21 if($row=mysql_fetch_row($result)) 22 { 23 $id_user=$row[0]; 24 echo "<TR><TD align='center'><b><u> ΕΠΙΛΟΓΗΜΑΘΗΜΑΤΩΝ:</U></B><BR></TD></TR>"; 25 $sql="select semester from semesters"; 26 $result=mysql_query($sql, $conn) or die(mysql_error()); 27 $num_semesters=mysql_num_rows($result); 28 for($s=1;$s<=$num_semesters;$s++) 29 { 30 $row_semester=mysql_fetch_row($result); 31 echo "<TR><TD colspan='2' align='center'><hr>"; 100

107 32 echo $row_semester[0]; 33 echo "</TD></TR><TR>"; 34 echo "<TD>&nbsp</TD>"; 35 echo "</TR><TR><TD>"; 36 $sql="select id_lesson,name,quality fromlessons where id_semester=$s orderby name"; 37 $result_lesson = mysql_query($sql, $conn) or die(mysql_error()); 38 $num_results=mysql_num_rows($result_lesson); 39 for($i=0;$i<$num_results;$i++) 40 { 41 $row=mysql_result($result_lesson, $i, "name"); 42 $row_quality=mysql_result($result_lesson, $i, "quality"); 43 $id_row=mysql_result($result_lesson, $i, "id_lesson"); 44 echo $row; 45 echo "(".$row_quality.")"; 46 echo"</td><td><inputtype='checkbox'name='ergastiria[]'value='$id_row'></td>"; 47 echo "</TR><TR><TD>"; 48 } 49 } 50 echo "<BR></TD></TR><TR><TD align='center'><hr><br><input type='submit' value='αποστολη'></td></tr>"; 51 echo "<INPUT type='hidden' name='id_sched' value=-1>"; 52 echo "<INPUT type='hidden' name='user' value=".$id_user.">"; 53 } else {echo "Try again!";} 54 echo "</FORM>"; 55?> 56 </TABLE> 57 </BODY> 58 </HTML> Στις γραμμές 16 έως 20, ελέγχεται αν η πρόσβαση στη σελίδα έγινε με τη διαδικασία του Log In ή κάποιος προσπάθησε να συνδεθεί με αυτή αυθαίρετα. Αν έγινε αυθαίρετα, η σελίδα δε θα εμφανίσει τον πίνακα τον μαθημάτων έτσι ο χρήστης δε θα μπορέσει να επιλέξει μαθήματα. Στη γραμμή 21, ελέγχεται αν τα στοιχεία με τα οποία προσπάθησε ο χρήστης να συνδεθεί είναι πραγματικά και ισχύουν. Αν ναι ο 101

108 πίνακας των μαθημάτων θα εμφανιστεί κανονικά και θα επιτραπεί η επιλογή μαθημάτων, σε αντίθετη περίπτωση, θα εμφανιστεί το μήνυμα "Try again!" όπως φαίνεται στη γραμμή 53. Εφόσον η σύνδεση του χρήστη πραγματοποιηθεί, το id που αντιστοιχεί στα στοιχεία του (με τα οποία συνδέθηκε), καταχωρείται στη μεταβλητή id_user, γραμμή 23. Ο πίνακας των μαθημάτων εμφανίζεται ταξινομημένος κατά εξάμηνο. Με τη χρήση του ερωτήματος: "select semester from semesters", γραμμή 25 ανακτώνται από τη βάση δεδομένων τα εξάμηνα,στη γραμμή 28 με τη χρήση μιας for ξεκινά ο σχεδιασμός του πίνακα και στη γραμμή 32 εμφανίζεται ο τίτλος του εξαμήνου. Με το ερώτημα: "select id_lesson, name, quality from lessons where id_semester=$s order by name", γραμμή 36 ανακτώνται από τη βάση δεδομένων το id, το όνομα και η ιδιότητα των μαθημάτων για το συγκεκριμένο εξάμηνο. Στις γραμμές 39 έως 48, εμφανίζονται τα μαθήματα του εξαμήνου με τη χρήση της συνάρτησης mysql_result(), η οποία ανακτά το τρίτο όρισμά της από τη γραμμή αποτελέσματος (δεύτερο όρισμα) του πρώτου ορίσματός της γραμμές 41 έως 43. Με τη γραμμή 46, εμφανίζεται το checkbox του κάθε μαθήματος για την δυνατότητα επιλογής του. Τέλος, στη γραμμή 50, δημιουργείται το κουμπί υποβολής της φόρμας με τίτλο ΑΠΟΣΤΟΛΗ και στις γραμμές 51 και 52,δημιουργούνται τα κρυφά στοιχεία 'id_sched' και 'user' με τιμές -1 και το id του user αντίστοιχα. 102

109 Δήλωση Εργαστηρίων Πατώντας το κουμπί υποβολής ΑΠΟΣΤΟΛΗ, στέλνονται όλα τα επιλεγμένα μαθήματα στη σελίδα 'programma8.php' και εμφανίζεται ο πίνακας με την παρακάτω μορφή: Σχήμα18. Δήλωση Εργαστηριακών Μαθημάτων Ο κώδικας για την προβολή του σχήματος 18 περιγράφεται παρακάτω: 1 <HTML> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=iso "> 4 <meta http-equiv="content-language" content="el"> 5 <title></title> 6 </head> 7 <BODY bgcolor="silver"> 103

110 8 <TABLE border=0 align="center"> 9 <TR><TD align="center"><font color="#00a5c6" size=5><b><u>δηλωση ΕΡΓΑΣΤΗΡΙΩΝ</U></B></FONT><BR><BR></TD> 10 <TD align="right"><a href="index.html"><img src="home.gif"></a> 11 <TR><TD align="center"> 12 <? 13 $conn=mysql_connect("localhost", "margarita", "100"); 14 mysql_select_db("laboratoriesdb"); 15 $id_user=$_post['user']; 16 $id_schedule=$_post['id_sched']; //Ο παρακάτω κώδικας τρέχει μόνο μετά την πρώτη ενέργεια. 17 if($id_schedule>0){ 18 $sql_where=$_post['sql_where']; 19 $sql="select declarations,students from schedule where id_schedule=".$id_schedule.""; 20 $result=mysql_query($sql, $conn) or die(mysql_error()); 21 $row=mysql_fetch_array($result); //Γίνονται οι εγγραφές στη βάση ανάλογα με την ενέργεια που επιλέγει ο χρήστης. 22 if($_post['operation']=="εγγραφη") 23 { 24 if($row['declarations']<$row['students']) 25 { 26 $sql_check="select id_lesson,groupsfrom schedule where id_schedule=".$id_schedule.""; 27 $result_check=mysql_query($sql_check, $conn) or die(mysql_error()); 28 $row_check=mysql_fetch_row($result_check); 29 $sql_declar="update schedule set declarations=declarations+1 where (id_lesson={$row_check[0]} and groups={$row_check[1]})"; 30 $result_declar=mysql_query($sql_declar, $conn) or die(mysql_error()); 31 $sql_sel="select id_schedule from schedule where (id_lesson={$row_check[0]} and groups={$row_check[1]})"; 32 $result_sel=mysql_query($sql_sel, $conn) or die(mysql_error()); 33 while($row_sel=mysql_fetch_row($result_sel)) 104

111 34 { 35 $sql_part="insert into participation values ('$id_user','','$row_sel[0]','$row_check[1]','$row_check[0]')"; 36 $result_part=mysql_query($sql_part, $conn) or die(mysql_error()); 37 } 38 } 39 }else{ 40 $sql_check="select id_lesson,groups from schedule where id_schedule=".$id_schedule.""; 41 $result_check=mysql_query($sql_check, $conn) or die(mysql_error()); 42 $row_check=mysql_fetch_row($result_check); 43 $sql_declar="update schedule set declarations=declarations-1 where (id_lesson={$row_check[0]} and groups={$row_check[1]})"; 44 $result_declar=mysql_query($sql_declar, $conn) or die(mysql_error()); 45 $sql_part="delete from participation where id_user='$id_user' and id_lesson={$row_check[0]} and groups={$row_check[1]}"; 46 $result_part=mysql_query($sql_part, $conn) or die(mysql_error()); 47 } 48 }else{ //Καταχωρώ τα επιλεγμένα εργαστήρια σε έναν πίνακα. 49 if($_post['ergastiria']!="") 50 { 51 $ergastiria_array=array(); 52 $k=0; 53 foreach($_post['ergastiria'] as $ergastirio) 54 { 55 $ergastiria_array[$k]=$ergastirio; 56 if ($k==0) $sql_where="{$ergastiria_array[$k]}"; 57 else $sql_where.=", {$ergastiria_array[$k]}"; 58 $k++; 59 } 60 } 61 else 62 { 105

112 63 echo "<BR><FONT color='#00a5c6'><b>δεν έχεις επιλέξει κανένα μάθημα!</b></font>"; 64 } 65 } //Καταχωρώ τα δηλωμένα μαθήματα του user σε έναν πίνακα. 66 $user_parts=array(); 67 $sql_where2=-1; 68 $sql="select id_schedule from participation where id_user=".$id_user.""; 69 $result=mysql_query($sql, $conn) or die(mysql_error()); 70 $e=0; 71 while($row=mysql_fetch_array($result)) 72 { 73 $user_parts[$e]=$row['id_schedule']; 74 $e++; 75 } 76 for($k=0;$k<$e;$k++) 77 { 78 if ($k==0) $sql_where2="{$user_parts[$k]}"; 79 else $sql_where2.=", {$user_parts[$k]}"; 80 } 81 $user_lessons=array(); 82 $sql="select id_lesson from schedule where id_schedule IN ($sql_where2)"; 83 $result_lessons=mysql_query($sql, $conn) or die(mysql_error()); 84 $e=0; 85 while($row_lessons=mysql_fetch_array($result_lessons)) 86 { 87 $user_lessons[$e]=$row_lessons['id_lesson']; 88 $e++; 89 } //Καταχωρώ τις ώρες του προγράμματος από τη βάση σε έναν πίνακα. 90 $sql="select hour from hours order by id_hour"; 91 $result_hour=mysql_query($sql, $conn) or die(mysql_error()); 92 $t=0; 106

113 93 $hoursarray=array(); 94 while ($row_hour=mysql_fetch_array($result_hour)) {$hoursarray[$t]=$row_hour['hour'];$t++;} 95 $num_hours=$t; 96 $t=0; //Καταχωρώ τις μέρες του προγράμματος από τη βάση σε έναν πίνακα. 97 $sql="select day from days order by id_day"; 98 $result_day=mysql_query($sql, $conn) or die(mysql_error()); 99 $d=0; 100 $daysarray=array(); 101 while ($row_day=mysql_fetch_array($result_day)) {$daysarray[$d]=$row_day['day'];$d++;} 102 $num_days=$d; //Διαμορφώνω το πρόγραμμα. 103 $sql="select id_schedule,id_hour,id_day,id_lesson,groups,students from schedule where id_lesson IN ($sql_where) order by id_hour,id_day"; 104 $result=mysql_query($sql, $conn) or die(mysql_error()); 105 $row_num=mysql_num_rows($result); 106 $i=1; 107 $j=1; 108 echo '<TABLE border=1 bgcolor="#c6eff7" cellpadding=0 cellspacing=0>'; 109 echo '<TR><TD bgcolor="#94d6e7">&nbsp</td>'; //Εμφανίζω τις μέρες στον πίνακα. 110 for($w=0;$w<$num_days;$w++) 111 { 112 echo '<TD bgcolor="#94d6e7" align="center">'.$daysarray[$w].'</td>'; 113 } //Εμφανίζω τις ώρες και τα επιλεγμένα μαθήματα. 114 echo '<TR><td bgcolor="#94d6e7">'.$hoursarray[$t].'</td><td>'; 115 $t++; 116 while ($row=mysql_fetch_array($result)) 107

114 117 { 118 while($row['id_hour']>$i) 119 { 120 for($e=1;$e<($num_days+1)-$j;$e++) 121 { 122 echo '&nbsp</td><td>'; 123 } 124 echo '&nbsp</td></tr><tr><td bgcolor="#94d6e7">'.$hoursarray[$t].'</td><td>'; 125 $t++; 126 $i++; 127 $j=1; 128 } 129 while($row['id_day']>$j) 130 { 131 echo '&nbsp</td><td>'; 132 $j++; 133 } 134 $sql_lesson="select name,quality from lessons where id_lesson={$row['id_lesson']}"; 135 $result_lesson=mysql_query($sql_lesson, $conn) or die(mysql_error()); 136 $row_lesson=mysql_fetch_row($result_lesson); 137 $sql_students="select students from schedule where id_lesson={$row['id_lesson']} and id_day={$row['id_day']} and id_hour={$row['id_hour']}"; 138 $result_students=mysql_query($sql_students, $conn) or die(mysql_error()); 139 $num_students=mysql_fetch_array($result_students); 140 $sql_decla="select declarations from schedule where id_lesson={$row['id_lesson']} and id_day={$row['id_day']} and id_hour={$row['id_hour']}"; 141 $result_decla=mysql_query($sql_decla, $conn) or die(mysql_error()); 142 $num_declarations=mysql_fetch_array($result_decla); 143 $id_schedule=$row['id_schedule']; 144 echo $row_lesson[0]; 108

115 145 echo ' ('.$row_lesson[1]; 146 if ($row['groups']!=0) echo $row['groups']; 147 echo ')'; //Ελέγχω ποια μαθήματα έχει δηλώσει ο χρήστης και εμφανίζω τις αντίστοιχες ενέργειες που μπορεί να κάνει. 148 if (!in_array($row['id_lesson'],$user_lessons) && ($row_lesson[1]=='ε')) { 149 echo '<FORM action="programma8.php" method="post" style="marginbottom:0;margin-top:0">'; 150 echo '<INPUT type="submit" name="operation" value="εγγραφη">'; 151 echo '<INPUT type="hidden" name="user" value="'; 152 echo $id_user; 153 echo '">'; 154 echo '<INPUT type="hidden" name="id_sched" value="'; 155 echo $id_schedule; 156 echo '">'; 157 echo '<INPUT type="hidden" name="sql_where" value="'; 158 echo $sql_where; 159 echo '">'; 160 echo $num_declarations['declarations']; 161 echo '/'; 162 echo $num_students['students']; 163 echo '</FORM>'; 164 } 165 if (in_array($row['id_schedule'],$user_parts)) { 166 echo '<FORM action="programma8.php" method="post" style="marginbottom:0;margin-top:0">'; 167 echo '<INPUT type="submit" name="operation" value="διαγραφη">'; 168 echo '<INPUT type="hidden" name="user" value="'; 169 echo $id_user; 170 echo '">'; 109

116 171 echo '<INPUT type="hidden" name="id_sched" value="'; 172 echo $id_schedule; 173 echo '">'; 174 echo '<INPUT type="hidden" name="sql_where" value="'; 175 echo $sql_where; 176 echo '">'; 177 echo $num_declarations['declarations']; 178 echo '/'; 179 echo $num_students['students']; 180 echo '</FORM>'; 181 } 182 }//Κλείνει η πρώτη while. //Συμπληρώνω τον πίνακα του προγράμματος με κενά κελιά αν είναι απαραίτητο. 183 while($j<$num_days) 184 { 185 echo '&nbsp</td><td>'; 186 $j++; 187 } 188 echo '&nbsp</td></tr>'; 189 while($i<$num_hours){ 190 echo '<TR><td bgcolor="#94d6e7">'.$hoursarray[$t].'</td>'; 191 $t++; 192 for($e=1;$e<$num_days+1;$e++) 193 { 194 echo '<td>&nbsp</td>'; 195 } 196 echo '</tr>'; 197 $i++; 198 } 199 echo '</TABLE>'; 200?> 201 </TD></TR></TABLE> 110

117 202 </FORM> 203 </BODY> 204 </HTML> Όπως και στις προηγούμενες σελίδες έτσι και σ αυτή, η σχεδίαση περιλαμβάνει το κουμπί υποβολής, επάνω δεξιά, για την επιστροφή στη σελίδα για την επιλογή νέας διεργασίας γραμμή 10. Στη συνέχεια, καταχωρούνται οι τιμές των κρυφών στοιχείων που μεταφέρονται από την σελίδα της επιλογής μαθημάτων στις μεταβλητές id_user και id_schedule και δηλώνουν ότι και οι ονομασίες τους γραμμές 15 και 16. Ελέγχεται η τιμή της id_schedule γραμμή 17. Αν είναι θετικός αριθμός σημαίνει πως έχει επιλεγεί κάποια γραμμή από τον πίνακα όπου υπάρχει καταχωρημένο το εβδομαδιαίο πρόγραμμα μαθημάτων στη βάση δεδομένων, για την εκδήλωση κάποιας ενέργειας. Αν η τιμή της είναι -1, σημαίνει πως ακόμη δεν έχει κάνει κάποια ενέργεια ο χρήστης και περιέχει την τιμή την οποία της έχει δώσει η προηγούμενη σελίδα. Έτσι, ο κώδικας των γραμμών 17 έως 47 θα εκτελεστεί μόλις ο χρήστης δώσει κάποια εντολή όπως θα δούμε παρακάτω. Ο κώδικας των γραμμών 49 έως 65 θα εκτελεστεί μόνο για μια φορά, όταν θα συνδεθεί για πρώτη φορά ο χρήστης με αυτή τη σελίδα. Ο κώδικας των γραμμών αυτών, καταχωρεί στο string sql_where τα ids των μαθημάτων που επέλεξε ο χρήστης. Δημιουργείται ο πίνακας user_parts όπου θα καταχωρηθούν τα id_schedule για οποία έχει δηλώσει συμμετοχή ο χρήστης γραμμές 68 έως 75 με τη βοήθεια του ερωτήματος: "select id_schedule from participation where id_user=".$id_user."" Αφού καταχωρηθούν στον πίνακα user_parts, καταχωρούνται στο string sql_where2 για να χρησιμοποιηθούν στο ερώτημα γραμμή 82: "select id_lesson from schedule where id_schedule IN ($sql_where2)" Δημιουργείται ο πίνακας user_lessons ο οποίος συγκεντρώνει τα ids των μαθημάτων με τη βοήθεια του παραπάνω ερωτήματος γραμμές 81 έως

118 Με τα ερωτήματα: "select hour from hours order by id_hour", γραμμή 90 "select day from days order by id_day", γραμμή 97 ανακτώνται από τη βάση δεδομένων οι ώρες και οι μέρες του προγράμματος και καταχωρούνται στους πίνακες hoursarray και daysarray αντίστοιχα γραμμές 90 έως 102. Στη συνέχεια, αφού έχουν συλλεχθεί οι πρώτες πληροφορίες, ξεκινάει η σχεδίαση για τον πίνακα όπως φαίνεται στο σχήμα 13. Το ερώτημα: "select id_schedule,id_hour,id_day,id_lesson,groups,students from schedule where id_lesson IN ($sql_where) order by id_hour,id_day", γραμμή 103 ανακτά από τη βάση δεδομένων τις πληροφορίες για τα μαθήματα της επιλογής του χρήστη. Εμφανίζονται οι μέρες του προγράμματος στην πρώτη σειρά του πίνακα γραμμές 110 έως 113. Εμφανίζεται η ώρα στην αρχή της επόμενης σειράς γραμμή 114. Με τη χρήση των επαναλήψεων μιας while γραμμή 116, η οποία διαβάζει τα αποτελέσματα του τελευταίου ερωτήματος, σχεδιάζεται ο υπόλοιπος πίνακας. Ο κώδικας των γραμμών 118 έως 128, εκτελείται για τη σχεδίαση μιας ολόκληρης κενής γραμμής με την προϋπόθεση ο έλεγχος της while γραμμή 118 να θεωρηθεί θετικός. Αν θεωρηθεί θετικός ο έλεγχος, δηλαδή δεν διεξάγεται κανένα μάθημα την συγκεκριμένη ώρα του προγράμματος, ο σχεδιασμός προχωράει στην επόμενη γραμμή του πίνακα εμφανίζοντας στην αρχή της γραμμής την επόμενη ώρα του προγράμματος. Στη γραμμή 129, περιγράφεται μια δεύτερη while, η οποία σχεδιάζει ένα κενό κελί, στην περίπτωση που ο έλεγχός της θεωρηθεί θετικός, δηλαδή τη συγκεκριμένη ώρα και μέρα δεν διεξάγεται κανένα μάθημα από αυτά που έχει επιλέξει ο χρήστης για να δηλώσει. Η κάθε γραμμή του αποτελέσματος του ερωτήματος της γραμμής 103, ελέγχεται για τη θέση όπου πρέπει να εμφανίζεται το μάθημα με τη βοήθεια των μετρητών i και j, για την ώρα και τη μέρα αντίστοιχα. Οι υπόλοιπες θέσεις καλύπτονται με κενά κελιά όπως είδαμε παραπάνω. 112

119 Με τα ερωτήματα: "select name,quality from lessons where id_lesson={$row['id_lesson']}" "select students from schedule where id_lesson={$row['id_lesson']} and id_day={$row['id_day']} and id_hour={$row['id_hour']}" "select declarations from schedule where id_lesson={$row['id_lesson']} and id_day={$row['id_day']} and id_hour={$row['id_hour']}" ανακτώνται από τη βάση δεδομένων στοιχεία απαραίτητα για την εμφάνιση κάθε γραμμής αποτελέσματος του ερωτήματος της γραμμής 103 στον πίνακα του προγράμματος. Στις γραμμές 144 έως 147, εκτυπώνεται στην οθόνη το μάθημα της γραμμής αποτελέσματος την οποία εξετάζουμε. Στη συνέχεια δημιουργούνται τα αντίστοιχα κουμπιά υποβολής για κάθε μάθημα, με τα οποία ο χρήστης μπορεί να εγγραφεί ή να διαγραφεί από αυτά. Στις γραμμές 148 έως 164, ελέγχεται αν το συγκεκριμένο μάθημα είναι εργαστηριακό και αν ο χρήστης έχει εγγραφεί σε αυτό. Αν είναι εργαστηριακό και δεν έχει εγγραφεί, τότε κάτω από το εμφανιζόμενο στον πίνακα του προγράμματος μάθημα, εμφανίζεται το κουμπί υποβολής με τίτλο ΕΓΓΡΑΦΗ με το οποίο μπορεί να δηλώσει το μάθημα. Δίπλα στο κουμπί ΕΓΓΡΑΦΗ, προβάλλεται ο αριθμός των σπουδαστών που το έχουν δηλώσει σε αναλογία με τον αριθμό του πλήθους των σπουδαστών που επιτρέπεται να το δηλώσουν γραμμές 160 έως 162. Επίσης με το κουμπί υποβολής αυτής της φόρμας μεταφέρονται και κάποια κρυφά στοιχεία για λειτουργικούς λόγους. 113

120 Σχήμα19. Διαγραφή Μαθημάτων Το ίδιο συμβαίνει και με τη σχεδίαση του κουμπιού υποβολής με τίτλο ΔΙΑΓΡΑΦΗ, με τη διαφορά ότι εδώ ελέγχεται αν ο χρήστης έχει δηλώσει το συγκεκριμένο μάθημα. Αν ναι, τότε κάτω από το εμφανιζόμενο στον πίνακα του προγράμματος μάθημα, εμφανίζεται το κουμπί υποβολής με τίτλο ΔΙΑΓΡΑΦΗ με το οποίο μπορεί να διαγραφεί από το μάθημα. Δίπλα στο κουμπί ΔΙΑΓΡΑΦΗ, προβάλλεται ο αριθμός των σπουδαστών που το έχουν δηλώσει σε αναλογία με τον αριθμό του πλήθους των σπουδαστών που επιτρέπεται να το δηλώσουν γραμμές 177 έως 179. Επίσης με το κουμπί υποβολής αυτής της φόρμας μεταφέρονται και κάποια κρυφά στοιχεία για λειτουργικούς λόγους. Αφού ολοκληρωθεί ο έλεγχος και η εμφάνιση των μαθημάτων με τις γραμμές του αποτελέσματος του ερωτήματος της γραμμής 103, δημιουργούνται κενά κελιά για τη συμπλήρωση του πίνακα του εβδομαδιαίου προγράμματος γραμμές 183 έως 198. Όπως φαίνεται στο σχήμα 19, όταν ο χρήστης εγγραφεί σε κάποιο εργαστηριακό μάθημα, τότε απενεργοποιούνται τα κουμπιά με τίτλο ΕΓΓΡΑΦΗ 114

TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης

TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης Χειμερινό εξάμηνο 2011-2012 Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο) TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Στέλλα Λάμπουρα Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί

Διαβάστε περισσότερα

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

Διαβάστε περισσότερα

Επαναληπτική Άσκηση ΕΤΙΚΕΤΕΣ HTML

Επαναληπτική Άσκηση ΕΤΙΚΕΤΕΣ HTML Επαναληπτική Άσκηση ΕΤΙΚΕΤΕΣ HTML ΕΤΙΚΕΤΑ ΠΕΡΙΓΡΑΦΗ ΙΔΙΟΤΗΤΕΣ ΙΔΙΟΤΗΤΑ ΤΙΜΗ ΠΕΡΙΓΡΑΦΗ Βασικές Ορίζει ένα αρχείο HTML Ορίζει ένα τίτλο για το αρχείο Ορίζει το σώµα της background URL

Διαβάστε περισσότερα

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Διπλωματική Εργασία με θέμα: Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού Καραγιάννης Ιωάννης Α.Μ.

Διαβάστε περισσότερα

Συλλογή και Επεξεργασία Δεδομένων με Φόρμες

Συλλογή και Επεξεργασία Δεδομένων με Φόρμες Συλλογή και Επεξεργασία Δεδομένων με Φόρμες Οι φόρμες αποτελούν τον πιο δημοφιλή τρόπο για τη συλλογή δεδομένων μέσω του World Wide Web (WWW). Επιτρέπουν στους χρήστες να επικοινωνούν με τη βοήθεια του

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (Τ.Ε.Ι.) ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΘΕΜΑ:

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (Τ.Ε.Ι.) ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΘΕΜΑ: ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (Τ.Ε.Ι.) ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΘΕΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΔΙΑΔΙΚΤΥΟΥ ΓΙΑ ΤΗ ΓΡΑΜΜΑΤΕΙΑΚΗ ΥΠΟΣΤΗΡΙΞΗ ΤΩΝ ΕΚΤΑΚΤΩΝ ΕΚΠΑΙΔΕΥΤΙΚΩΝ

Διαβάστε περισσότερα

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

Άσκηση 5 -Δηµιουργία ιστοσελίδων µε HTML µέρος 5 ο

Άσκηση 5 -Δηµιουργία ιστοσελίδων µε HTML µέρος 5 ο Άσκηση 5 -Δηµιουργία ιστοσελίδων µε HTML µέρος 5 ο HTML Φόρµες Για να δηµιουργήσουµε µια φόρµα στην οποία θα γράφουν σχόλια ή παρατηρήσεις οι επισκέπτες των σελίδων µας, χρειαζόµαστε την ετικέτα .

Διαβάστε περισσότερα

Τα προγράμματα σε ASP που χρησιμοποιήθηκαν για την υλοποίηση της διαχείρισης των μαθημάτων.

Τα προγράμματα σε ASP που χρησιμοποιήθηκαν για την υλοποίηση της διαχείρισης των μαθημάτων. ΠΑΡΑΡΤΗΜΑ Α Τα προγράμματα σε ASP που χρησιμοποιήθηκαν για την υλοποίηση της διαχείρισης των μαθημάτων. Αρχική σελίδα (home.asp)

Διαβάστε περισσότερα

Τα συγκεντρωτικά ερωτήματα αφορούν στην ομαδοποίηση των δεδομένων και στη. χρήση συναρτήσεων ομαδοποίησης κατά την εκτέλεση ενός ερωτήματος προβολής

Τα συγκεντρωτικά ερωτήματα αφορούν στην ομαδοποίηση των δεδομένων και στη. χρήση συναρτήσεων ομαδοποίησης κατά την εκτέλεση ενός ερωτήματος προβολής Εργαστήριο 8 ο Συγκεντρωτικά ερωτήματα Ερωτήματα διασταύρωσης Ερωτήματα Ενεργειών Συγκεντρωτικά ερωτήματα Τα συγκεντρωτικά ερωτήματα αφορούν στην ομαδοποίηση των δεδομένων και στη χρήση συναρτήσεων ομαδοποίησης

Διαβάστε περισσότερα

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πάτρας

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πάτρας Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πάτρας Επιχειρησιακό Πρόγραμμα «Εκπαίδευση και δια Βίου Μάθηση» Δομή Απασχόλησης και Σταδιοδρομίας (ΔΑΣΤΑ) ΤΕΙ Πατρών MIS: 304457 Οδηγίες Χρήσης για τους Φορείς Απασχόλησης

Διαβάστε περισσότερα

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP. Εργαστήριο #5 Τι πρέπει να έχετε ολοκληρώσει από το προηγούμενο εργαστήριο. Θα πρέπει να ξέρετε να εισάγετε ένα βασικό πρόγραμμα PHP μέσα σε μια ιστοσελίδα, τη χρήση της echo και τον χειρισμό απλών μεταβλητών

Διαβάστε περισσότερα

Εργαστήριο 8. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο

Εργαστήριο 8. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο Εργαστήριο 8 Προγραμματιστικές Εφαρμογές στο Διαδίκτυο Στόχος Στόχος του εργαστηρίου είναι η εκμάθηση των βασικών προγραμματιστικών δομών της γλώσσας PHP και η δημιουργία φορμών για την επεξεργασία υποβαλλόμενων

Διαβάστε περισσότερα

Εργαστήριο 9. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας

Εργαστήριο 9. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας Εργαστήριο 9 Προγραμματιστικές Εφαρμογές στο Διαδίκτυο Στόχος Στόχος του εργαστηρίου είναι η εκμάθηση των βασικών εργασιών στην MySQL και η εξοικείωση με το περιβάλλον του εργαλείου διαχείρισης phpmyadmin.

Διαβάστε περισσότερα

«Διαδικτυακή Εφαρμογή Διαχείρισης Αιθουσιολογίου-Ημερολογίου»

«Διαδικτυακή Εφαρμογή Διαχείρισης Αιθουσιολογίου-Ημερολογίου» ΑΛΕΞΑΝΔΡΕΙΟ Τ.Ε.Ι. ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Πτυχιακή εργασία «Διαδικτυακή Εφαρμογή Διαχείρισης Αιθουσιολογίου-Ημερολογίου» Του φοιτητή Κουρτέση Ντάνιελ-Αποστόλου Αρ.

Διαβάστε περισσότερα

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης Σελίδα 1από ΤΕΙ ΚΑΒΑΛΑΣ Πτυχιακή εργασία Δικτυακή Εφαρμογή διαχείρισης ηλεκτρονικών εγγράφων υπηρεσίας. ΕΙΣΑΓΩΓΗ Μιλτιάδης Κακλαμάνης Σελίδα 2από Κατάλογος περιεχομένων ΕΙΣΑΓΩΓΗ...1 Σχετιζόμενα πρόσωπα...3

Διαβάστε περισσότερα

Η γλώσσα HTML. Επιμέλεια: Δέγγλερη Σοφία

Η γλώσσα HTML. Επιμέλεια: Δέγγλερη Σοφία Η γλώσσα HTML Επιμέλεια: Δέγγλερη Σοφία Υπερκείμενο Το δομικό χαρακτηριστικό του Παγκόσμιου Ιστού Ένα αρχείο Απλό κείμενο και υπερσύνδεσμοι Υπερσύνδεσμος Μετάβαση σε διάφορα άλλα έγγραφα Αποτελείται από

Διαβάστε περισσότερα

Σενάριο Χρήσης myschool

Σενάριο Χρήσης myschool Σενάριο Χρήσης ΦΟΡΕΙΣ Επιβεβαίωση των Στοιχείων του Φορέα Αρχικά, θα κληθείτε να ελέγξετε την ορθότητα των στοιχείων του Φορέα σας. Επιλέγοντας την καρτέλα «Φορείς», από το μενού που βρίσκεται στο πάνω

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ. Κεφάλαιο 5. Αλληλεπιδραστικές ιστοσελίδες (χρήση ετικέτας <FORM> και η τεχνική CGI)

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ. Κεφάλαιο 5. Αλληλεπιδραστικές ιστοσελίδες (χρήση ετικέτας <FORM> και η τεχνική CGI) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ Κεφάλαιο 5. Αλληλεπιδραστικές ιστοσελίδες (χρήση ετικέτας και η τεχνική CGI) Επιμέλεια: Καραγιάννης Σπύρος Καθηγητής ΠΕ19 ΦΟΡΜΕΣ (FORM) Είναι ο κύριος

Διαβάστε περισσότερα

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ ΤΕΙ Σερρών Σχολή Τεχνολογικών Εφαρμογών, Τμήμα Πληροφορικής και Επικοινωνιών Προγραμματιστικές Εφαρμογές στο Διαδίκτυο (Θ) Τελική Εξέταση Διδάσκων: Δ. Κοτζίνος Όνοµα: Α.Μ. : Εξάµηνο : Αίθουσα Έδωσα Project

Διαβάστε περισσότερα

Άσκηση 6 Επαναληπτική Άσκηση HTML

Άσκηση 6 Επαναληπτική Άσκηση HTML Άσκηση 6 Επαναληπτική Άσκηση HTML ΕΤΙΚΕΤΕΣ HTML ΕΤΙΚΕΤΑ ΠΕΡΙΓΡΑΦΗ ΙΔΙΟΤΗΤΕΣ ΙΔΙΟΤΗΤΑ ΤΙΜΗ ΠΕΡΙΓΡΑΦΗ Βασικές Ορίζει τον τύπο του αρχείου Ορίζει ένα αρχείο HTML Ορίζει ένα τίτλο

Διαβάστε περισσότερα

Τίτλος Πακέτου Certified Computer Expert-ACTA

Τίτλος Πακέτου Certified Computer Expert-ACTA Κωδικός Πακέτου ACTA - CCE - 002 Τίτλος Πακέτου Certified Computer Expert-ACTA Εκπαιδευτικές Ενότητες Επεξεργασία Κειμένου - Word Δημιουργία Εγγράφου Προχωρημένες τεχνικές επεξεργασίας κειμένου & αρχείων

Διαβάστε περισσότερα

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Απλά ερωτήματα Επιλογής Ερωτήματα με Ενώσεις πινάκων Ερωτήματα με Παραμετρικά Κριτήρια Ερωτήματα με Υπολογιζόμενα πεδία Απλά ερωτήματα Επιλογής Τα Ερωτήματα μας επιτρέπουν

Διαβάστε περισσότερα

Έκδοσης 2005 Π. Κεντερλής

Έκδοσης 2005 Π. Κεντερλής Σύστημα «Ηλέκτρα» Το Σύστημα «Ηλέκτρα» αποτελεί μια ολοκληρωμένη διαδικτυακή εφαρμογή διαχείρισης πληροφοριών μαθημάτων και χρηστών. Αναπτύχθηκε εξολοκλήρου από τον εργαστηριακό συνεργάτη Παναγιώτη Κεντερλή

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ. ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ Ηλεκτρονική Υποβολή Α.Π.Δ. ΠΕΡΙΕΧΟΜΕΝΑ 1) Είσοδος στην εφαρμογή 2) Δημιουργία Περιόδου Υποβολής 2.α) Ακύρωση Περιόδου Υποβολής 3) Μέθοδος Υποβολής: Συμπλήρωση Φόρμας 3.α) Συμπλήρωση

Διαβάστε περισσότερα

Εγχειρίδιο Χρήσης Συστήματος Διαχείρισης Ηλεκτρονικών Ερωτηματολογίων Ο.Π.Σ

Εγχειρίδιο Χρήσης Συστήματος Διαχείρισης Ηλεκτρονικών Ερωτηματολογίων Ο.Π.Σ ΜΟΝΑΔΑ ΔΙΑΣΦΑΛΙΣΗΣ Τ.Ε.Ι. ΚΑΒΑΛΑΣ Άξονας Προτεραιότητας 1 «Αναβάθμιση της ποιότητας της εκπαίδευσης και προώθηση της κοινωνικής ενσωμάτωσης στις 8 περιφέρειες σύγκλισης» του Ε.Π. «Εκπαίδευση και Δια Βίου

Διαβάστε περισσότερα

Διαχείριση Βάσης Δεδομένων (dbadmin)

Διαχείριση Βάσης Δεδομένων (dbadmin) Published on PRISMA Win Help - Megasoft (http://docs.megasoft.gr) Home > Εμπορική Διαχείριση > Διαχείριση Βάσης Δεδομένων (dbadmin) Διαχείριση Βάσης Δεδομένων (dbadmin) Μέσα από τη διαχείριση βάσης δεδομένων

Διαβάστε περισσότερα

Ετικέτες HTML. <!-->: Τα σχόλια χρησιμοποιούνται για να γράφουμε σημειώσεις μέσα στον

Ετικέτες HTML. <!-->: Τα σχόλια χρησιμοποιούνται για να γράφουμε σημειώσεις μέσα στον Ετικέτες HTML : Τα σχόλια χρησιμοποιούνται για να γράφουμε σημειώσεις μέσα στον πηγαίο κώδικα για να διευκολύνουμε την επεξεργασία και την συντήρηση του αρχείου. Τα σχόλια δεν εμφανίζονται στην οθόνη

Διαβάστε περισσότερα

Προγραμματισμός Διαδικτύου ΕΡΓΑΣΤΗΡΙΟ. Τμ. ΔΕ- Χειμ

Προγραμματισμός Διαδικτύου ΕΡΓΑΣΤΗΡΙΟ. Τμ. ΔΕ- Χειμ Προγραμματισμός Διαδικτύου ΕΡΓΑΣΤΗΡΙΟ Τμ. ΔΕ- Χειμ. 2014-15 Ετικέτες meta 2 Δε περιέχουν περιεχόμενο Έχουν 2 ιδιότητες. content: (υποχρεωτικό): Τα ίδια τα μετα-δεδομένα name: Συνήθως author, keywords και

Διαβάστε περισσότερα

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Λογισμικού

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Λογισμικού Πανεπιστήμιο Αιγαίου Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Λογισμικού Έκδοση 1.2 Περιεχόμενα 1. Είσοδος και Έξοδος από το Σύστημα... 3 2. Βοήθεια... 3 3. Αλλαγή Συνθηματικού... 3 4. Διαχείριση

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Για τη διαδικτυακή εφαρμογή. Εγγραφής Φοιτητών σε Ωρολόγια Προγράμματα και Ελέγχου Διενέργειας Εκπαιδευτικών Δραστηριοτήτων

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Για τη διαδικτυακή εφαρμογή. Εγγραφής Φοιτητών σε Ωρολόγια Προγράμματα και Ελέγχου Διενέργειας Εκπαιδευτικών Δραστηριοτήτων ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Για τη διαδικτυακή εφαρμογή Εγγραφής Φοιτητών σε Ωρολόγια Προγράμματα και Ελέγχου Διενέργειας Εκπαιδευτικών Δραστηριοτήτων στο πλαίσιο του έργου ΕΚΠΑΙΔΕΥΣΗ ΦΟΙΤΗΤΩΝ ΓΙΑ ΤΗΝ ΑΝΑΠΤΥΞΗ ΔΕΞΙΟΤΗΤΩΝ

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ.

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ. Τ.Ε.Ι ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ» ΟΝΟΜΑΤΕΠΩΝΥΜΑ ΣΠΟΥΔΑΣΤΩΝ : ~ΔΕΛΗΓΙΑΝΝΗ ΚΥΡΙΑΚΗ, 1925~

Διαβάστε περισσότερα

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πάτρας

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πάτρας Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πάτρας Επιχειρησιακό Πρόγραμμα «Εκπαίδευση και δια Βίου Μάθηση» Δομή Απασχόλησης και Σταδιοδρομίας (ΔΑΣΤΑ) ΤΕΙ Πατρών MIS: 304457 Οδηγίες Χρήσης για τον Υπάλληλο του Γραφείου

Διαβάστε περισσότερα

Εγχειρίδιο Χρήστη Φάση 1: Καταχώρηση Ειδικοτήτων

Εγχειρίδιο Χρήστη Φάση 1: Καταχώρηση Ειδικοτήτων ΦΟΡΕΑΣ: ΙΝΣΤΙΤΟΥΤΟ ΔΙΑΡΚΟΥΣ ΕΚΠΑΙΔΕΥΣΗΣ ΕΝΗΛΙΚΩΝ ΕΡΓΟ: «Υλοποίηση Πληροφοριακού συστήματος για την Υποστήριξη του Έργου Διαχείρισης των Δημοσίων Ι.Ε.Κ.» Εγχειρίδιο Χρήστη Φάση 1: Καταχώρηση Ειδικοτήτων

Διαβάστε περισσότερα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων Ενότητα 4 Επεξεργασία πινάκων 36 37 4.1 Προσθήκη πεδίων Για να εισάγετε ένα πεδίο σε ένα πίνακα που υπάρχει ήδη στη βάση δεδομένων σας, βάζετε τον κέρσορα του ποντικιού στο πεδίο πάνω από το οποίο θέλετε

Διαβάστε περισσότερα

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Οδηγός Χρήσης Εφαρμογής Φορέων Υποδοχής Πρακτικής Άσκησης Αφού πιστοποιηθεί ο λογαριασμός που δημιουργήσατε στο πρόγραμμα «Άτλας» ως Φορέας

Διαβάστε περισσότερα

Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε

Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε σχετικά με τον έλεγχο της καπνιστικής συνήθειας 1 22 Λογισμικές εφαρμογές καταγραφής και αξιοποίησης πληροφοριών σχετικά με τον έλεγχο της καπνιστικής συνήθειας Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων

Διαβάστε περισσότερα

Πίνακες HTML. Παναγιώτης Γαλάτης 1ο ΕΠΑΛ Ηρακλείου

Πίνακες HTML. Παναγιώτης Γαλάτης 1ο ΕΠΑΛ Ηρακλείου Πίνακες HTML Παναγιώτης Γαλάτης 1ο ΕΠΑΛ Ηρακλείου Τι είναι Πίνακας Ένας πίνακας στοιχείων αποτελείται από γραμμές και στήλες. Το σημείο τομής μιας γραμμής και μιας στήλης ονομάζεται κελί (cell( cell).

Διαβάστε περισσότερα

Συνοπτικός οδηγός χρήσης της πλατφόρμας ασύγχρονης τηλεεκπαίδευσης. Καθηγητή

Συνοπτικός οδηγός χρήσης της πλατφόρμας ασύγχρονης τηλεεκπαίδευσης. Καθηγητή Συνοπτικός οδηγός χρήσης της πλατφόρμας ασύγχρονης τηλεεκπαίδευσης Moodle για τον Καθηγητή Πίνακας Περιεχομένων 1. Εισαγωγή...3 1.1 Περιβάλλον Moodle... 3 1.2 Εισαγωγή / εγγραφή στην πλατφόρμα... 3 2 Δημιουργία

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ ΛΟΓΙΣΜΙΚΟΥ E-LEARNING - 2 -

ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ ΛΟΓΙΣΜΙΚΟΥ E-LEARNING - 2 - - 2 - ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ ΛΟΓΙΣΜΙΚΟΥ E-LEARNING Περιεχόµενα Εγκατάσταση λογισµικού Οθόνη καλωσορίσµατος στην εγκατάσταση...4 Πληροφορίες ιδρύµατος και λογισµικού...5 ηµιουργία συντόµευσης στο µενού έναρξης

Διαβάστε περισσότερα

ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ ΠΑΡΑΡΤΗΜΑ ΧΙ

ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ ΠΑΡΑΡΤΗΜΑ ΧΙ ΕΘΝΙΚΟΝ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟΝ ΠΑΝΕΠΙΣΤΗΜΙΟΝ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ 2008-2013 ΠΑΡΑΡΤΗΜΑ ΧΙ ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ

Διαβάστε περισσότερα

Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Ενότητα. Σχεδίαση Βάσεων Δεδομένων Ενότητα 3 Σχεδίαση Βάσεων Δεδομένων 2 3 3.1 Εισαγωγή Μία βάση δεδομένων αποτελείται από δεδομένα για διάφορα θέματα τα οποία όμως σχετίζονται μεταξύ τους και είναι καταχωρημένα με συγκεκριμένο τρόπο. Όλα

Διαβάστε περισσότερα

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1 Διαχείριση Πληροφοριών στο Διαδίκτυο Εργαστήριο 1 Τεχνολογικό Εκπαιδευτικό Ίδρυμα Καβάλας Σχολή Διοίκησης & Οικονομίας Τμήμα Διαχείρισης Πληροφοριών Διδάσκων Μαρδύρης Βασίλειος, Διπλ. Ηλ. Μηχανικός & Μηχ.

Διαβάστε περισσότερα

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΜΑΘΗΜΑΤΩΝ ΚΑΙ ΕΠΕΞΕΡΓΑΣΙΑΣ ΣΤΟΙΧΕΙΩΝ ΚΑΙ ΕΠΙΔΟΣΕΩΝ ΦΟΙΤΗΤΩΝ. Σταθάκης Απόστολος Α.Ε.Μ.

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΜΑΘΗΜΑΤΩΝ ΚΑΙ ΕΠΕΞΕΡΓΑΣΙΑΣ ΣΤΟΙΧΕΙΩΝ ΚΑΙ ΕΠΙΔΟΣΕΩΝ ΦΟΙΤΗΤΩΝ. Σταθάκης Απόστολος Α.Ε.Μ. ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΜΑΘΗΜΑΤΩΝ ΚΑΙ

Διαβάστε περισσότερα

Εγχειρίδιο χρήσης για τον φοιτητή

Εγχειρίδιο χρήσης για τον φοιτητή Εγχειρίδιο χρήσης για τον φοιτητή 1 Αρχική οθόνη Όταν κάποιος χρήστης εισέρχεται για πρώτη φορά στο σύστημα εμφανίζεται η παρακάτω οθόνη/σελίδα: Στα αριστερά της οθόνης εμφανίζεται η φόρμα σύνδεσης στην

Διαβάστε περισσότερα

Μια φόρμα με διάταξη πίνακα (tabular form) εμφανίζει τα πεδία με μορφή

Μια φόρμα με διάταξη πίνακα (tabular form) εμφανίζει τα πεδία με μορφή Εργαστήριο 9 ο Τι είναι φόρμα Η φόρμα παρέχει έναν εναλλακτικό και συνήθως πιο φιλικό τρόπο να προβάλουμε τα δεδομένα ενός πίνακα. Μια φόρμα εμφανίζει τα δεδομένα με όποια μορφή θέλουμε και όχι μόνο σε

Διαβάστε περισσότερα

Εργαστήριο #10 (Ε10) 1

Εργαστήριο #10 (Ε10) 1 Εργαστήριο #10 Από τα προηγούμενα εργαστήρια......θα χρειαστείτε ορισμένες από τις οδηγίες μορφοποίησης CSS (ανατρέξτε στις εκφωνήσεις του 8 ου και 9 ου εργαστηρίου).! Οδηγίες Στη δυναμική δημιουργία ιστοσελίδων

Διαβάστε περισσότερα

Βασικές Οδηγίες Χρήσης της Εφαρμογής

Βασικές Οδηγίες Χρήσης της Εφαρμογής Βασικές Οδηγίες Χρήσης της Εφαρμογής Σύνδεση στην Εφαρμογή Πριν ξεκινήσετε την εργασία σας με το Σύστημα Διαχείρισης Εφαρμογών του ΚΕΠΕΑ πρέπει να συνδεθείτε δίνοντας το username και το password που σας

Διαβάστε περισσότερα

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ -Για τους Φοιτητές- Έκδοση 1.2 Οκτώβριος 2015 Υπεύθυνος Σύνταξης: Χρήστος Λάζαρης (lazaris@aueb.gr) Πίνακας Περιεχομένων Εισαγωγή...

Διαβάστε περισσότερα

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I Διαδικτυακή Εφαρμογή (1/2) Ως διαδικτυακή εφαρμογή μπορούμε

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb)

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb) ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb) 1. Είσοδος στην υπηρεσία ClassWeb Στη κεντρική σελίδα της υπηρεσίας στα πεδία Όνομα Χρήστη και Κωδικός πρόσβασης πληκτρολογούμε τα στοιχεία

Διαβάστε περισσότερα

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΜΕΣΟΛΟΓΓΙ ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ ΕΡΓΑΣΤΗΡΙΟ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2014-2015. Διαδικασία Κατάρτησης Επιχειρηματικού Σχεδίου

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΜΕΣΟΛΟΓΓΙ ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ ΕΡΓΑΣΤΗΡΙΟ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2014-2015. Διαδικασία Κατάρτησης Επιχειρηματικού Σχεδίου ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΜΕΣΟΛΟΓΓΙ ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ ΕΡΓΑΣΤΗΡΙΟ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2014-2015 ΕΡΓΑΣΤΗΡΙΑΚO ΜΕΡΟΣ B Eπιχειρηματικό Σχέδιο και Σχεδίαση 1 ης Σελίδας Σκοπός: σκοπός του Β εργαστηριακού

Διαβάστε περισσότερα

XAMPP Apache MySQL PHP javascript xampp

XAMPP Apache MySQL PHP javascript xampp XAMPP Το xampp είναι ένα δωρεάν πρόγραμμα με το οποίο μπορούμε να κάνουμε εγκατάσταση τον Apache, τη MySQL και την PHP. Apache. Ο Apache είναι ένας Web Server. Είναι δηλαδή πρόγραμμα το οποίο τρέχει μόνιμα

Διαβάστε περισσότερα

11. Η γλώσσα HTML Πίνακες, Λίστες, Φόρμες

11. Η γλώσσα HTML Πίνακες, Λίστες, Φόρμες 11. Η γλώσσα HTML Πίνακες, Λίστες, Φόρμες Σκοπός του Εργαστηρίου: Σκοπός της παρούσας εργαστηριακής άσκησης είναι η εμβάθυνση σε συχνά χρησιμοποιούμενες ετικέτες HTML, όπως οι πίνακες και οι λίστες, καθώς

Διαβάστε περισσότερα

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

Διαβάστε περισσότερα

Φόρμες. Γενικοί κανόνες. Η ετικέτα <form>

Φόρμες. Γενικοί κανόνες. Η ετικέτα <form> Φόρμες Οι φόρμες περιέχουν τα στοιχεία φόρμας στο οποία ένας χρήστης μπορεί να εισαγάγει δεδομένα τα οποία στη συνέχεια αποστέλλονται σε έναν εξυπηρετητή για παραπέρα επεξεργασία. Γενικοί κανόνες Για τις

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence Έκδοση 1.3 Ιούνιος 2014 Περιεχόμενα Εφαρμογή Διαχείρισης Τηλεδιασκέψεων... 2 Προβολή τηλεδιασκέψεων... 3 Προσθήκη τηλεδιάσκεψης... 4 Τροποποίηση

Διαβάστε περισσότερα

2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ

2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ 2014 2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ H HTML είναι μία γλώσσα σήμανσης και αποτελεί την κύρια γλώσσα δημιουργίας ιστοσελίδων του διαδικτύου. Είναι το ακρωνύμιο των λέξεων HyperText

Διαβάστε περισσότερα

Εργαστήριο 6. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας. a) Εκκίνηση XAMPP

Εργαστήριο 6. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας. a) Εκκίνηση XAMPP Εργαστήριο 6 Προγραμματιστικές Εφαρμογές στο Διαδίκτυο Στόχος Στόχος του εργαστηρίου είναι η εισαγωγή στην γλώσσα PHP και η εξοικείωση των φοιτητών στην χρήση του Web Server για την εξυπηρέτηση σελίδων

Διαβάστε περισσότερα

Διαχείριση Ωρολογίων Προγραμμάτων

Διαχείριση Ωρολογίων Προγραμμάτων Διαχείριση Ωρολογίων Προγραμμάτων Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της Διαδικασίας Πλήρους Διαχείρισης Ωρολογίων Προγραμμάτων. Παρακάτω προτείνεται μια αλληλουχία

Διαβάστε περισσότερα

Διαχείριση Ωρολογίων Προγραμμάτων Εκπαιδευτικών

Διαχείριση Ωρολογίων Προγραμμάτων Εκπαιδευτικών Διαχείριση Ωρολογίων Προγραμμάτων Εκπαιδευτικών Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της Διαδικασίας Πλήρους Διαχείρισης Ωρολογίων Προγραμμάτων. Παρακάτω προτείνεται μια

Διαβάστε περισσότερα

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΑΝΑΚΟΙΝΩΣΗ ΩΡΟΛΟΓΙΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΚΑΙ ΟΔΗΓΙΕΣ ΕΓΓΡΑΦΩΝ ΕΡΓΑΣΤΗΡΙΩΝ

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΑΝΑΚΟΙΝΩΣΗ ΩΡΟΛΟΓΙΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΚΑΙ ΟΔΗΓΙΕΣ ΕΓΓΡΑΦΩΝ ΕΡΓΑΣΤΗΡΙΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΑΝΑΚΟΙΝΩΣΗ ΩΡΟΛΟΓΙΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΚΑΙ ΟΔΗΓΙΕΣ ΕΓΓΡΑΦΩΝ ΕΡΓΑΣΤΗΡΙΩΝ Οι ηλεκτρονικές εγγραφές θα ενεργοποιηθούν στις 23/03/2018 και θα είναι

Διαβάστε περισσότερα

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP Τεχνολογίες Διαδικτύου Server Side Scripting I PHP Εισαγωγή PHP PHP:Hypertext Preprocessor Mηχανή που συνοδεύει web servers όπως ο IIS και ο Apache Η PHP είναι γλώσσα προγραμματισμού για web εφαρμογές

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ:

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: ΘΕΟΔΟΣΙΟΥ ΝΙΚΗ Α.Μ. 103/04 ΠΑΠΑΠΕΤΡΟΥ ΦΩΤΕΙΝΗ Α.Μ. 134/04 Εξεταστική Επιτροπή Επιβλέπουσα Καθηγήτρια : Σατρατζέμη Μαρία, Καθηγήτρια Μέλη : Ευαγγελίδης

Διαβάστε περισσότερα

Οδηγίες Χρήσης της MySQL

Οδηγίες Χρήσης της MySQL ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΗΜΕΙΩΣΕΙΣ ΣΕ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Οδηγίες Χρήσης της MySQL Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Νοέμβριος 2007 1 Περιεχόμενα Εισαγωγή...2

Διαβάστε περισσότερα

POWERPOINT 2003. Είναι το δημοφιλέστερο πρόγραμμα παρουσιάσεων.

POWERPOINT 2003. Είναι το δημοφιλέστερο πρόγραμμα παρουσιάσεων. POWERPOINT 2003 1. Τι είναι το PowerPoint (ppt)? Είναι το δημοφιλέστερο πρόγραμμα παρουσιάσεων. 2. Τι δυνατότητες έχει? Δημιουργία παρουσίασης. Μορφοποίηση παρουσίασης. Δημιουργία γραφικών. Δημιουργία

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ της Πλατφόρμας Τηλεκατάρτισης ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή...2 2. Αρχική σελίδα, Εισαγωγή & Περιβάλλον Συστήματος...3 2.1. Αρχική σελίδα εισαγωγής...3 2.2. Εισαγωγή στην Πλατφόρμα Τηλε-κατάρτισης...4

Διαβάστε περισσότερα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων Ενότητα 3 Σχεδίαση Βάσεων Δεδομένων 17 18 3.1 Εισαγωγή Μία βάση δεδομένων αποτελείται από δεδομένα για διάφορα θέματα τα οποία όμως σχετίζονται μεταξύ τους και είναι καταχωρημένα με συγκεκριμένο τρόπο.

Διαβάστε περισσότερα

Απλά, γρήγορα, σωστά ΒΑΣΙΚΕΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΩΝ

Απλά, γρήγορα, σωστά ΒΑΣΙΚΕΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΩΝ ΒΑΣΙΚΕΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΩΝ 26-2-2010 Κεντρική σελίδα επιλογής εταιρείας και προϊόντων Εµφάνιση λίστας µε αποθηκευµένες αιτήσεις ή προσφορές Αλλαγή του username και password και άλλων στοιχείων Είσοδος

Διαβάστε περισσότερα

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

Διαβάστε περισσότερα

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος 2011 2012, Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος 2011 2012, Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΕΠΙΚΟΙΝΩΝΙΑΣ & ΣΠΟΥΔΩΝ ΔΙΑΔΙΚΤΥΟΥ ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Ακαδημαϊκό Έτος 2011 2012, Εαρινό Εξάμηνο Εργαστηριακή Άσκηση 4 7/02/2012

Διαβάστε περισσότερα

CARDISOFT. User Guide. ClassWeb VERSION 1.1. [February] [2007] Cardisoft Ανώνυµη Εταιρία Παραγωγής Λογισµικού

CARDISOFT. User Guide. ClassWeb VERSION 1.1. [February] [2007] Cardisoft Ανώνυµη Εταιρία Παραγωγής Λογισµικού Cardisoft Ανώνυµη Εταιρία Παραγωγής Λογισµικού Μοναστηρίου 60, 54627 Θεσσαλονίκη, Τηλ 2310 567840, Fax 2310 514220, www.cardisoft.gr CARDISOFT User Guide ClassWeb VERSION 1.1 [February] [2007] Greece Monastiriou

Διαβάστε περισσότερα

Εργαστήριο Βάσεων Δεδομένων

Εργαστήριο Βάσεων Δεδομένων Εργαστήριο Βάσεων Δεδομένων Φροντιστήριο 4/2/2009 Δικαιώματα χρηστών - Προβολές (Views) ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ MYSQL queries results mysql host DB server queries results Client host Β Δ Ηχρήσητηςmysql βασίζεται

Διαβάστε περισσότερα

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2 ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2 1 ΠΕΡΙΕΧΟΜΕΝΑ Πρωτόκολο http εντολών έκδοση 1.0 Σελ:2...περιεχόμενα Σελ:3...τι θα βρείτε σε αυτό το βιβλίο Σελ:3...γενικά τεχνικά χαρακτηριστικά Σελ:4-5...πως

Διαβάστε περισσότερα

ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ. Draft version

ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ. Draft version ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ Draft version Θεσσαλονίκη, Ιούλιος 2016 ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... 4 1. ΓΕΝΙΚΑ... 5 1.1. Πρόσβαση... 5 1.2. Χρήστες... 5 2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ ΗΜΑ... 6 2.1.

Διαβάστε περισσότερα

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Κοινών Πόρων

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Κοινών Πόρων ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Κοινών Πόρων Έκδοση 1.1 Περιεχόμενα Πρόλογος... 3 1. Εισαγωγή και Έξοδος απο το Σύστημα... 4 2. Κουμπί Βοήθεια... 4 3. Μενού Επιλογών...

Διαβάστε περισσότερα

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access Περιεχόμενα Λίγα λόγια από το συγγραφέα... 7 Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access... 9 Κεφάλαιο 2: Microsoft Access 2002... 20 Κεφάλαιο 3: Το σύστημα Βοήθειας του Microsoft Office ΧΡ... 36

Διαβάστε περισσότερα

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Οδηγός Χρήσης Εφαρμογής Γραφείων Πρακτικής Άσκησης Αφού πιστοποιηθεί ο λογαριασμός που δημιουργήσατε στο πρόγραμμα «Άτλας» ως Γραφείο Πρακτικής,

Διαβάστε περισσότερα

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος 4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος Μεταβλητές Συστήματος Η Processing χρησιμοποιεί κάποιες μεταβλητές συστήματος, όπως τις ονομάζουμε, για να μπορούμε να παίρνουμε πληροφορίες από το

Διαβάστε περισσότερα

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3 ο ΕΞΑΜΗΝΟ Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 6 ο Εργαστήριο - ΕΠΙΜΕΛΕΙΑ ΜΑΘΗΜΑΤΟΣ: Πρέντζα Ανδριάννα ΕΠΙΜΕΛΕΙΑ ΕΡΓΑΣΤΗΡΙΟΥ: Στουγιάννου

Διαβάστε περισσότερα

Εύδοξος - Δήλωση Συγγραμμάτων

Εύδοξος - Δήλωση Συγγραμμάτων Εύδοξος - Δήλωση Συγγραμμάτων Το πρόγραμμα «Εύδοξος» αφορά στη διανομή Συγγραμμάτων των Τεχνολογικών και Πανεπιστημιακών Ιδρυμάτων της Επικράτειας. Στόχος του Πληροφοριακού Συστήματος (ΠΣ) της Δράσης είναι

Διαβάστε περισσότερα

ΠΑ-24γ Εγχειρίδιο Χρήσης Δ.Δ.Π. Του Δήμου Αιγάλεω

ΠΑ-24γ Εγχειρίδιο Χρήσης Δ.Δ.Π. Του Δήμου Αιγάλεω ΤΙΤΛΟΣ ΕΓΓΡΑΦΟΥ ΠΑ-24γ Εγχειρίδιο Χρήσης Δ.Δ.Π. Του Δήμου Αιγάλεω Έκδοση 1.0 12 Ιανουαρίου 2009 ΑΡΙΘΜΟΣ ΣΥΜΒΑΣΗΣ : 25978/04.08.2008 ΕΠΙΣΗΜΗ ΟΝΟΜΑΣΙΑ ΕΡΓΟΥ : Προσαρμογή, Ανάπτυξη, Έλεγχος και Εγκατάσταση

Διαβάστε περισσότερα

ΑΚΑΔΗΜΑΪΚΟ PORTAL ΚΑΤΑΧΩΡΙΣΗΣ ΒΑΘΜΟΛΟΓΙΩΝ

ΑΚΑΔΗΜΑΪΚΟ PORTAL ΚΑΤΑΧΩΡΙΣΗΣ ΒΑΘΜΟΛΟΓΙΩΝ ΑΚΑΔΗΜΑΪΚΟ PORTAL ΚΑΤΑΧΩΡΙΣΗΣ ΒΑΘΜΟΛΟΓΙΩΝ ΙΕΚ ΑΚΜΗ ΑΚΑΔΗΜΑΪΚΟ PORTAL ΚΑΤΑΧΩΡΙΣΗΣ ΒΑΘΜΟΛΟΓΙΩΝ - Έκδοση 1.00-1- ΠΡΟΣΒΑΣΗ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ... 3 Απαιτήσεις εξοπλισμού... 3 Διεύθυνση ιστού Web address... 3 Διαδικασία

Διαβάστε περισσότερα

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. Οδηγός Διαχειριστή Το m-learning Toolkit είναι μια ολοκληρωμένη πλατφόρμα εξ αποστάσεως εκπαίδευσης που έχει σχεδιαστεί για να υπάρχει η δυνατότητα της πρόσβασης

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΑΝΤΑΛΛΑΚΤΗΡΙΩΝ

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΑΝΤΑΛΛΑΚΤΗΡΙΩΝ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΑΝΤΑΛΛΑΚΤΗΡΙΩΝ ΠΕΡΙΕΧΟΜΕΝΑ 1.Γενικές παρατηρήσεις... 3 1.2 Είσοδος στην εφαρμογή... 4 2. Πίνακας αναφορών... 5 2.1 Περιγραφή του πίνακα αναφορών... 6 2.3 Ταξινόμηση... 6 3. Προσθήκη/επεξεργασία

Διαβάστε περισσότερα

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων...

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων... Μέρος 2 Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων... 211 Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων... 241 Kεφάλαιο 13 Ανάλυση δεδομένων... 257 Kεφάλαιο 14 Συναρτήσεις Μέρος Β... 285 Kεφάλαιο 15 Ευρετήριο

Διαβάστε περισσότερα

Υποβολή Αναλώσιµων Υλικών ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Υποβολή Αναλώσιμων Υλικών. Σελίδα 1

Υποβολή Αναλώσιµων Υλικών ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Υποβολή Αναλώσιμων Υλικών. Σελίδα 1 ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Ηλεκτρονικές Υπηρεσίες Υποβολή Αναλώσιµων Υλικών Σελίδα 1 Πίνακας περιεχομένων 1.1 Συμβατότητα Browser... 3 1.2 Διεύθυνση πρόσβασης... 3 2 Υποβολή Αναλώσιμων Υλικών... 4 2.1 Σύνδεση με

Διαβάστε περισσότερα

Εργαστήριο 10o. Συγκεντρωτικά Ερωτήματα Ερωτήματα Διασταύρωσης Ερωτήματα Ενεργειών. Ευάγγελος Γ. Καραπιδάκης

Εργαστήριο 10o. Συγκεντρωτικά Ερωτήματα Ερωτήματα Διασταύρωσης Ερωτήματα Ενεργειών. Ευάγγελος Γ. Καραπιδάκης Εργαστήριο 10o Συγκεντρωτικά Ερωτήματα Ερωτήματα Διασταύρωσης Ερωτήματα Ενεργειών Συγκεντρωτικά ερωτήματα Με τα συγκεντρωτικά ερωτήματα μπορούμε να ομαδοποιήσουμε τα δεδομένα μας και να υπολογίσουμε για

Διαβάστε περισσότερα

6 Εισαγωγή στο Wordpress 3.x

6 Εισαγωγή στο Wordpress 3.x Περιεχόμενα 1 Εγκατάσταση του WordPress... 11 Ελάχιστες απαιτήσεις... 11 Easy PHP... 12 Εγκατάσταση Easy PHP... 12 Βήματα εγκατάστασης EasyPHP με εικόνες... 13 Το EasyPHP στα Ελληνικά... 17 Κατέβασμα και

Διαβάστε περισσότερα

ΗΛΕΚΤΡΟΝΙΚΗ ΥΠΗΡΕΣΙΑ ΑΠΟΚΤΗΣΗΣ ΑΚΑΔΗΜΑΪΚΗΣ ΤΑΥΤΟΤΗΤΑΣ

ΗΛΕΚΤΡΟΝΙΚΗ ΥΠΗΡΕΣΙΑ ΑΠΟΚΤΗΣΗΣ ΑΚΑΔΗΜΑΪΚΗΣ ΤΑΥΤΟΤΗΤΑΣ ΗΛΕΚΤΡΟΝΙΚΗ ΥΠΗΡΕΣΙΑ ΑΠΟΚΤΗΣΗΣ ΑΚΑΔΗΜΑΪΚΗΣ ΤΑΥΤΟΤΗΤΑΣ Εγχειρίδιο Εφαρμογής Φοιτητών Πίνακας Εικόνων Εικόνα 1.1. Εκκίνηση της διαδικασία εγγραφής...5 Εικόνα 1.2. Σελίδα εγγραφής...6 Εικόνα 1.3. Είσοδος

Διαβάστε περισσότερα

Επιστημονικές εκδηλώσεις

Επιστημονικές εκδηλώσεις Εφαρμογή υποβολής ηλ. αιτήσεων ΕγχειρίδιοΧρήσης Ημερομηνία : 01-10-2017 Έκδοση: 1.0 Περιεχόμενα 1 ΓΕΝΙΚΑ... 3 2 ΠΡΟΣΒΑΣΗ... 4 3 ΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑ... 4 3.1 Είσοδος στο σύστημα... 4 3.2 Μητρώο... 5 3.2.1 Εκδηλώσεις

Διαβάστε περισσότερα

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Περιεχόμενα Εισαγωγή στην εφαρμογή... 2 Βασική Σελίδα (Activity)... 3 Ρυθμίσεις... 3 Πελάτες... 6 Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Αποθήκη... 11 Αναζήτηση προϊόντος...

Διαβάστε περισσότερα

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

Εργασία 11 η Πίνακες (βασικές ετικέτες, βασικές ιδιότητες) 1. Στο Σημειωματάριο πληκτρολογήστε τον παρακάτω κώδικα:

Εργασία 11 η Πίνακες (βασικές ετικέτες, βασικές ιδιότητες) 1. Στο Σημειωματάριο πληκτρολογήστε τον παρακάτω κώδικα: Εργασία 11 η Πίνακες (βασικές ετικέτες, βασικές ιδιότητες) 1. Στο Σημειωματάριο πληκτρολογήστε τον παρακάτω κώδικα: εισαγωγή εικόνων

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑ ΑΠΟΜΑΚΡΥΣΜΕΝΗΣ ΕΙΣΑΓΩΓΗΣ ΒΑΘΜΟΛΟΓΙΩΝ ΑΠΟ ΔΙΔΑΣΚΟΝΤΕΣ

ΠΡΟΓΡΑΜΜΑ ΑΠΟΜΑΚΡΥΣΜΕΝΗΣ ΕΙΣΑΓΩΓΗΣ ΒΑΘΜΟΛΟΓΙΩΝ ΑΠΟ ΔΙΔΑΣΚΟΝΤΕΣ ΠΡΟΓΡΑΜΜΑ ΑΠΟΜΑΚΡΥΣΜΕΝΗΣ ΕΙΣΑΓΩΓΗΣ ΒΑΘΜΟΛΟΓΙΩΝ ΑΠΟ ΔΙΔΑΣΚΟΝΤΕΣ 1. ΓΕΝΙΚΑ Εκδοση 1.0, 26/08/2009 Η εγκατάσταση του προγράμματος απομακρυσμένης εισαγωγής βαθμολογιών απαιτεί περιβάλλον windows (Windows 2000,

Διαβάστε περισσότερα

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ 1 ΠΕΡΙΕΧΟΜΕΝΑ 1. ΑΝΑΛΥΣΗ ΜΕΝΟΥ ΕΦΑΡΜΟΓΗΣ... 4 2. ΕΠΕΞΗΓΗΣΗ ΚΕΝΤΡΙΚΟΥ ΜΕΝΟΥ ΚΑΡΤΕΛΑΣ... 5 3. ΔΗΜΙΟΥΡΓΙΑ ΠΕΛΑΤΗ... 6 4. ΑΝΑΖΗΤΗΣΗ ΠΕΛΑΤΗ... 6 5. ΕΠΕΞΕΡΓΑΣΙΑ/ΔΙΑΓΡΑΦΗ

Διαβάστε περισσότερα

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο Το περιβάλλον εργασίας Ανοίγοντας την Ελληνική Έκδοση του FrontPage, για πρώτη φορά, η εικόνα που θα συναντήσουμε είναι αυτή της Εικόνας 1 με τα Μενού Εντολών και τη Γραμμή Εργαλείων, στο πάνω μέρος της

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΩΡΟΛΟΓΙΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ

ΔΙΑΧΕΙΡΙΣΗ ΩΡΟΛΟΓΙΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ ΔΙΑΧΕΙΡΙΣΗ ΩΡΟΛΟΓΙΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της Διαδικασίας Πλήρους Διαχείρισης Ωρολογίων Προγραμμάτων. Παρακάτω προτείνεται μια αλληλουχία

Διαβάστε περισσότερα