PHP/MYSQL ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΕΠΟΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ ΤΥΡΟΛΟΓΟΥ ΓΛΥΚΕΡΙΑ ΑΜ 875 ΡΙΖΟΥ ΔΕΣΠΟΙΝΑ ΑΜ 816
ΣΤΟΧΟΣ Στόχος μας είναι να δημιουργήσουμε ένα database- driven Web site, στο οποίο θα χρησιμοποιήσουμε τη γλώσσα συγγραφής σεναρίων στην πλευρά του διακομιστή (server-side scripting language) PHP και τη σχεσιακή βάση δεδομένων (relational database) MySQL. Θα πρέπει, όμως, ο Web host στον οποίο δημοσιεύουμε τις σελίδες μας να υποστηρίζει τον συνδυασμό PHP/MySQL. Στόχος μας είναι να δημιουργήσουμε ένα database- driven Web site, στο οποίο θα χρησιμοποιήσουμε τη γλώσσα συγγραφής σεναρίων στην πλευρά του διακομιστή (server-side scripting language) PHP και τη σχεσιακή βάση δεδομένων (relational database) MySQL. Θα πρέπει, όμως, ο Web host στον οποίο δημοσιεύουμε τις σελίδες μας να υποστηρίζει τον συνδυασμό PHP/MySQL.
ΒΑΣΙΚΗ ΙΔΕΑ Η όλη ιδέα πίσω από ένα database-driven Web site είναι να βρίσκεται (εμφανίζεται) το περιεχόμενο (content) του site σε μια βάση δεδομένων και απ’ αυτό το περιεχόμενο της βάσης δεδομένων να εξάγουμε δυναμικά πληροφορίες για να μπορέσουμε να δημιουργήσουμε ιστοσελίδες (Web pages) που να αλλάζουν δυναμικά χωρίς να κάνουμε συνέχεια αλλαγές σ’ αυτές και δημοσίευσή τους (publish). Η όλη ιδέα πίσω από ένα database-driven Web site είναι να βρίσκεται (εμφανίζεται) το περιεχόμενο (content) του site σε μια βάση δεδομένων και απ’ αυτό το περιεχόμενο της βάσης δεδομένων να εξάγουμε δυναμικά πληροφορίες για να μπορέσουμε να δημιουργήσουμε ιστοσελίδες (Web pages) που να αλλάζουν δυναμικά χωρίς να κάνουμε συνέχεια αλλαγές σ’ αυτές και δημοσίευσή τους (publish).
ΒΑΣΙΚΗ ΙΔΕΑ Όταν κάποιος επισκεφθεί μια σελίδα σ’ ένα database-driven Web site θα συμβούν τα εξής : 1. Ο φυλλομετρητής του επισκέπτη θα ζητήσει τη Web page χρησιμοποιώντας ένα στάνταρτ URL. 2. Το λογισμικό του Web server (Apache, IIS ή άλλο) αναγνωρίζει ότι το ζητούμενο αρχείο είναι ένα script της PHP και το διερμηνεύει (interprets) χρησιμοποιώντας το πρόσθετο (plug-in) που διαθέτει για την PHP πριν απαντήσει στην αίτηση για τη σελίδα (page request). 3. Μερικές εντολές της PHP, που θα δούμε αργότερα, συνδέονται στη βάση δεδομένων της MySQL και ζητούν το περιεχόμενο (content) που ανήκει στην ιστοσελίδα (Web page).
ΒΑΣΙΚΗ ΙΔΕΑ 1. Η βάση δεδομένων MySQL απαντάει στέλνοντας το ζητούμενο περιεχόμενο στο script της PHP. 2. Το script της PHP αποθηκεύει το περιεχόμενο σε μια ή περισσότερες μεταβλητές της PHP και μετά χρησιμοποιεί τη γνωστή μας συνάρτηση echo() για να το εμφανίσει σαν μέρος της ιστοσελίδας. 3. Το plug-in της PHP τελειώνει, παραδίδοντας στον Web server ένα αντίγραφο του κώδικα της HTML που έχει δημιουργήσει. 4. Ο Web server στέλνει τον κώδικα της HTML στον φυλλομετρητή (Web browser) όπως θα έκανε και μ’ ένα κανονικό (απλό) αρχείο HTML, με τη διαφορά ότι αντί να προέλθει απευθείας από ένα αποθηκευμένο αρχείο HTML, η σελίδα αυτή είναι το αποτέλεσμα (έξοδος) που παρέχεται από το πρόσθετο (plug-in) της PHP.
Tι είναι η PHP? Η PHP είναι μια γλώσσα συγγραφής σεναρίων στην πλευρά του διακομιστή (server-side scripting language). Μπορούμε να την φανταστούμε σαν ένα πρόσθετο (plug-in) για τον Web server που του δίνει τη δυνατότητα να κάνει κάτι περισσότερο από το να στέλνει απλά και μόνο απλές ιστοσελίδες (Web pages) όταν τις ζητάνε οι φυλλομετρητές.
H server-side scripting language PHP Γλώσσα script από την πλευρά του διακομιστή Ενσωματώνεται μέσα σε μια HTML σελίδα Διαφοροποιείται από το υπόλοιπο HTML έγγραφο με τις ετικέτες (tags) Αρχής <? τέλους ?> Εκτελείται κάθε φορά που επισκεπτόμαστε τη συγκεκριμένη σελίδα Μεταφράζεται στην πλευρά του διαδικτυακού διακομιστή Δημιουργεί HTML την οποία θα δει ο επισκέπτης Δεν χρειάζεται να έχει εγκατεστημένη την PHP
PHP-ΠΛΕΟΝΕΚΤΗΜΑΤΑ(1/2) Το βασικό πλεονέκτημα της PHP είναι ότι λειτουργεί δυναμικά Τα αποτελέσματα που παράγει, αλλάζουν σύμφωνα με τις ανάγκες του χρήστη Ο δυναμικός τρόπος λειτουργίας εφαρμόζεται ακόμα και μέσα στο εσωτερικό της PHP Έχει τη δυνατότητα να αλλάζει τον τύπο των μεταβλητών δυναμικά, σύμφωνα με τα δεδομένα που κάθε χρονική στιγμή είναι αποθηκευμένα σε αυτές.
PHP-ΠΛΕΟΝΕΚΤΗΜΑΤΑ(2/2) Διασυνδέσεις με πολλά διαφορετικά συστήματα βάσεων δεδομένων Έχει ενσωματωμένες βιβλιοθήκες για πολλές συνηθισμένες διαδικασίες διαδικτύου Χαμηλό κόστος - Παρέχεται δωρεάν Ευκολία μάθησης και χρήσης. Η σύνταξη της Php βασίζεται σε άλλες γλώσσες προγραμματισμού, βασικά στη C και στην Perl Φορητότητα - Είναι διαθέσιμη για πολλά λειτουργικά συστήματα Διαθεσιμότητα του κώδικα προέλευσης
Τι είναι η MySQL?(1/2) Η MySQL είναι ένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων (relational database management system) ή RDBMS. Σε γενικές γραμμές είναι ένα πακέτο λογισμικού (software package) που είναι πολύ καλό στην οργάνωση και τη διαχείριση μεγάλων ποσοτήτων πληροφοριών.
Τι είναι η MySQL?(2/2) Με τη χρήση της MySQL είναι εύκολη η πρόσβαση σ’ αυτές τις πληροφορίες χρησιμοποιώντας μια γλώσσα συγγραφής σεναρίων στην πλευρά του διακομιστή (server-side scripting languages), όπως είναι η PHP.
MYSQL-ΠΛΕΟΝΕΚΤΗΜΑΤΑ(1/2) Είναι ένα πολύ γρήγορο και δυνατό σύστημα διαχείρισης βάσεων δεδομένων Είναι ένα πολύ γρήγορο και δυνατό σύστημα διαχείρισης βάσεων δεδομένων Ο MySQL διακομιστής ελέγχει την πρόσβαση στα δεδομένα, για να μπορούν να δουλεύουν πολλοί χρήστες ταυτόχρονα Ο MySQL διακομιστής ελέγχει την πρόσβαση στα δεδομένα, για να μπορούν να δουλεύουν πολλοί χρήστες ταυτόχρονα Μπορούν να υπάρχουν ταυτόχρονα περισσότερες από μια συνδέσεις με τη βάση χωρίς να υπάρχουν πολλαπλά αντίγραφά της, όπως συμβαίνει με άλλα συστήματα βάσεων δεδομένων Μπορούν να υπάρχουν ταυτόχρονα περισσότερες από μια συνδέσεις με τη βάση χωρίς να υπάρχουν πολλαπλά αντίγραφά της, όπως συμβαίνει με άλλα συστήματα βάσεων δεδομένων Η απόδοσή της είναι καλύτερη σε μεγαλύτερο όγκο βάσεων δεδομένων Η απόδοσή της είναι καλύτερη σε μεγαλύτερο όγκο βάσεων δεδομένων
MYSQL-ΠΛΕΟΝΕΚΤΗΜΑΤΑ(2/2) Είναι πιο κατάλληλη για χρήση στο Internet Είναι πιο κατάλληλη για χρήση στο Internet Παρέχει ευκολίες στο backup Παρέχει ευκολίες στο backup Είναι ιδιαίτερα βελτιωμένη σε ταχύτητα για την ανάκτηση δεδομένων Είναι ιδιαίτερα βελτιωμένη σε ταχύτητα για την ανάκτηση δεδομένων Είναι συμβατή και μεταφέρσιμη σε διάφορες πλατφόρμες και για διάφορα εργαλεία ανάπτυξης Είναι συμβατή και μεταφέρσιμη σε διάφορες πλατφόρμες και για διάφορα εργαλεία ανάπτυξης Είναι οικονομική Είναι οικονομική Η MySQL είναι λογισμικό ανοιχτού κώδικα. Η MySQL είναι λογισμικό ανοιχτού κώδικα.
ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ-ΕΝΤΟΛΕΣ PHP(1/2) <?php echo( "This is a test !" ); echo( "This is a test !" );?> Η γραμμή ανάμεσα στα είναι γραμμένη σε κώδικα PHP. Το σημαίνει ότι τελειώνει ο κώδικας της PHP.
ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ-ΕΝΤΟΛΕΣ PHP(2/2) echo( "This is a test !" ); Αυτή η εντολή καλεί μια ενσωματωμένη συνάρτηση με όνομα echo() και της μεταβιβάζει το εξής string : This is a test ! Η συνάρτηση echo() απλά λαμβάνει το κείμενο που της μεταβιβάζεται και το τοποθετεί στον HTML κώδικα της σελίδας στην τρέχουσα τοποθεσία. Θα τυπώσει το “This is a test!”
ΜΕΤΑΒΛΗΤΕΣ-PHP όλα τα ονόματα μεταβλητών στην PHP ξεκινούν με το σύμβολο του δολαρίου ($). όλα τα ονόματα μεταβλητών στην PHP ξεκινούν με το σύμβολο του δολαρίου ($). $testvariable = 3;//Εκχωρει την τιμη 3 $testvariable = 3;//Εκχωρει την τιμη 3 $testvariable = 1 + 1;// Εκχωρεί την τιμή 2 $testvariable = 1 + 1;// Εκχωρεί την τιμή 2 $var1 = "PHP";// Εκχωρεί το κείμενο "PHP" στην $var1 $var1 = "PHP";// Εκχωρεί το κείμενο "PHP" στην $var1 echo($var1);// Εμφανίζει "PHP" echo($var1);// Εμφανίζει "PHP"
ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ Για να συνδεθούμε με τη MySQL: mysql -u root -p, θα συνδεόμαστε με την παράμετρο -p ώστε να μας ζητείται στη συνέχεια κωδικός.
ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ CREATE TABLE admin(Name VARCHAR(15),Last_Name VARCHAR(20),Admin_id VARCHAR(15) NOT NULL PRIMARY KEY,Password VARCHAR(15)); Δημιουργεί ένα “τραπεζάκι” με τέσσερα πεδία : Δημιουργεί ένα “τραπεζάκι” με τέσσερα πεδία : Name, Last_Name, Admin_id, Password. Καθορίζει τον τύπο κάθε πεδίου και το μέγεθός του αν πρόκειται για αλφαριθμητικό Καθορίζει τον τύπο κάθε πεδίου και το μέγεθός του αν πρόκειται για αλφαριθμητικό Καθορίζει το πρωτεύον κλειδί Καθορίζει το πρωτεύον κλειδί
ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ Αφού δημιουργήσουμε τη βάση με την εντολή “create”, για να μπορέσουμε να χρησιμοποιήσουμε τη βάση θα πρέπει να δώσουμε την παρακάτω εντολή: mysql> use databasename;
ΠΑΡΑΔΕΙΓΜΑ ΚΩΔΙΚΑ <?php $dbc=mysql_connect ('localhost','root',1234); if die(' Anikanothta Anoifmatos Database '); } $query = 'SELECT * FROM logariasmos'; $r = mysql_query($query); $query2 = 'SELECT * FROM user'; $r2 = mysql_query($query2); print "$name"; while ($row = mysql_fetch_array($r)){ $check_at=$row['AT_user'];$check_alog=$row['A_log'];$check_poso=$row['poso']; if((strstr($atl,$check_alog)) && ((strlen($atl))==(strlen($check_alog)))){ if((($poso)<=($check_poso))){ while ($row2 = mysql_fetch_array($r2)){ $check_at2=$row2['AT'];$check_username=$row2['User_name'];$check_password=$row2['Password']; if((strstr($check_at2,$check_at)) && ((strlen($check_at2))==(strlen($check_at)))){ if((strstr($check_username,$name)) && ((strlen($check_username))==(strlen($name)))){ if((strstr($word,$check_password)) && ((strlen($check_password))==(strlen($word)))){ $query="UPDATE logariasmos SET poso=($check_poso)-($poso) WHERE A_log='$atl' "; $date2=date('j F Y'); $date3=date('U'); $query3="INSERT INTO enimerosi(AT_P,AL,Hmera,AL2,Service,Poso,FLAG)VALUES('$check_at2','$check_alog','$date2','$ald','DEH','$poso','$date3')"; }}}}}}?>
ΔΗΜΙΟΥΡΓΙΑ ΣΥΝΔΕΣΗΣ PHP-MYSQL(1/2) Συνδεση php με την mysql: mysql_connect(,, ); if die(' ERROR OPENING DATABASE '); } :η IP διεύθυνση ή το hostname του υπολογιστή στον οποίο εκτελείται το λογισμικό του MySQL server, που είναι το localhost αν εκτελείται στον ίδιο υπολογιστή με το λογισμικό του Web server
ΔΗΜΙΟΥΡΓΙΑ ΣΥΝΔΕΣΗΣ PHP-ΜYSQL(2/2 ) και είναι τα ίδια με τα user name και password της MySQL που χρησιμοποιήσαμε για να συνδεθούμε στον MySQL server. Σε περίπτωση που συμβεί κάποιο λάθος κατά τη σύνδεση με τη βάση δεδομένων μας θα τυπωθεί το μήνυμα λάθους «ERROR OPENING DATABASE»
ΕΠΕΞΗΓΗΣΗ ΚΩΔΙΚΑ $query = 'SELECT * FROM logariasmos'; $r = mysql_query($query); $r = mysql_query($query); Η συνάρτηση mysql_query() επιστρέφει είτε true για επιτυχία ή false για αποτυχία. Για τα ερωτήματα SELECT αυτό δεν είναι αρκετό. Και αυτό γιατί εκτός από την ένδειξη αν το ερώτημα πέτυχε ή απέτυχε, η PHP πρέπει επίσης να λάβει υπόψη και τα αποτελέσματα του ερωτήματος. Έτσι, όταν επεξεργαζόμαστε ένα ερώτημα SELECT, η συνάρτηση mysql_query() επιστρέφει έναν αριθμό που δείχνει ένα σύνολο αποτελεσμάτων, που περιέχει μια λίστα όλων των γραμμών (rows) ή καταχωρήσεων (entries) που επιστρέφονται από το ερώτημα.
ΕΠΕΞΗΓΗΣΗ ΚΩΔΙΚΑ while ($row = mysql_fetch_array($r)){ $check_at=$row['AT_user']; Η συνάρτηση mysql_fetch_array() δέχεται ένα σύνολο αποτελεσμάτων σαν παράμετρο, που είναι αποθηκευμένο στη μεταβλητή $r στη συγκεκριμένη περίπτωση, και τα επιστρέφει σαν έναν πίνακα (array). Όταν δεν υπάρχουν άλλες γραμμές στο $r, η συνάρτηση mysql_fetch_array() επιστρέφει την τιμή false. Η παραπάνω,λοιπον, εντολή εκχωρεί μια τιμή στη μεταβλητή $row, αλλά ταυτόχρονα η ίδια η εντολή αποκτά την ίδια τιμή. Και, κρατάμε στη μεταβλητή check_at το περιεχόμενο της μεταβλητής $row για το συγκεκριμένο πεδίο AT_user.
ΕΠΕΞΗΓΗΣΗ ΚΩΔΙΚΑ if((strstr($atl,$check_alog)) && ((strlen($atl))==(strlen($check_alog)))){ if((($poso)<=($check_poso))){ while ($row2 = mysql_fetch_array($r2)){ $check_at2=$row2['AT'];$check_username=$row2['User_name'];$check_password=$row2['Password']; if((strstr($check_at2,$check_at)) && ((strlen($check_at2))==(strlen($check_at)))){ if((strstr($check_username,$name)) && ((strlen($check_username))==(strlen($name)))){ if((strstr($word,$check_password)) && ((strlen($check_password))==(strlen($word)))){ Αυτές οι δομές ελέγχου μάς δίνουν τη δυνατότητα να πούμε στην PHP να εκτελέσει ένα σύνολο εντολών, στις πλειάδες που έχουν επιλεγεί, ανάλογα με το αν κάποια συνθήκη είναι true ή false.
ΕΠΕΞΗΓΗΣΗ ΚΩΔΙΚΑ $query="UPDATE logariasmos SET poso=($check_poso)- ($poso) WHERE A_log='$atl' "; Η εντολή UPDATE χρησιμοποιείται για την τροποποίηση των τιμών κάποιων γνωρισμάτων μιας ή περισσοτέρων επιλεγμένων πλειάδων. Στη συγκεκριμένη περίπτωση μειώνουμε το γνώρισμα “poso” του “table” “logariasmos”.
ΕΠΕΞΗΓΗΣΗ ΚΩΔΙΚΑ $query3="INSERT INTO enimerosi(AT_P,AL,Hmera,AL2,Service,Poso,FLAG)VAL UES('$check_at2','$check_alog','$date2','$ald','DEH','$poso',' $date3')"; Με την παραπάνω εντολή γίνεται εισαγωγή στοιχείων στο table 'enikmerosi' της βάσης μας με στοιχεία τα οποία έχει δώσει ο χρήστης μέσω μιας φόρμας απά το site.
ΔΙΑΓΡΑΦΗ ΔΕΔΟΜΕΝΩΝ ΑΠΟ ΤΗ ΒΑΣΗ Επίσης, δίνεται η δυνατότητα στον χρήστη μας να διαγράφει δεδομένα από την βάση δεδομένων χωρίς όμως, να έχει άμεση πρόσβαση σε αυτήν. Ακολουθεί το παρακάτω παράδειγμα με κομμάτι κώδικα : if(isset($_POST['delete'])){for($i=0;$i<$count;$i++){ $del_id = $checkbox[$i]; $sql = "DELETE FROM $tbl_name WHERE AT='$del_id'"; mysql_query($sql); $sql2 = "DELETE FROM $tb2_name WHERE AT_User='$del_id'"; mysql_query($sql2); $sql3 = "DELETE FROM $tb3_name WHERE AT_Userd='$del_id'"; mysql_query($sql3); $sql4 = "DELETE FROM $tb4_name WHERE AT_Users='$del_id'"; mysql_query($sql4);}
ΔΙΑΓΡΑΦΗ (ΣΥΝΕΧΕΙΑ) $sql = "DELETE FROM $tbl_name WHERE AT='$del_id'";mysql_query($sql); Στις παραπάνω εντολές κώδικα διαγράφουμε τις πλειάδες των πινάκων οι οποίες έχουν μια συγκεκριμένη τιμή στο πεδίο AT και η οποία έχει δοθεί από τον χρήστη, με τη χρήση μιας φόρμας.
ΤΕΛΟΣ ΠΑΡΟΥΣΙΑΣΗΣ