TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ιόνιο Πανεπιστήμιο» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 1
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons 2
Βασικές έννοιες - Εισαγωγή στην PHP 2
1. Βασικές Έννοιες 3
1.1 Τι είναι οι Δυναμικές Τοποθεσίες; Οι Δυναμικές Τοποθεσίες Ιστού είναι ευέλικτα και ισχυρά δημιουργήματα, που αποτελούν πλήρεις εφαρμογές και έχουν τις παρακάτω ιδιότητες: Λαμβάνουν υπόψη τους διάφορες παραμέτρους Διαθέτουν «μνήμη» Περιέχουν σχεδόν πάντα φόρμες HTML Συχνά περιέχουν διασυνδέσεις που επιτρέπουν τη διαχείριση του περιεχομένου από τους χρήστες Συντηρούνται, αναβαθμίζονται και επεκτείνονται πιο εύκολα σε σχέση με τις στατικές τοποθεσίες. Για τη δημιουργία τους χρησιμοποιούνται τεχνολογίες όπως: ASP.NET, JSP, ColdFusion, Ruby on Rails και PHP. 4
1.2 Τι είναι η PHP; Σύμφωνα με την επίσημη τοποθεσία Ιστού της PHP, στη διεύθυνση www.php.net η PHP είναι μια ευρέως διαδεδομένη γλώσσα σεναρίων γενικού σκοπού, ιδιαίτερα κατάλληλη για ανάπτυξη εφαρμογών ιστού και μπορεί να ενσωματωθεί σε κώδικα HTML. Η δυνατότητα ενσωμάτωσης σε κώδικα HTML σημαίνει ότι μπορούμε να πάρουμε μια τυπική σελίδα HTML να προσθέσουμε κώδικα PHP στη θέση που θέλουμε και να καταλήξουμε σε ένα δυναμικό περιεχόμενο. Η PHP είναι μια τεχνολογία στην πλευρά του διακομιστή (server-side). 5
1.3 Τι είναι η MySQL; Η MySQL είναι το πιο δημοφιλές σύστημα διαχείρισης βάσεων δεδομένων ανοιχτού κώδικα στον κόσμο και παρέχει εξαιρετική απόδοση, φορητότητα και αξιοπιστία. Είναι ένα Σύστημα Διαχείρισης Σχεσιακών Βάσεων Δεδομένων, με απλά λόγια είναι ένα σύστημα συσχετιζόμενων μεταξύ τους δεδομένων. Μια σχεσιακή βάση δεδομένων περιλαμβάνει πολλούς πίνακες για την αποθήκευση πληροφοριών διαχωρισμένων σε όσο το δυνατόν πιο απλά μέρη. Η MySQL μπορεί να υποστηρίξει βάσεις δεδομένων με μέχρι 60.000 πίνακες και πάνω από 5 δισεκατομμύρια γραμμές. 6
2. Εισαγωγή στην PHP 7
2.1 Βασική Σύνταξη Η PHP είναι μια γλώσσα σεναρίων ενσωματωμένη σε HTML πράγμα που σημαίνει ότι συνδυάζετε κώδικα PHP και HTML μέσα στο ίδιο αρχείο. Έτσι για να αρχίσετε να προγραμματίζετε σε PHP θα ξεκινήσετε από μια απλή ιστοσελίδα. 8
Για να προσθέσετε κώδικα PHP σε μια ιστοσελίδα τον τοποθετείται ανάμεσα σε ετικέτες PHP: <?php?> Οτιδήποτε ανάμεσα σε αυτές τις ετικέτες θεωρείται από το διακομιστή Ιστού κώδικας PHP και ο,τιδήποτε έξω από αυτές στέλνεται αμέσως στο φυλλομετρητή Ιστού ως απλός κώδικας HTML. 9
Τα αρχεία PHP θα πρέπει να έχουν την κατάλληλη επέκταση η οποία να λέει στο διακομιστή να μεταχειριστεί το σενάριο με ειδικό τρόπο και συγκεκριμένα σαν σελίδα PHP. Η επέκταση για τα αρχεία αυτά είναι.php. Για να δημιουργήσετε ένα απλό σενάριο PHP ακολουθήστε τα παρακάτω βήματα: 1. Ξεκινήστε ένα βασικό έγγραφο HTML 2. Πριν από την ετικέτα κλεισίματος body πληκτρολογήστε τις ετικέτες της PHP <?php?> 3. Αποθηκεύστε το αρχείο με όνομα first.php 4. Τοποθετήστε το αρχείο στον κατάλληλο κατάλογο του διακομιστή ιστού σας. 5. Φορτώστε το αρχείο first.php στο φυλλομετρητή σας 10
Το αποτέλεσμα 11
2.2 Αποστολή δεδομένων στο φυλλομετρητή Για την αποστολή δεδομένων στον φυλλομετρητή η PHP διαθέτει αρκετές ενσωματωμένες συναρτήσεις, οι πιο συνηθισμένες είναι η echo() και η print(). Παράδειγμα: echo Γεια σου, κόσμε! ; echo Τι νέα; ; Ακριβώς με τον ίδιο τρόπο αντί για echo μπορείτε να χρησιμοποιήσετε τη συνάρτηση print. Το πρώτο εισαγωγικό μετά από το όνομα της συνάρτησης δηλώνει την αρχή του μηνύματος που θα τυπωθεί και το επόμενο αντίστοιχο εισαγωγικό δηλώνει το τέλος του προς εκτύπωση μηνύματος. 12
Όλες οι εντολές της PHP πρέπει να τερματίζονται με το ελληνικό ερωτηματικό (;). Η PHP δεν κάνει διάκριση μεταξύ πεζών και κεφαλαίων στα ονόματα των συναρτήσεων. Ένα πρόβλημα που μπορεί να αντιμετωπίσετε είναι η εκτύπωση των απλών και των διπλών εισαγωγικών. Υπάρχουν 2 λύσεις. Η πρώτη είναι να περικλείσετε σε απλά εισαγωγικά τα διπλά εισαγωγικά που θέλετε να εμφανίσετε ή το αντίστροφο. Η δεύτερη λύση είναι να πληκτρολογείτε πριν από το εισαγωγικό που θέλετε να εμφανίσετε το χαρακτήρα διαφυγής της ανάποδης καθέτου (\). 13
Κώδικας Αποτέλεσμα 14
2.3 Γραφή Σχολίων Τα σχόλια στην PHP δεν στέλνονται καθόλου στο φυλλομετρητή ιστού οπότε ο τελικός χρήστης δε μπορεί να τα δει ακόμα και αν εμφανίσει τον πηγαίο κώδικα HTML της ιστοσελίδας. Η PHP υποστηρίζει τρία είδη σχολίων: 1. Το σχόλιο ξεκινάει με το σύμβολο του πλέγματος (#): # Αυτό είναι σχόλιο. 2. Το σχόλιο ξεκινάει με δυο καθέτους //: // και αυτό είναι ένα σχόλιο. 3. Το σχόλιο περικλείεται από /* */: /* Αυτό είναι πάλι ένα σχόλιο */ Τα 1 και 2 ισχύουν μόνο για μια γραμμή ενώ το 3 για σχόλια που εκτείνονται σε πολλές γραμμές. 15
Κώδικας με τα 3 είδη σχολίων Αποτέλεσμα 16
2.4 Τι είναι οι Μεταβλητές; Οι μεταβλητές (variables) είναι θέσεις στη μνήμη που χρησιμοποιούνται για την προσωρινή αποθήκευση τιμών. Οι τιμές αυτές μπορεί να είναι αριθμοί, κείμενο, ή πολύ πιο σύνθετα δεδομένα. Η PHP διαθέτει οκτώ τύπους μεταβλητών. Από αυτούς οι τέσσερις είναι βαθμωτοί (scalar) τύποι και δέχονται μια μόνο τιμή: 1. Boolean (με τιμές True ή False) 2. Ακέραιοι (integer) 3. Κινητής υποδιαστολής (floating-point, δεκαδικοί αριθμοί) 4. Συμβολοσειρές (strings, χαρακτήρες) 17
Δυο μη βαθμωτοί τύποι μεταβλητών οι οποίοι δέχονται πολλές τιμές: 1. Πίνακες (arrays) 2. Αντικείμενα (objects) Ένας άλλος τύπος μεταβλητής είναι οι πόροι: resources, που θα συναντήσετε κατά την αλληλεπίδραση με βάσεις δεδομένων. Και τέλος ο τύπος NULL: ένας ειδικός τύπος που δεν έχει τιμή. 18
Ανεξάρτητα από τον τύπο τους όλες οι μεταβλητές στην PHP ακολουθούν συγκεκριμένους κανόνες σύνταξης: Το όνομα μιας μεταβλητής (που ονομάζεται και αναγνωριστικό identifier) πρέπει να ξεκινάει με το σύμβολο του δολαρίου ($), πχ: $name. Το όνομα μιας μεταβλητής μπορεί να περιέχει γράμματα, αριθμούς και το χαρακτήρα της υπογράμμισης (_) πχ: $my_report1. Ο πρώτος χαρακτήρας μετά το $ πρέπει να είναι γράμμα ή χαρακτήρας υπογράμμισης (όχι αριθμός) Η PHP κάνει διάκριση μεταξύ κεφαλαίων και πεζών γραμμάτων στα ονόματα μεταβλητών. 19
Στις μεταβλητές μπορούμε να δώσουμε τιμές χρησιμοποιώντας το σύμβολο (=) που λέγεται και τελεστής ανάθεσης τιμής (assignment operator). Μπορούμε να τυπώσουμε μεταβλητές Χωρίς να χρησιμοποιήσουμε εισαγωγικά: print $name_var; Μέσα σε διπλά εισαγωγικά: print Γεια σου, $name ; Δεν επιτρέπεται να χρησιμοποιήσετε απλά εισαγωγικά κατά την εκτύπωση μεταβλητών: print Γεια σου, $name ; // δεν λειτουργεί! 20
21
22
2.5 Εισαγωγή στις Συμβολοσειρές Μια συμβολοσειρά δεν είναι τίποτα άλλο από μια σειρά χαρακτήρων (γράμματα, αριθμοί, κενά διαστήματα, σημεία στίξης, κλπ.) μέσα σε εισαγωγικά. Για να δημιουργήσετε μια μεταβλητή συμβολοσειράς, αναθέστε μια τιμή συμβολοσειράς σε ένα έγκυρο όνομα μεταβλητής: $first_name = Θωμάς ; $today = 2 Αυγούστου 2009 ; Όταν δημιουργείτε συμβολοσειρές μπορείτε να χρησιμοποιήσετε απλά ή διπλά εισαγωγικά ακριβώς όπως και όταν τυπώνετε κείμενο. Τα εισαγωγικά πρέπει να είναι τα ίδια στην αρχή και στο τέλος της συμβολοσειράς. 23
Για να τυπώσετε την τιμή μιας συμβολοσειράς χρησιμοποιήστε μια από τις echo() ή print(): echo $first_name; Για να τυπώσετε την τιμή μιας μεταβλητής μαζί με άλλο κείμενο, χρησιμοποιήστε διπλά εισαγωγικά: echo Γεια σου, $first_name ; 24
25
26
2.6 Συνένωση Συμβολοσειρών Η συνένωση (concatenation) μοιάζει με πρόσθεση συμβολοσειρών, με την οποία στο τέλος μιας συμβολοσειράς προστίθενται χαρακτήρες. Εφαρμόζεται με τη χρήση του τελεστή συνένωσης, που είναι η τελεία (.) $city = Αθήνα ; $state = Αττικής ; $address = $city. $state; Η μεταβλητή $address περιέχει τώρα την τιμή ΑθήναΑττικής που είναι περίπου αυτό που θέλουμε Αθήνα, Αττικής. Για να γίνει αυτό γράφουμε $address = $city.,. $state; 27
28
29
2.7 Εισαγωγή στους Αριθμούς Η PHP διαθέτει και ακέραιους αριθμητικούς τύπους και αριθμητικούς τύπους κινητής υποδιαστολής (δεκαδικούς). Και οι δυο μπορούν να ταξινομηθούν στη γενική κατηγορία των αριθμών. Οι τιμές δεν μπαίνουν σε εισαγωγικά ούτε έχουν οριοθέτηση χιλιάδων. Ένας αριθμός θεωρείται πάντα θετικός εκτός και αν έχει μπροστά του πρόσημο πλην (-). Τυπικοί μαθηματικοί τελεστές 30
Εκτός από τους συνήθεις τελεστές πράξεων υπάρχουν και δεκάδες συναρτήσεις. Δυο συνηθισμένες συναρτήσεις είναι: round(): στρογγυλοποιεί ένα δεκαδικό αριθμό στον πλησιέστερο ακέραιο. $n = 3.14; $n = round ($n); // 3 number_format(): μετατρέπει έναν αριθμό στην πιο συνηθισμένη μορφή γραφής του, με ομαδοποίηση των ψηφίων του και την προσθήκη οριοθέτη χιλιάδων. $n = 20943; $n = number_format ($n, 2); //20,943.00 31
32
33
2.8 Εισαγωγή στις Σταθερές Οι σταθερές όπως και οι μεταβλητές χρησιμοποιούνται για την προσωρινή αποθήκευση τιμών. Ορίζονται με τη συνάρτηση define(), αντί του τελεστή ανάθεσης τιμής (=): define ( ΟΝΟΜΑ, τιμή ); Στα ονόματα των σταθερών δεν χρησιμοποιείται το σύμβολο ($) στην αρχή τους. Πρακτικός κανόνας είναι να γράφονται οι σταθερές με κεφαλαία γράμματα χωρίς να είναι υποχρεωτικό. Σε μια σταθερά μπορούμε να αναθέσουμε μόνο βαθμωτές τιμές, όπως μια συμβολοσειρά ή έναν αριθμό. Σε αντίθεση με τις μεταβλητές η τιμή μιας σταθεράς δεν μπορεί να αλλάξει. 34
Για να τυπώσετε την τιμή μιας σταθεράς δεν μπορείτε να κλείσετε τη σταθερά σε εισαγωγικά echo Γεια σου, USERNAME ; // Δεν λειτουργεί! Το αποτέλεσμα που θα πάρουμε από την παραπάνω εντολή θα είναι: Γεια σου, USERNAME. Για να έχουμε το επιθυμητό αποτέλεσμα θα πρέπει να γράψουμε: echo Γεια σου, ; echo USERNAME; ή echo Γεια σου,. USERNAME; Η PHP διαθέτει πολλές προκαθορισμένες σταθερές όπως την PHP_VERSION (η έκδοση της PHP) και την PHP_OS (το λειτουργικό σύστημα του διακομιστή). 35
36
37
2.9 Απλά και Διπλά Εισαγωγικά Η τοποθέτηση μεταβλητών και ειδικών χαρακτήρων σε διπλά εισαγωγικά θα έχει ως αποτέλεσμα να τυπωθούν οι τιμές που αντιπροσωπεύουν και όχι οι κυριολεκτικές τιμές τους. Παράδειγμα: $var = test ; echo var is equal to $var ; θα τυπώσει var is equal to test echo var is equal to $var ; θα τυπώσει var is equal to $var echo \$var is equal to $var ; θα τυπώσει $var is equal to test echo \$var is equal to $var ; θα τυπώσει \$var is equal to $var 38
Όπως βλέπουμε τα διπλά εισαγωγικά αντικαθιστούν ένα όνομα μεταβλητής ($var) με την τιμή της (test) και ένα κωδικό ειδικού χαρακτήρα (\$) με την τιμή που αντιπροσωπεύει ($). Τα απλά εισαγωγικά εμφανίζουν πάντα αυτό που πληκτρολογείτε, έκτος από το απλό εισαγωγικό με χαρακτήρα διαφυγής (\ )και την ανάποδη κάθετο με χαρακτήρα διαφυγής (\\), που τυπώνονται ως απλό εισαγωγικό και ανάποδη κάθετος, αντίστοιχα. 39
40
41