Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 3: Server Side Scripting II PHP & MySQL Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής
Σκοποί ενότητας Σκοπός της παρούσας ενότητας είναι να εξοικειωθούν οι φοιτητές με τις βασικές ιδιότητες και χαρακτηριστικά της γλώσσας προγραμματισμού PHP 2
Περιεχόμενα ενότητας Εισαγωγή E-Mail Διασύνδεση με ΒΔ Mysql_connect mysql_query Select Υποστήριξη Ελληνικών 3
Εισαγωγή Απαιτούνται Βασικές Γνώσεις για Γνώσεις από το πρώτο μέρος της παρουσίασης Λειτουργία Φορμών Session Μεταβλητών (& Cookies) Διαφορές client-side και server-side scripting Βάσεις Δεδομένων Γλώσσα SQL 4
E-mail Λειτουργίες του E-Mail: Για την αποστολή χρησιμοποιούμε το SMTP Για την επισύναψη μη text δεδομένων χρησιμοποιούμε την κωδικοποίηση MIME Τον SMTP server που θα χρησιμοποιήσουμε τον ορίζουμε στο αρχείο php.ini. 5
E-mail <? $message="text to send through mail";.php mail("nobody@example.com", "Subject Text", $message,"from: webmaster@example.com");?> Με την mail μπορούν να σταλούν και επισηνάψεις Για πιο απαιτητικές λειτουργίες e-mail μπορείτε να χρησιμοποιήσετε πακέτα από PEAR (PHP Extension and Application Repository) Αρχείο send_mail.php 6
Διασύνδεση με ΒΔ Client (Firefox) Http response Web Server Html content Apache.php PHP engine Database MySQL MSSQL Oracle PostgreSQL Για να συνδεθεί η PHP με την MySQL χρησιμοποιούμε τις συναρτήσεις της βιβλιοθήκης MySQL Improved Extension (Object oriented) Εναλλακτική αποτελεί η βιβλιοθήκη PDO_MYSQL Η βιβλιοθήκη MySQL που τυχόν θα δείτε σε online παραδείγματα είναι πλέον deprecated 7
Mysql_connect.PHP $mysql_link = new mysqli('localhost', user', pass', db_name'); if (mysqli_connect_error()) { die('connect Error ('. mysqli_connect_errno(). ') '. mysqli_connect_error()); } echo "Success!"; $mysql_link->close(); To connection κλείνει αυτόματα με το τέλος του script. Είναι όμως καλή πρακτική να το τερματίζουμε με την χρήση της mysqli_close 8
mysql_query.php $my_query = "INSERT into test_table (name) VALUES ('".$_POST['name']."')"; $result = $mysql_con->query($my_query); if (!$result) die('invalid query: '. $mysql_con->error); else echo "Updated records: ".$mysql_con->affected_rows; echo "<p><b>the last id: ".$mysql_con->insert_id."</b></p>"; 9
Select.PHP while($row = $result->fetch_array()) { } echo "<tr>"; echo "<td>". $row['id']. "</td>"; echo "<td>". $row['name']. "</td>"; echo "</tr>"; echo "</table> ; Εκτός της μεθόδου fetch_array μπορεί να χρησιμοποιηθεί και η fetch_row. Χάνουμε όμως αρκετή πληροφορία χωρίς να κερδίζουμε σε ταχύτητα. Η fetch_array έχει επιπλέον ένα προαιρετικό όρισμα με τιμές MYSQLI_ASSOC, MYSQLI_NUM, MYSQLI_BOTH 10
UTF-8 παντού! Υποστήριξη Ελληνικών τα.php αρχεία το encoding στη σελίδα που υπάρχει η φόρμα το encoding στη σελίδα που εκτελούνται τα queries το connection μεταξύ php και mysql η βάση, τα tables και τα string πεδία των tables 11
Χρήσιμοι Σύνδεσμοι www.php.net www.phpbuilder.com www.w3schools.com/php dev.mysql.com www.wampserver.com 12
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 14
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. 15
Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Ιωάννης Γαροφαλάκης, 2015. «Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό». Έκδοση: 1.0. Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/ceid1093/. 16
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 17