Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΘΕΜΑ Ανάπτυξη διαδικτυακής εφαρμογής για την διαχείριση εμπορικού καταστήματος ενοικίασης ταινιών με χρήση Php, Mysql, Apache ΣΠΟΥΔΑΣΤΡΙΑ : Νταλιάνη Αικατερίνη ΝΟΕΜΒΡΙΟΣ 2008 ΕΠΟΠΤΗΣ ΚΑΘΗΓΗΤΗΣ Δρ. Χατζής Βασίλειος Εκπονηθείσα πτυχιακή εργασία απαραίτητη για την κτήση του βασικού πτυχίου
ΕΥΧΑΡΙΣΤΙΕΣ ΕΥΧΑΡΙΣΤΙΕΣ Με την ολοκλήρωση της πτυχιακής μου εργασίας με θέμα την ανάπτυξη διαδικτυακής εφαρμογής για την διαχείριση εμπορικού καταστήματος ενοικίασης ταινιών με χρήση των εργαλείων Php, Mysql και Apache, θα ήθελα να ευχαριστήσω όλους τους διδάσκοντες του τμήματος Διαχείρισης Πληροφοριών του Τ.Ε.Ι. Καβάλας. Οφείλω όμως ξεχωριστά να ευχαριστήσω θερμά τον επιβλέποντα καθηγητή μου κ. Χατζή Βασίλειο για την πολύ καλή συνεργασία μας, το ενδιαφέρον που επέδειξε για την συγγραφή της παρούσας πτυχιακής εργασίας, καθώς και για την σχολαστικότητα, την συνέπεια και την καινοτόμο διάθεση που τον διακρίνουν. Σε αυτό το σημείο θα ήταν παράληψη μου να μην ευχαριστήσω τους γονείς μου και τα αδέρφια μου που με στήριξαν και μου συμπαραστάθηκαν όλον αυτό τον καιρό τόσο ψυχολογικά όσο και οικονομικά αλλά και τους φίλους μου που με ενθάρρυναν και με βοήθησαν σε δύσκολες στιγμές για μένα. Σελίδα 2 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη Περιεχόμενα ΕΙΣΑΓΩΓΗ...5 1 PHP...7 1.1 Ιστορική Αναδρομή... 7 1.2 Ορισμός PHP... 9 1.3 Εντολές...10 1.4 Τ ύποι Μεταβλητών... 12 1.5 Τελεστές...12 1.6 Δομές Ελέγχου...15 1.6.1 Αποφάσεις με συνθήκες υπό Όρους...15 1.6.2 Αποφάσεις Επανάληψης : Επαναλαμβάνοντας ενέργειες... 17 1.7 Βασικά Χαρακτηριστικά... 19 1.8 Πλεονεκτήματα...20 2 MYSQL...23 2.1 Τ ύποι Δεδομένων... 26 2.2 Τι είναι η SQL;...27 2.3 Πλεονεκτήματα MYSQL... 30 3 ΔΙΑΚΟΜΙΣΤΕΣ ΔΙΑΔΙΚΤΥΟΥ (WEB SERVERS)... 32 3.1 Apache Web Server... 34 3.2 Συνεργασία της MySQL, PHP και του Apache Server...34 4.ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΠΕΡΙΓΡΑΦΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ...36 4.1 Δομή Τ ης Βάσης Δεδομένων...36 4.2 Δημιουργία Πινάκων Και Ανάλυση Πεδίων... 39 4.3 Σύνδεση Με Το Διακομιστή Βάση Δεδομένων...54 4.3.1 Επιλογή Μιας Βάσης Δεδομένων...55 5 ΑΝΑΠΤΥΞΗ ΚΑΙ ΠΕΡΙΓΡΑΦΗ ΔΙΑΔΥΚΤΙΑΚΩΝ ΙΣΤΟΣΕΛΙΔΩΝ...56 Σελίδα 3 από 91
ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ Αρχική Σελίδα...56 Εγγραφή Νέου Υπαλλήλου...57 Κεντρική Σελίδα...60 Εγγραφή Νέου Πελάτη... 61 Αναζήτηση Πελάτη... 63 Διαγραφή Πελάτη... 66 Επεξεργασία Πελάτη...67 Εγγραφή Ταινίας... 69 Καταχώρηση Σκηνοθέτη... 70 Καταχώρηση Χώρας Προέλευσης...71 Καταχώρηση Ηθοποιού... 72 Καταχώρηση Στοιχείων Ταινίας... 74 Επιλογή Ταινίας - Ηθοποιού...76 Επιλογή Ηθοποιού... 77 Αναζήτηση Ταινίας... 78 Διαγραφή Ταινίας... 80 Κρατημένες Τ αινίες... 81 Επιστροφή Ταινίας... 82 Ενοικίαση Ταινίας... 85 Κράτηση Ταινίας... 86 Εμφάνιση Πελατών... 87 Εμφάνιση Ταινιών... 89 ΣΥΜΠΕΡΑΣΜΑΤΑ...90 ΒΙΒΛΙΟΓΡΑΦΙΑ... 91 Σελίδα 4 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη ΕΙΣΑΓΩΓΗ Η συγκεκριμένη εργασία δημιουργήθηκε στα πλαίσια πτυχιακής εργασίας κατά το ακαδημαϊκό έτος 2008-2009 για λογαριασμό του Τεχνολογικού Εκπαιδευτικού Ιδρύματος Καβάλας. Σκοπός της πτυχιακής εργασίας είναι η μελέτη και ανάπτυξη ενός συστήματος ενοικίασης ταινιών μεταξύ των υπαλλήλων και των πελατών του συγκεκριμένου καταστήματος. Το σύστημα που δημιουργήθηκε επιτρέπει στον υπάλληλο να εισέρχεται στον ιστοχώρο του καταστήματος με την χρήση του προσωπικού κωδικού πρόσβασης που του έχει δοθεί και με αυτόν τον τρόπο να μπορεί να λαμβάνει πληροφορίες σχετικά με τις διαθέσιμες ταινίες του καταστήματος, τις ενοικιαζόμενες ταινίες, το υπόλοιπο κάθε πελάτη, το συνολικό ποσό που έχει καταβάλει ο πελάτης κτλ. Απώτερος σκοπός είναι να αποτελέσει την αρχή για μια συντονισμένη βελτίωση των ηλεκτρονικών υπηρεσιών που παρέχονται από ένα σύστημα παροχής ταινιών στους πελάτες τους με στόχο την έγκυρη και άμεση εξυπηρέτηση των πελατών του. Ωστόσο η εφαρμογή μπορεί να αποδειχτεί χρήσιμη και πολύ αποτελεσματική στην αποσυμφόρηση του όγκου των καθημερινών λειτουργιών του καταστήματος. Για να δημιουργηθεί η εφαρμογή χρησιμοποιήθηκε ο συνδυασμός των εργαλείων PHP και MySQL. Οι δύο αυτές τεχνολογίες συνεργάστηκαν με τον διαδικτυακό διακομιστή (web server) Apache Server. Τα εργαλεία αυτά διανέμονται δωρεάν στο διαδίκτυο και αναλύονται διεξοδικά στα επόμενα κεφάλαια. Ακόμη χρησιμοποιήθηκε το εργαλείο MySQL administrator το οποίο επίσης διανέμεται δωρεάν και παρέχει ένα γραφικό περιβάλλον διαχείρισης του σχεσιακού συστήματος βάσης δεδομένων MySQL. Δυνατότητες που προσφέρει: Δημιουργία και διαγραφή βάσεων δεδομένων Δημιουργία, αντιγραφή, διαγραφή και να μετονομασία πινάκων Διαγράφει, δημιουργεί και προσθέτει πεδία Διαχειρίζεται τα πρωτεύοντα και τα δευτερεύοντα κλειδιά των πεδίων Φορτώνει δεδομένα πινάκων από αρχεία. Εξάγει τα δεδομένα σε μορφή SQL,CSV για MS Excel, XML και LaTex. Σελίδα 5 από 91
ΕΙΣΑΓΩΓΗ μ Διαχειρίζεται πολλαπλούς server μ Διαχειρίζεται τους χρήστες της MySQL και τα δικαιώματά τους Τέλος, θα πρέπει να αναφέρουμε το εργαλείο MySQL QueryBrowser το οποίο: μ Διανέμεται δωρεάν από τη MySQL μ Γίνετε εύκολη δημιουργία ερωτημάτων με τη βοήθεια interface μ Δημιουργεί πολύπλοκα ερωτήματα μ Αναζητά στοιχεία συνολικά στη βάση ή σε υποσύνολά της. μ Μετασχηματίζει τα αποθηκευμένα δεδομένα σε οποιαδήποτε μορφή χρησιμοποιώντας ένα σύνολο προκαθορισμένων συναρτήσεων [12] Στο πρώτο κεφάλαιο αναλύεται η ιστορική αναδρομή της γλώσσας προγραμματισμού php, οι εντολές που χρησιμοποιεί, οι δομές ελέγχου, τα βασικά χαρακτηριστικά και τα πλεονεκτήματα που έχει. Στο δεύτερο κεφάλαιο αναλύεται το σύστημα διαχείριση βάσεων δεδομένων (mysql), οι τύποι δεδομένων και τα πλεονεκτήματα της, ενώ, στο τρίτο κεφάλαιο παρουσιάζεται ο τρόπος επικοινωνίας μεταξύ της γλώσσας προγραμματισμού php, του διακομιστή apache και της mysql. Ακολουθεί η δομή της βάσης δεδομένων, οι πίνακες που περιέχει και η ανάλυση των πεδίων τους. Παρουσιάζεται η σύνδεση με τον διακομιστή και η επιλογή της βάσης (κεφάλαιο τέταρτο). Τέλος, η εφαρμογή ολοκληρώνεται με την ανάπτυξη και την περιγραφή των διαδικτυακών εφαρμογών (κεφάλαιο πέμπτο). Σελίδα 6 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη 1 PHP Ο Rasmus Lerdorf είναι ο άνθρωπος που ανέπτυξε την PHP το έτος 1994. Ενσωμάτωσε τη μη δημοσιοποιημένη έκδοση μέσα στην προσωπική του ιστοσελίδα. Την χρησιμοποιούσε για να παρακολουθεί τον αριθμό των επισκεπτών της ιστοσελίδας του. Κανένας άλλος δε γνώριζε την ύπαρξη της, μέχρι τις αρχές του 1995 οπότε και έγινε διαθέσιμη η πρώτη έκδοσή της, γνωστή ως Personal Home Page Tools [6]. 1.1 Ιστορική Αναδρομή Personal Home Page: Αυτή η έκδοση της PHP αποτελούνταν από μια μηχανή parser που υποστήριζε κάποιες μακροεντολές και βοηθήματα που χρησιμοποιούνταν συχνά στις προσωπικές ιστοσελίδες. Επέτρεπε στους προγραμματιστές να ενσωματώνουν διαδικασίες όπως ένα βιβλίο επισκεπτών και ένα μετρητή αριθμού επισκέψεων στις ιστοσελίδες τους. PHP/FI: Η δεύτερη έκδοση της PHP Στα μέσα του 1995 ο Lerdorf έγραψε τον αναλυτή (parser) εκ νέου και τον μετονόμασε σε PHP/FI Version 2 (το FI συμβολίζει Form Interpreter). Μπορούσε δηλαδή να διερμηνεύει δεδομένα από μια HTML φόρμα. Εκτός από τις λειτουργίες FI και Personal Home Page Tools η PHP/FI περιελάμβανε υποστήριξη και για την βάση δεδομένων msql. Εξαιτίας αυτών των ισχυρών χαρακτηριστικών της, και με την ενσωματωμένη υποστήριξη βάσης δεδομένων, έγινε γνωστή πολύ σύντομα και πολλοί άρχισαν να δουλεύουν στον κώδικα, προσπαθώντας να τη βελτιώσουν και να της προσθέσουν μεγαλύτερη λειτουργικότητα. Είχε τόση μεγάλη απήχηση που προγραμματιστές συνεισέφεραν τον κώδικα τους σε αυτήν. Μετά από την PHP/FI ήρθε η PHP 3, με πιο ισχυρές και εμπλουτισμένες δυνατότητες. Σελίδα 7 από 91
1 PHP PHP 3: Η τρίτη έκδοση της PHP Μέχρι τα μέσα του 1997 η χρήση της ΡΗΡ ήταν περιορισμένη στους λίγους προγραμματιστές που είχαν συνεισφέρει τον κώδικά τους. Όμως με την αναγνώριση και την ιδιαίτερη δημοτικότητα που είχε αποκτήσει η εξέλιξή της σύντομα έγινε προσπάθεια δημιουργίας μιας μεγαλύτερης και πιο οργανωμένης ομάδας προγραμματιστών και χρηστών. Ο parser ξαναγράφτηκε από την αρχή. Οι Zeev Suraski και Andi Gutmans, σχημάτισαν τον πυρήνα της τρίτης έκδοσης της ΡΗΡ, γνωστός ως ΡΗΡ 3 ο οποίος περιελάμβανε έναν αξιοσημείωτο αριθμό νέων χαρακτηριστικών. Μέσα σε όχι και πολύ χρόνο άρχισε να χρησιμοποιείται για τη δημιουργία εφαρμογών στο διαδίκτυο. Ο συνδυασμός των ΡΗΡ, Apache, MySQL, σύντομα έγινε ένας επιτυχημένος συνδυασμός για την ανάπτυξη εφαρμογών διαδικτύου. Η βελτιωμένη απόδοση του συστήματος αυτού και το γεγονός ότι και οι τρεις τεχνολογίες διανέμονται ελεύθερα στο διαδίκτυο έκαναν ιδανικό αυτόν τον συνδυασμό. Αυτό φυσικά δεν σημαίνει ότι η ΡΗΡ δεν είναι συμβατή με άλλο λογισμικό. Η υποστήριξη που παρέχει η ΡΗΡ σε έναν τόσο μεγάλο αριθμό συστημάτων διαχείρισης βάσεων δεδομένων είναι ένα από τα δυνατότερα και σημαντικότατα χαρακτηριστικά της. PHP 4: Η τελευταία έκδοση της PHP Η πλέον σύγχρονη έκδοση της ΡΗΡ είναι η ΡΗΡ 4. Η έκδοση αυτή παρουσιάστηκε σε ένα πιο σύνθετο περιβάλλον όπου προγραμματισμός στο διαδίκτυο δεν είναι μόνο η συγγραφή πολύπλοκων ιστοσελίδων. Οι εφαρμογές που δημιουργούνται πρέπει να είναι δυναμικές, αλληλεπιδραστικές και να υποστηρίζουν λειτουργίες σε επίπεδο βάσεων δεδομένων. Οι εφαρμογές σχεδιάζονται με τέτοιο τρόπο ώστε πολλαπλοί χρήστες να μπορούν να στέλνουν και να λαμβάνουν πληροφορία συγχρόνως. Υπό μελέτη είναι και ο χρόνος απόκρισης για την ανάκτηση της πληροφορίας. Σύμφωνα με μια εκτίμηση ο μέγιστος χρόνος απόκρισης στον οποίο οι χρήστες μπορούν να περιμένουν υπομονετικά μια ιστοσελίδα να φορτώσει είναι 10 δευτερόλεπτα Σελίδα 8 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη Η έκδοση ΡΗΡ4, έχει πολλά νέα χαρακτηριστικά που επιτρέπουν τις υψηλές επιδόσεις και την προσπέλαση σε ακόμα μεγαλύτερο αριθμό επεκτάσεων (extensions) και βιβλιοθηκών (libraries). Η ΡΗΡ αποτελεί πλέον το πρότυπο για τη δημιουργία εφαρμογών διαδικτύου και από έρευνες που έχουν γίνει διαπιστώθηκε ότι χρησιμοποιείται κατά κόρον από πάρα πολλούς χρήστες [8]. 1.2 Ορισμός PHP Η ΡΗΡ είναι μια γλώσσα script από την πλευρά του διακομιστή, σχεδιασμένη ειδικά για το Web.Μέσα σε μια HTML σελίδα μπορείτε να ενσωματώσετε PHP κώδικα, που θα εκτελείται κάθε φορά που θα επισκέπτεστε τη σελίδα. Ο ΡΗΡ κώδικας μεταφράζετε στο Web διακομιστή και δημιουργεί HTML ή άλλη έξοδο που θα δει ο επισκέπτης [6]. Ας δούμε ένα απλό παράδειγμα: <html> <head> <title>example</title> </head> <body> <?php echo "Hi, I'm a PHP script!";?> </body> </html> Όπως παρατηρούμε το παραπάνω είναι ένα διαφορετικό script από ένα που θα ήταν γραμμένο σε άλλες γλώσσες προγραμματισμού όπως η PERL ή η C. Δηλαδή, αντί να γράφουμε ένα πρόγραμμα με πολλές εντολές για να εξάγουμε HTML, εδώ γράφουμε ένα HTML script που έχει ενσωματωμένο κώδικα για να κάνει κάτι (σε αυτή την περίπτωση, να εμφανίζει κάποιο κείμενο). Ο κώδικας της PHP περιέχεται μέσα σε ειδικές ετικέτες αρχής και τέλους που μας επιτρέπουν να μεταφερόμαστε μέσα και έξω από τον PHP τρόπο λειτουργίας. Σελίδα 9 από 91
1 PHP Χρησιμοποιώντας τις ΡΗΡ ετικέτες Ο κώδικας ΡΗΡ στο προηγούμενο παράδειγμα, αρχίζει με <? και τελειώνει με?> Αυτό είναι παρόμοιο με τις ετικέτες HTML, επειδή όλες ξεκινάνε με ένα σύμβολο μικρότερο "< και τελειώνουν με ένα σύμβολο μεγαλύτερο ">. Αυτά τα σύμβολα ονομάζονται ΡΗΡ ετικέτες και λένε στον Web διακομιστή πού ξεκινά ο ΡΗΡ κώδικας και που τελειώνει. Το κενό μεταξύ των ετικετών θα μεταφραστεί σαν ΡΗΡ. Το κείμενο έξω από αυτές τις ετικέτες θα αντιμετωπιστεί σαν κανονική HTML. Οι ετικέτες ΡΗΡ μας επιτρέπουν διαφεύγουμε από την HTML[6]. 1.3 Εντολές Λέμε στον μεταφραστεί ΡΗΡ τι να κάνει βάζοντας τις εντολές ΡΗΡ μεταξύ της αρχικής και τελικής ετικέτας. Σε αυτό το παράδειγμα χρησιμοποιήσαμε μόνο ένα τύπο εντολής: echo "<p> Η ενοικίαση της ταινίας ολοκληρώθηκε. ; Χρησιμοποιώντας την δομή echo έχετε ένα πολύ απλό αποτέλεσμα: τυπώνει την συμβολοσειρά που έχει περάσει σε αυτήν, στον browser. Θα παρατηρήσετε ότι εμφανίζεται ένα ερωτηματικό στο τέλος της εντολής echo. Αυτό χρησιμοποιείται για να ξεχωρίζει εντολές της ΡΗΡ, όπως μια τελεία χρησιμοποιείται για να ξεχωρίζει τις προτάσεις της γλώσσας. Είναι συνηθισμένο συντακτικό λάθος να παραλείψετε το ερωτηματικό. Προσθέτοντας δυναμικά περιεχόμενα Μέχρι στιγμής, δεν έχουμε χρησιμοποιήσει ΡΗΡ για να κάνουμε κάτι που δεν έχουμε κάνει με απλή HTML. Ο λόγος για να χρησιμοποιούμε την γλώσσα script από την πλευρά του διακομιστή, είναι για να μπορούμε να παρέχουμε δυναμικά περιεχόμενα στους χρήστες μια τοποθεσίας. Αυτή είναι μια σημαντική εφαρμογή, επειδή τα περιεχόμενα αυτά αλλάζουν σύμφωνα με τις ανάγκες ενός χρήστη ή θα κάνουν τους χρήστες να Σελίδα 10 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη επανέρχονται στην τοποθεσία. Η ΡΗΡ μας επιτρέπει να το κάνουμε αυτό εύκολα. Ας δούμε το παρακάτω παράδειγμα: <? echo <p> Εμφάνισε την σημερινή ημερομηνία ; echo date( Hi, js F ); echo <br> ;?> Σε αυτόν τον κώδικα χρησιμοποιούμε την ενσωματωμένη συνάρτηση date() της ΡΗΡ, για να πούμε στον πελάτη την ημερομηνία και την ώρα που έγινε επεξεργασία της παραγγελίας του. Αυτό είναι διαφορετικό κάθε φορά που θα τρέχει το script. Προσπέλαση μεταβλητών φορμών Η ουσία να χρησιμοποιήσουμε μια φόρμα παραγγελίας είναι για να συλλέξουμε την παραγγελία του πελάτη. Είναι πολύ εύκολο στη ΡΗΡ να πάρουμε τις πληροφορίες που πληκτρολόγησε ο πελάτης. Μέσα στο PHP script, μπορείτε να έχετε πρόσβαση σε κάθε ένα από τα πεδία της φόρμας σαν μια μεταβλητή με το ίδιο όνομα με το πεδίο της φόρμας. Ας δούμε το παρακάτω παράδειγμα. Προσθέτουμε τις παρακάτω γραμμές στο κάτω μέρος του ΡΗΡ script : echo "<p> Η ενοικίαση της ταινίας ολοκληρώθηκε echo "<br>"; echo $id_dvd." Κωδικός ταινίας<^>"; echo $date_rent." Ημερομηνία ενοικίασης<^>"; echo $charge." Χρέωση ταινίας <br>"; Μεταβλητές φορμών Τα δεδομένα του script καταλήγουν σε ΡΗΡ μεταβλητές. Μπορείτε να αναγνωρίσετε τα ονόματα των μεταβλητών στην ΡΗΡ επειδή ξεκινούν με το $. Σελίδα 11 από 91
1 PHP Συνένωση συμβολοσειρών Στο script, χρησιμοποιούμε το echo για να δώσουμε την τιμή που πληκτρολόγησε ο χρήστης σε κάθε ένα από τα πεδία της φόρμας, ακολουθούμενη από κάποιο επεξηγηματικό κείμενο. Προσέχοντας καλύτερα την εντολή echo, θα δούμε ότι το όνομα της μεταβλητής και το επόμενο κείμενο έχουν μια τελεία μεταξύ τους ως εξής echo $surname_customer. " Όνομα πελάτη<^> ; Αυτός είναι ο τελεστής συνένωσης συμβολοσειρών, που χρησιμοποιείται για να προσθέτει συμβολοσειρές (κομμάτια κειμένου) μεταξύ τους. 1.4 Τύποι Μεταβλητών Η ΡΗΡ υποστηρίζει τους παρακάτω τύπους δεδομένων: Integer (ακέραιος) - χρησιμοποιείται για ακέραιους αριθμούς Double (διπλής ακρίβειας) - χρησιμοποιείται για πραγματικούς αριθμούς String (συμβολοσειράς) - χρησιμοποιείται για συμβολοσειρές χαρακτήρων Array (πίνακα) - χρησιμοποιείται για αποθήκευση πολλαπλών στοιχείων του ίδιου τύπου Object (αντικείμενα) - χρησιμοποιείται για αποθήκευση στιγμιότυπων κλάσεων 1.5 Τελεστές Οι τελεστές είναι σύμβολα που μπορούμε να χρησιμοποιήσουμε για να χειριστούμε τιμές και μεταβλητές εκτελώντας μια λειτουργία πάνω τους. Αριθμητικοί τελεστές Οι αριθμητικοί τελεστές είναι πολύ απλοί, είναι απλώς κανονικοί μαθηματικοί τελεστές. Σελίδα 12 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη Αριθμητικοί Τελεστές Τελεστής Όνομα Παράδειγμα + Πρόσθεση $a+$b - Αφαίρεση $a-$b * Πολλαπλασιασμού $a*$b / Διαίρεση $a/$b % Υπόλοιπο $a%$b Πίνακας 3.1: Οι αριθμητικοί τελεστές της PHP Τελεστές συμβολοσειρών Έχουμε ήδη δει και χρησιμοποιήσει το μόνο τελεστή συμβολοσειρών. Μπορείτε να χρησιμοποιήσετε τον τελεστή συνένωσης συμβολοσειρών και να προσθέσετε δυο συμβολοσειρές και να δημιουργήσετε και να αποθηκεύσετε ένα αποτέλεσμα, όπως θα κάνατε και με τον τελεστή πρόσθεσης, για να προσθέσετε δυο αριθμούς. $a = Αντώνης ; $b = Αντωνόπουλος ; $results = $a.$b; Η μεταβλητή $results περιέχει τώρα την συμβολοσειρά Αντώνης Αντωνόπουλος. Τελεστές σύγκρισης Οι τελεστές σύγκρισης χρησιμοποιούνται για να συγκρίνουμε δύο τιμές. Οι παραστάσεις που χρησιμοποιούν αυτούς τους τελεστές επιστρέφουν λογικές τιμές True - False, ανάλογα με το αποτέλεσμα σύγκρισης. Τελεστές Σύγκρισης Τελεστής Όνομα Χρήση = = Ισότητα $a == $b === Ταυτότητα $a === $b!= Άνισο $a!= $b <> Άνισο $a <> $b < Μικρότερο $a < $b > Μεγαλύτερο $a > $b <= Μικρότερο ή ίσον $a <= $b >= Μεγαλύτερο ή ίσον $a >= $b Πίνακας 3.2: Τελεστές σύγκρισης της PHP Σελίδα 13 από 91
1 PHP Ένα πράγμα που πρέπει να παρατηρήσετε είναι ο νέος τελεστής ταυτότητας ===, που επιστρέφει true μόνο αν και οι δυο τελεστές είναι ίσοι και του ίδιου τύπου (Ο τελεστής αυτός εμφανίζεται στην PHP 4) (Meloni C. : 74-78) Λογικοί τελεστές Οι λογικοί τελεστές χρησιμοποιούνται για να συνδυάζουν τα αποτελέσματα των λογικών συνθηκών. Για παράδειγμα μπορεί να ενδιαφερόμαστε σε μια περίπτωση αν η τιμή μιας μεταβλητής, της $a είναι μεταξύ 0 και 100. Θα πρέπει να ελέγξουμε τις συνθήκες $a >=0 και $a<=0, χρησιμοποιώντας τον τελεστή AND ως εξής: $a >0 && $a <=100. Λογικοί Τελεστές Τελεστής Όνομα Χρήση Αποτέλεσμα! NOT!$b Επιστρέφει true αν το $b είναι false και το αντίστροφο && AND $a && $b Επιστρέφει true αν τα $a και $b είναι και τα δυο true, διαφορετικά επιστρέφει false II OR $a $b Επιστρέφει true αν το $a ή το $b είναι true, διαφορετικά επιστρέφει false And AND $a and $b Το ίδιο με το &&, αλλά με χαμηλότερη προτεραιότητα Or OR $a or $b Το ίδιο με το αλλά με χαμηλότερη προτεραιότητα Πίνακας 3.3: Λογικοί τελεστές της PHP Ο τελεστής μη εμφάνισης λαθών Ο τελεστής @ μπορεί να χρησιμοποιηθεί εμπρός από οποιαδήποτε πρόταση. $β = @(57/0); Χωρίς τον τελεστή @, αυτή η γραμμή θα δημιουργήσει μια προειδοποίηση για διαίρεση με το 0. Με το τελεστή,το λάθος δεν εμφανίζεται. Αν δεν εμφανίζουμε τα λάθη θα πρέπει να συντάξουμε κατάλληλο κώδικα για να χειρίζεται τα τυχόν σφάλματα στην εφαρμογή μας. Σελίδα 14 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη 1.6 Δομές Ελέγχου Οι δομές ελέγχου είναι οι δομές μέσα σε μια γλώσσα που μα επιτρέπουν να ελέγχουμε την ροή της εκτέλεσης ενός προγράμματος ή ενός script. Μπορείτε να τις ομαδοποιήσετε σε δομές υπό όρους (ή διακλάδωσης) και δομές επανάληψης(ή βρόχου). 1.6.1 Αποφάσεις με συνθήκες υπό Όρους Αν θέλουμε να αποκριθούμε λογικά στην είσοδο του χρήστη, ο κώδικας μας θα πρέπει να παίρνει λογικές αποφάσεις. Οι δομές που λένε στο πρόγραμμα μας να πάρει αποφάσεις ονομάζονται εντολές υπό όρους. Εντολές if Μπορούμε να χρησιμοποιήσουμε μια εντολή if για να πάρουμε μια απόφαση. Θα πρέπει να δώσουμε στην εντολή if μια συνθήκη για να την χρησιμοποιήσουμε. Αν η εντολή είναι true, θα εκτελεστεί το επόμενο τμήμα του κώδικα. Οι συνθήκες με εντολές if πρέπει να περιβάλλονται με παρενθέσεις. Για παράδειγμα, αν ο συγκεκριμένος κωδικός πελάτη δεν υπάρχει, πιθανόν να έγινε επειδή κατά λάθος πατήσαμε το κουμπί Submit. Αντί να μας πει ότι έγινε η ενοικίαση της ταινίας από τον συγκεκριμένο πελάτη, η σελίδας θα έπρεπε να μας δώσει ένα πιο χρήσιμο μήνυμα. Όταν ο κωδικός του πελάτη δεν υπάρχει, θα θέλαμε να του πούμε ότι «Δεν έχετε κάνει εγγραφή ή ξαναπροσπαθήστε» Μπορούμε να το κάνουμε αυτό εύκολα με την παρακάτω εντολή if: if( $id_customer == 0 ) echo "Δεν έχετε κάνει εγγραφή ή ξαναπροσπαθήστε!<br>"; Σελίδα 15 από 91
1 PHP Εντολές else Συνήθως θέλουμε να αποφασίζουμε, όχι μόνο αν θέλουμε να εκτελείται μια ενέργεια αλλά επίσης ποιο σύνολο ενεργειών θέλουμε να εκτελεστεί. Μια εντολή else μας επιτρέπει να ορίζουμε μια εναλλακτική ενέργεια, όταν η συνθήκη της εντολή if είναι false. Θέλουμε να προειδοποιούμε τους πελάτες του του καταστήματος όταν δεν ενοικίασαν καμία ταινία. Από την άλλη εάν κάνουν μια ενοικίαση, αντί για μια προειδοποίηση, θέλουμε να τους δείξουμε πια ταινία πήραν. if( $rent_dvd == 0 ) { echo "Δεν ενοικιάσατε καμία ταινία!<br>"; } else { echo $title." Είναι ο τίτλος της ταινίας <br>"; } Θα μπορούσαμε να δημιουργήσουμε πιο περίπλοκες λογικές διαδικασίες βάζοντας τις εντολές if, την μια μέσα στην άλλη. Εντολές elseif Για πολλές από τις αποφάσεις που παίρνουμε, υπάρχουν περισσότερες από δύο επιλογές. Μπορούμε να δημιουργήσουμε μια σειρά από πολλές επιλογές χρησιμοποιώντας την εντολή elseif. Η εντολή αυτή είναι συνδυασμός της else και της if. Παρέχοντας μια σειρά από συνθήκες, το πρόγραμμα μπορεί να ελέγχει κάθε μια, μέχρι να βρει αυτή που είναι αληθείς. Το κατάστημα δίνει μεγαλύτερη έκπτωση για μεγάλα συνολικά ποσά των πελατών του. Οι εκπτώσεις που δίνει είναι οι εξής - Λιγότερα από 150 ευρώ - χωρίς έκπτωση - Περισσότερα από 150 ευρώ- 25% έκπτωση Σελίδα 16 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη Μπορούμε να δημιουργήσουμε κώδικα για να υπολογίζει την έκπτωση χρησιμοποιώντας συνθήκες και εντολές if και elseif. If ($tireqty <150) $discount = 0; elseif ($tireqty >=150 ) $discount = 0,25 Εντολές switch Η εντολή switch δουλεύει με παρόμοιο τρόπο με την εντολή if, αλλά επιτρέπει στην συνθήκη να πάρει περισσότερες από δυο τιμές. Σε μια εντολή if, η συνθήκη μπορεί να πάρει true ή false. Σε μια εντολή switch, η συνθήκη μπορεί να πάρει οποιονδήποτε αριθμό διαφορετικών τιμών, εφόσον καταλήγει σε έναν απλό τύπο (ακέραιο, συμβολοσειρά ή double). Πρέπει να παρέχετε μια εντολή case για κάθε τιμή στην οποία θέλετε να αντιδράτε και προαιρετικά, μια προκαθορισμένη case για να χειρίζεστε οτιδήποτε για το οποίο δεν παρέχεται μια συγκεκριμένη εντολή case. 1.6.2 Αποφάσεις Επανάληψης : Επαναλαμβάνοντας ενέργειες Σε ένα πράγμα που οι υπολογιστές είναι πολύ καλοί είναι η αυτοματοποίηση επαναλαμβανόμενων διαδικασιών. Αν υπάρχει κάτι που πρέπει να κάνουμε με τον ίδιο τρόπο, πολλές φορές, μπορούμε να χρησιμοποιήσουμε ένα βρόγχο για να επαναλαμβάνουμε κάποια μέρη του προγράμματος μας. Βρόγχοι While Το απλούστερο είδος βρόγχων στην ΡΗΡ είναι ο βρόγχος while. Όπως και μια εντολή if έτσι και αυτός βασίζεται σε μια συνθήκη. Η διαφορά μεταξύ ενός βρόγχου while και μιας εντολής if είναι ότι η εντολή if εκτελεί το επόμενο τμήμα του κώδικα μία φορά, εφόσον η συνθήκη είναι αληθής. Ο βρόγχος while εκτελεί το τμήμα επαναλαμβανόμενα, εφόσον η συνθήκη είναι αληθής. Γενικά χρησιμοποιούμε ένα βρόγχο while όταν δεν ξέρουμε πόσες επαναλήψεις θα απαιτηθούν για να γίνει η συνθήκη αληθής. Αν απαιτείτε σταθερός αριθμός Σελίδα 17 από 91
1 PHP επαναλήψεων, μπορούμε να χρησιμοποιήσουμε ένα βρόγχο for. Η βασική δομή ενός βρόγχου while είναι : while (condition) expression; Ο παρακάτω κώδικας θα εμφανίσει τους αριθμούς 1 έως το 5 $num While ($num <= 5) { echo $num. <br> ; $num++; } Η εντολή $num++; ισοδυναμεί με $num = $num +1; δηλαδή προσθέτει στον εαυτό του κάθε φορά το 1. Στην αρχή της κάθε επανάληψης, ελέγχει την συνθήκη. Αν είναι ψευδείς, το τμήμα του δεν θα εκτελεστεί και ο βρόγχος θα τερματιστεί. Θα εκτελεστεί η αμέσως επόμενη εντολή μετά το βρόχο. Βρόγχοι for Ο τρόπος που χρησιμοποιήσαμε τον βρόγχο while προηγουμένως είναι πολύ συνηθισμένος. Ορίζουμε ένα μετρητή όταν ξεκινάμε.πριν από κάθε επανάληψη, ελέγχουμε τον μετρητή με μια συνθήκη. Στο τέλος της επανάληψης, τροποποιούμε τον μετρητή. Μπορούμε να γράψουμε αυτό το στυλ βρόγχου με μια πιο συμπαγή μορφή, χρησιμοποιώντας ένα βρόγχο for. Η βασική δομή ενός βρόγχου for είναι : for ($sum =50 ; $sum <=250 ; $sum += 50) { Σελίδα 18 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη echo "<tr>\n <td align = right>$sum</td>\n"; echo " <td align = right>". $sum / 10."</td>\n</tr>\n";} Βρόχοι do...while Ο τελευταίος τύπος βρόχου που θα αναφέρουμε συμπεριφέρεται λίγο διαφορετικά. Η γενική δομή ενός βρόχου do...while είναι Do Expression While (condition); Ένας βρόχος διαφέρει από ένα βρόγχο while επειδή η συνθήκη ελέγχεται στο τέλος. Αυτό σημαίνει ότι, σε ένα βρόγχο d o. while, η εντολή ή το μπλοκ μέσα στον βρόγχο εκτελείται πάντα τουλάχιστον μια φορά (Welling and Thomson, 2002 : 38-47). 1.7 Βασικά Χαρακτηριστικά Η PHP ενσωματώνει την ισχύ και τη δυναμικότητα σχετικά παλαιότερων γλωσσών όπως η Perl καταργώντας τις αδυναμίες τους. Αναφέρουμε μερικά από τα βασικά χαρακτηριστικά της : Ο συντακτικός αναλυτής της, καθώς και ο πηγαίος κώδικας της διανέμεται ελεύθερα στο διαδίκτυο δίνοντας τη δυνατότητα σε όποιον θέλει να κατασκευάζει και να διανέμει εφαρμογές για εμπορική και μη χρήση. Μπορεί να μεταφραστεί και να τρέξει στα περισσότερα λειτουργικά συστήματα που κυκλοφορούν στην αγορά ( Microsoft Windows, Linux, BSD, Solaris, Macintosh OS X, and UNIX servers). Συνεργάζεται χωρίς προβλήματα με τους πιο δημοφιλείς Web Servers που κυκλοφορούν όπως τον Apache και τον Microsoft IIS. Διαθέτει ενσωματωμένες εντολές υποστήριξης για ένα μεγάλο αριθμό βάσεων δεδομένων όπως MySQL, Sybase, Oracle, Ingres. Προσφέρει ένα σύνολο από Database API s τις ενοποιημένες ODBC συναρτήσεις (unified ODBC functions), που εξασφαλίζουν την προσπέλαση σε μια υποκείμενη βάση δεδομένων, χρησιμοποιώντας Σελίδα 19 από 91
1 PHP τις εγγενείς μεθόδους της εκάστοτε βάσης για να μεγιστοποιήσουν την απόδοση (IBM DB2). Είναι πιο απλό να συντάξει κάποιος κώδικα PHP από ότι σε οποιαδήποτε άλλη γλώσσα σεναρίου. Μπορεί να χρησιμοποιηθεί στη δημιουργία εικόνων, ανάγνωση / εγγραφή σε αρχεία και για αποστολή email. Για να προσφέρει αυτές τις υπηρεσίες, η PHP επικοινωνεί με αρκετά πρωτόκολλα όπως: HTTP (Ιστοσελίδες), POP3 (e-mail), SNMP και LDAP. 1.8 Πλεονεκτήματα Κάποιοι από τους βασικούς ανταγωνιστές της ΡΗΡ είναι ο Perl, Microsoft Active Server Pages (ASP), Java Server Pages ( JSP ) και Allaire Cold Fusion. Σε σύγκριση με αυτά τα προϊόντα, η ΡΗΡ έχει πολλά πλεονεκτήματα όπως : Υψηλή απόδοση Διασυνδέσεις με πολλά διαφορετικά συστήματα βάσεων δεδομένων Ενσωματωμένες βιβλιοθήκες για πολλές συνηθισμένες Web διαδικασίες Χαμηλό κόστος Ευκολία μάθησης και χρήσης Μεταφερσιμότητα Διαθεσιμότητα του κώδικα προέλευσης Ακολουθεί μια πιο λεπτομερή περιγραφή αυτών των πλεονεκτημάτων. Απόδοση Η ΡΗΡ είναι πολύ αποτελεσματική. Με ένα φθηνό διακομιστή μπορείτε να εξυπηρετήσετε εκατομμύρια επισκέψεων καθημερινά. Οι δοκιμές που δημοσιεύθηκαν από την Zend Technologies ( http://www.zend.com), δείχνουν ότι η ΡΗΡ ξεπερνά τους ανταγωνιστές της. Σελίδα 20 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη Ολοκλήρωση με Βάσεις δεδομένων Η ΡΗΡ έχει εγγενείς συνδέσεις για πολλά συστήματα βάσεων δεδομένων. Εκτός από την MySQL, μπορείτε να συνδεθείτε κατευθείαν με τις βάσεις δεδομένων PostgreSQL, msql, Oracle, dbm, filepro, Informix, InterBase, Sybase, μεταξύ άλλων. Χρησιμοποιώντας το Open Database Connectivity Standard (ODBC) μπορείτε να συνδεθείτε σε οποιαδήποτε βάση δεδομένων παρέχει ένα πρόγραμμα οδήγησης ODBC. Αυτό περιλαμβάνει και τα προϊόντα της Microsoft products, μεταξύ άλλων. Ενσωματωμένες Βιβλιοθήκες Επειδή η ΡΗΡ σχεδιάστηκε για να χρησιμοποιείται στο Web, έχει πολλές ενσωματωμένες βιβλιοθήκες, που εκτελούν πολλές χρήσιμες λειτουργίες σχετικές με το Web. Μπορείτε να δημιουργήσετε εικόνες GIF δυναμικά, να συνδεθείτε με άλλες υπηρεσίες δικτύων, να στείλετε ηλεκτρονικό ταχυδρομείο, να δουλέψετε με cookies και να δημιουργήσετε PDF έγγραφα : όλα αυτά με λίγες γραμμές κώδικα. Κόστος Η ΡΗΡ είναι δωρεάν. Μπορείτε να κατεβάσετε την τελευταία έκδοση από το http://www.php.net, χωρίς χρέωση. Εκμάθηση της ΡΗΡ Η σύνταξη της ΡΗΡ βασίζεται σε άλλες γλώσσες προγραμματισμού,βασικά στην C και στην Perl. Μεταφερσιμότητα Η ΡΗΡ είναι διαθέσιμη για πολλά λειτουργικά συστήματα. Μπορείτε να γράψετε κώδικα ΡΗΡ για δωρεάν συστήματα τύπου Unix, όπως LINUX και FreeBSD, για εμπορικές εκδώσεις του UNIX, όπως το Solaris και το IRIX ή για διαφορετικές εκδώσεις των Microsoft Windows. Σελίδα 21 από 91
1 PHP Ο κώδικα σας συνήθως θα δουλεύει χωρίς αλλαγές στα συστήματα που τρέχουν την ΡΗΡ. Κώδικας προέλευσης Έχετε πρόσβαση στον κώδικα προέλευσης της ΡΗΡ. Αντίθετα με εμπορικά, κλειστά προγράμματα, αν υπάρχει κάτι που θέλετε να αλλάξετε ή να προσθέσετε στη γλώσσα, μπορείτε να το κάνετε. Δεν χρειάζεται να περιμένετε τον κατασκευαστή να εμφανίσει διορθώσεις. Δεν θα ανησυχείτε αν ο κατασκευαστής θα σταματήσει να υπάρχει ή αν θα σταματήσει να υποστηρίζει το προϊόν (Welling and Thomson, 2002 : 4-5). Σελίδα 22 από 91
Πτυχιακή Εργασία της Νταλιάνη Αικατερίνη 2 MYSQL Η MySQL είναι ένα πολύ γρήγορο και δυνατό, σύστημα διαχείρισης βάσεων δεδομένων. Μια βάση δεδομένων σας επιτρέπει να αποθηκεύετε, να αναζητάτε, να ταξινομείτε και να ανακαλείτε τα δεδομένα αποτελεσματικά. Ο MySQL διακομιστής ελέγχει την πρόσβαση στα δεδομένα σας, για να μπορούν να δουλεύουν πολλοί χρήστες ταυτόχρονα, για να παρέχει γρήγορη πρόσβαση και να διασφαλίζει ότι μόνο πιστοποιημένοι χρήστες μπορούν να έχουν πρόσβαση. Συνεπώς η MySQL είναι ένας πολυνηματικός διακομιστής πολλαπλών χρηστών. Χρησιμοποιεί την SQL ( Structured Query Language ) την τυπική γλώσσα ερωτημάτων για βάσεις δεδομένων, παγκόσμια. H MySQL είναι διαθέσιμη από το 1996 αλλά η ιστορία της ξεκινά από το 1979 [5]. Δημιουργώντας μια βάση δεδομένων Η MySQL μπορεί να υποστηρίξει πολλές διαφορετικές βάσεις δεδομένων. Θα πρέπει γενικά να έχουμε μια βάση δεδομένων ανά εφαρμογή. Αυτό είναι το ευκολότερο μέρος. Στην προτροπή της MySQL πληκτρολογούμε : mysql > create database videoclub; (Θα πρέπει να βάλουμε το όνομα της βάσης δεδομένων που θέλουμε να δημιουργήσουμε στο videoclub.) Μετά από την εντολή θα πάρουμε την παρακάτω απόκριση : Query OK, 1 row affected (0.07 sec) Αυτό σημαίνει ότι όλα δούλεψαν σωστά και η βάση μας δημιουργήθηκε. Αν δεν συνέβη αυτό προσέχουμε αν στο τέλος της πρότασης μας εισάγαμε το «;» για να δηλώσουμε ότι εδώ τελειώνει η πρόταση μας, όπως το ίδιο συνέβαινε και στην ΡΗΡ. Σελίδα 23 από 91
2 MYSQL Χρησιμοποιώντας την σωστή βάση δεδομένων Το πρώτο πράγμα που θα χρειαστεί να κάνουμε όταν συνδεθούμε, είναι να καθορίσουμε ποια βάση δεδομένων θέλουμε να χρησιμοποιήσουμε. Αυτό μπορούμε να το πετύχουμε πληκτρολογώντας mysql > use videoclub; Δημιουργία πινάκων βάσεων δεδομένων Για να δημιουργήσουμε έναν πίνακα σε μία βάση μας, χρησιμοποιούμε την εντολή CREATE TABLE tablename (columns) το μόνο που πρέπει να κάνουμε είναι να αντικαταστήσουμε το tablename με το όνομα που θέλουμε να έχει ο πίνακας μας και το columns με τις στήλες που θα περιέχει. Παράδειγμα: CREATE TABLE customer ( Id_customer int not null auto_increment primary key, surname string(50) not null, name string(50) not null ); Ο παραπάνω κώδικας δημιουργεί έναν πίνακα με όνομα customer και με στήλες id_customer, surname, name. Δίπλα από κάθε στήλη γράφεται και ο τύπος της. Τι σημαίνουν οι λέξεις κλειδιά Το NOT_NULL σημαίνει ότι όλες οι γραμμές του πίνακα πρέπει να έχουνε μια τιμές σε αυτήν την ιδιότητα. Αν δε καθοριστεί, το πεδίο μπορεί να είναι κενό NULL. Το auto_increment είναι μια ειδική λειτουργία της MySQL, που μπορούμε να χρησιμοποιούμε σε ακέραιες στήλες. Σημαίνει ότι αν αφήσουμε αυτό το πεδίο κενό όταν εισάγουμε γραμμές στον πίνακα η MySQL θα δημιουργήσει αυτόματα ένα Σελίδα 24 από 91