Το σύστημα βάσεων δεδομένων MySQL

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

Download "Το σύστημα βάσεων δεδομένων MySQL"

Transcript

1 MySQL - PHP Ιωάννης Γ. Τσούλος Το σύστημα βάσεων δεδομένων MySQL 1. Εισαγωγή H mysql είναι ένα ελεύθερο σύστημα διαχειρίσεως βάσεων δεδομένων που είναι ευρύτατα διαδεδομένη στα UNIX συστήματα, αν και τα τελευταία χρόνια δείχνει να κατακτά και τον κόσμο των Win32. Οι ενδιαφερόμενοι μπορούν να βρουν την τελευταία έκδοση στο H mysql είναι πολυνηματική και πολυχρηστική και υποστηρίζει τα τελευταία standards της SQL. Στην αναφορά που κρατάτε στα χέρια σας δεν θα κάνουμε κάποια λεπτομερή παρουσίασή της καθώς κάτι τέτοιο απαιτεί πάρα πολλές σελίδες. Απλά θα δώσουμε τις βασικές της αρχές και τις σημαντικότερες εντολές της προκειμένου να φτιάξουμε γρήγορα και εύκολα απλές και λειτουργικές βάσεις δεδομένων. Τα πειράματα που παρουσιάζονται παρακάτω έγιναν σε RedHat Linux 7.2 και 7.3 που χρησιμοποιεί την έκδοση της MySQL. Φυσικά αυτό δεν περιορίζει σε τίποτα την γενικότητα των παραδειγμάτων που ακολουθούν 2. Είσοδος Για να ξεκινήσουμε την mysql σαν απλοί χρήστες αρκεί να γράψουμε mysql σε ένα τερματικό. Αν λάβουμε το μήνυμα ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) σημαίνει πως η mysql δεν τρέχει ή καλύτερα ο εξυπηρέτης της δεν εκτελείται. Είναι απαραίτητο για να μπορούμε να μπούμε στην mysql να εκτελείται ήδη ο εξυπηρέτης της μιας και η βάση είναι όχι μόνον πολυχρηστική αλλά επιτρέπει και την σύνδεση από άλλα μηχανήματα. Αν λοιπόν εμφανιστεί ένα μήνυμα σαν και το παραπάνω θα πρέπει ο διαχειριστής του μηχανήματος (root) να ξεκινήσει τον εξυπηρέτη (σε redhat αρκεί η εντολή /etc/rc.d/init.d/mysql restart). Αν και στο internet υπάρχουν διαθέσιμα πολλές γραφικές διαπροσωπείες για την mysql, ο καλύτερος τρόπος να ξεκινήσει κανείς μαζί της είναι με την χρήση εντολών σε τερματικό. Αν θέλουμε να δούμε κάποια βοήθεια απλά δίνουμε \h και αν θέλουμε να τερματίσουμε την σύνοδο δίνουμε \q. 3. Δημιουργία βάσεων δεδομένων Για να φτιάξουμε μία νέα βάση δεδομένων πρέπει να έχουμε δικαίωμα από τον διαχειριστή να το κάνουμε. Σε Linux συστήματα αυτό συνήθως δεν γίνεται. Δικαιώματα δημιουργίας και διαγραφής σε μία βάση δεδομένων έχει μόνον ο υπερχρήστης. Για να δημιουργήσει ο υπερχρήστης μία νέα βάση δεδομένων αρκεί να δώσει create database name; όπου το name είναι το όνομα της βάσεως. Στην συνέχεια θα πρέπει να δώσει ΣΕΛΙΔΑ 1/43

2 δικαιώματα και σε μας με την χρήση της εντολής grant all on name.* to user; Αφού γίνουν όλα αυτά για να χρησιμοποιήσουμε μία βάση δεδομένων απαιτείται να δώσουμε την εντολή use name στην γραμμή εντολών της mysql. Αν την πρώτη φορά που ζητήσουμε να χρησιμοποιήσουμε την βάση πάρουμε ένα μήνυμα λάθους σχετικά με δικαιώματα, τότε μπορούμε να εισάγουμε την εντολή connect name και ύστερα use name και το πρόβλημα έχει λυθεί. Αν όλα τα παραπάνω ακούγονται πολύπλοκα μπορούμε να χρησιμοποιήσουμε την προκαθορισμένη βάση δεδομένων test, για την οποία δεν χρειάζεται να ζητήσουμε κάτι από τον διαχειριστή συστήματος. Ωστόσο είναι κοινή βάση και έτσι ότι φτιάξουμε στην συνέχεια θα μπορούν να το δουν και να το αλλάξουν και άλλοι χρήστες του συστήματος. 4. Δημιουργία πινάκων Αφού συνδεθούμε σε μία βάση δεδομένων το επόμενο βήμα είναι να κάνουμε κάποια εργασία σε πίνακες που διαθέτει. Αν δεν έχει πίνακες μπορούμε να φτιάξουμε με την εντολή create table. Αν για παράδειγμα θέλουμε ένα πίνακα για την περιγραφή φοιτητών μπορούμε να γράψουμε: create table student(name varchar(20), lastname varchar(20), code int); 5. Εισαγωγή δεδομένων Η εισαγωγή δεδομένων στην βάση μπορεί να γίνει είτε με την εντολή insert είτε από κάποιο αρχείο. Με την εντολή insert μπορούμε να γράψουμε για το παράδειγμα του πίνακα φοιτητών: insert into student(name,lastname,code) values('giannis','papadopoulos',122); Αν έχουμε να περάσουμε κάποιες χιλιάδες ονόματα η παραπάνω διαδικασία γίνεται κουραστική. Αυτό που μπορούμε να κάνουμε είναι να γράψουμε τις πλειάδες που θέλουμε σε ένα αρχείο κειμένου, έστω students.txt, και στην συνέχεια να φορτώσουμε αυτά τα στοιχεία στην βάση δεδομένων load data local infile 'students.txt' into table student; Στο αρχείο δεδομένων τα πεδία στην κάθε πλειάδα χωρίζονται μεταξύ τους με TAB. 6. Ενημέρωση δεδομένων Πολλές φορές χρειάζεται να αλλάξουμε κάποια από τα δεδομένα που έχουμε εισάγει νωρίτερα σε κάποιον πίνακα. Η αλλαγή αυτή γίνεται με την χρήση της εντολής update. Για το παράδειγμα των φοιτητών που είδαμε προηγουμένως μία έγκυρη εντολή ενημερώσεως θα μπορούσε να είναι: 7. Ερωτήματα update students set name='kostas' where name='giannis'; Η εντολή που χρησιμοποιούμε για να εκτελέσουμε κάποια ερωτήματα σε μία βάση δεδομένων είναι η select. Η πλήρης (όσο γίνεται) σύνταξή της είναι ΣΕΛΙΔΑ 2/43

3 7.1 Όλα τα δεδομένα select field1, field2,... from tablename where boolean condition; Για να πάρουμε όλα τα δεδομένα από έναν πίνακα χρησιμοποιούμε την σύνταξη 7.2 Συγκεκριμένες πλειάδες select * from tablename; Για να ανακτήσουμε συγκεκριμένες πλειάδες από έναν πίνακα αρκεί να ορίσουμε κάποια λογική συνθήκη στην ενότητα where της εντολής select. Για παράδειγμα για να εμφανίσουμε τους φοιτητές με κωδικό μεγαλύτερο του 500 γράφουμε 7.3 Συγκεκριμένες στήλες select * from student where code>500; Για να επιλέξουμε συγκεκριμένες στήλες από έναν πίνακα πρέπει να προσδιορίσουμε τις στήλες αυτές στην κεφαλή του select. Για παράδειγμα για να εμφανίσουμε μόνον τα ονόματα των φοιτητών γράφουμε: 7.4 Ταξινόμηση πλειάδων select name from student; Είναι χρήσιμο στην έξοδο των αποτελεσμάτων από μία επιλογή να δούμε τα αποτελέσματα ταξινομημένα προκειμένου να αποφασίσουμε πιο εύκολα. Αυτό γίνεται βάζοντας το επίθεμα ORDER BY COLUMN στο τέλος της εντολής select. Column είναι το όνομα του πεδίου κατά το οποίο επιθυμούμε ταξινόμηση. Για παράδειγμα αν θέλουμε να ταξινομήσουμε τους φοιτητές ως προς το επίθετό τους γράφουμε: 7.5 Ταίριασμα προτύπων select * from student order by lastname; Με το ταίριασμα προτύπων κάνουμε πράξεις μεταξύ αλφαριθμητικών προκειμένου να βρίσκουμε πλειάδες στις οποίες υπάρχει ταίριασμα κάποιου ονόματος με ένα συγκεκριμένο πρότυπο αλφαριθμητικού. Για παράδειγμα για να βρούμε όλους τους φοιτητές που το όνομά τους τελειώνει σε 'ΟΣ' μπορούμε να γράψουμε select * ΣΕΛΙΔΑ 3/43

4 Το σύμβολο % συμβολίζει το οτιδήποτε. 8. Διαγραφή from student where name like '%ΟΣ'; Για να διαγράψουμε κάποιες πλειάδες από μία βάση δεδομένων πρέπει να χρησιμοποιήσουμε την εντολή delete, που συντάσσεται ως εξής: delete from tablename where condition; Αν για παράδειγμα θέλουμε να σβήσουμε τους φοιτητές που ο κωδικός τους είναι αρνητικός (λάθος στην εισαγωγή), τότε μπορούμε να γράψουμε: delete from student where code<0; Αν θέλουμε να διαγράψουμε ολόκληρο τον πίνακα student, τότε δίνουμε drop table student; ΣΕΛΙΔΑ 4/43

5 Η γλώσσα PHP 1. Εισαγωγή Php είναι ακρωνύμιο για το Php Hypertext Preprocessor, το οποίο φυσικά είναι μία επαναλαμβανόμενη ακολουθία του ίδιου του ονόματος. Ουσιαστικά πρόκειται για μια γλώσσα script που εκτελείται στην μεριά του διακομιστή σελιδών. Για να δούμε με τι μοιάζει μπορούμε να μελετήσουμε το επόμενο παράδειγμα: <html> </html> <head> </head> <body> </body> <title> Βασική Σελίδα </title> echo ΓΕΙΑ ΣΑΣ ΑΠΟ ΤΗΝ PHP ; Όπως μπορούμε να καταλάβουμε με μία πρώτη ανάγνωση του κώδικα η PHP περικλείεται μέσα σε κώδικα HTML με την χρήση των TAGS. Σκοπός της PHP είναι να δώσει ζωντάνια σε έναν στατικό κώδικα HTML, ώστε να μπορούμε μέσα από απλές σελίδες να εκτελούμε και κώδικα που να προσαρμόζεται στις απαιτήσεις του χρήστη. Οι σελίδες PHP επειδή εκτελούνται από τον server δεν τις ανοίγουμε ποτέ σαν απλά έγγραφα από τον φυλλομετρητή που χρησιμοποιούμε, αλλά πρέπει να συνδεθούμε μέσω του φυλλομετρητή στον απομακρυσμένο διακομιστή σελιδών και να ζητήσουμε την εκτέλεση της σελίδας. Αν λοιπόν ο χρήστης user έχει στον φάκελο public_html στον κόμβο την σελίδα first.php για να την δούμε θα πρέπει να δώσουμε στο πεδίο διευθύνσεως του φυλλομετρητή μας Αν από την άλλη δεν έχουμε μόνιμη σύνδεση στο INTERNET (μόνιμο ΙΡ) και θέλουμε απλώς να δοκιμάσουμε μία σελίδα στο μηχάνημα που βρισκόμαστε, τότε πολύ απλά δίνουμε στο πεδίο διευθύνσεως του φυλλομετρητή Στην επόμενη ενότητα θα μελετήσουμε τα βασικά στοιχεία της γλώσσας. 2. Βασικά στοιχεία της γλώσσας 2.1 Βασική Σύνταξη Για να μπορέσουμε να γράψουμε κώδικα PHP που να εκτελείται θα πρέπει να ΣΕΛΙΔΑ 5/43

6 περικλείεται στα TAGS που είδαμε στην προηγούμενη ενότητα. Επιπλέον οι εντολές που υπάρχουν σε μία ενότητα PHP διαχωρίζονται μεταξύ τους με το Ελληνικό ερωτηματικό (;) ακριβώς όπως θα κάναμε και στην γλώσσα C. Έτσι το επόμενο παράδειγμα <html> </html> <head> </head> <body> </body> <title> Βασική Σελίδα </title> echo ΓΕΙΑ ΣΑΣ ΑΠΟ ΤΗΝ PHP ; echo Αυτό είναι το δεύτερο μήνυμα ; περιέχει μία ενότητα PHP με 2 εντολές σε αυτήν. Εδώ θα πρέπει να πούμε πως η εντολή echo τυπώνει στην σελίδα HTML στην θέση που βρισκόμαστε το κείμενο που υπάρχει μέσα στα διπλά εισαγωγικά. Αν λοιπόν ανοίξουμε την παραπάνω σελίδα θα δούμε στην οθόνη το κείμενο ΓΕΙΑ ΣΑΣ ΑΠΟ ΤΗΝ ΡΗΡΑυτό είναι το δεύτερο μήνυμα. Στην παραπάνω έξοδο δεν υπάρχει κανένα λάθος. Και τα δύο μηνύματα εμφανίστηκαν το ένα μετά το άλλο και δεν υπήρξε αλλάγή γραμμής ανάμεσά τους. Αν θέλουμε να γίνει κάτι τέτοιο, τότε θα πρέπει να ενσωματώσουμε το TAG <BR> μέσα στο κείμενο που θα εκτυπώσουμε. Έτσι λοιπόν η ενότητα κώδικα θα τυπώσει echo MHNYMA1<BR> ; echo MHNYMA2 ; MHNYMA1 MHNYMA2 Φυσικά από την στιγμή που μπορούμε να ενσωματώσουμε ένα TAG μπορούμε να ενσωματώσουμε οποιοδήποτε άλλο. Η επόμενη ενότητα κώδικα θα τυπώσει echo MHNYMA1<BR> ; echo <B>MHNYMA2</B>; ΜΗΝΥΜΑ1 ΜΗΝΥΜΑ2 ΣΕΛΙΔΑ 6/43

7 Ένα άλλο βασικό στοιχείο σε γλώσσες προγραμματισμού είναι ο σχολιασμός κώδικα. Στην PHP αυτό γίνεται με την χρήση των σχολίων που συναντάμε στην C++. Έτσι τα σχόλια μπορούν να βρίσκονται μετά από // ή ακόμα και να περικλείονται μέσα σε /* */. 2.2 Μεταβλητές Ονοματολογία Αν οι δυνατότητες της PHP περιορίζονταν στο να γράφει απλώς κείμενο επί της οθόνης, τότε δεν θα ήταν περισσότερο χρήσιμη από ότι η απλή HTML. Ωστόσο πρόκειται για μία γλώσσα προγραμματισμού και σαν τέτοια έχει και μεταβλητές και τελεστές αλλά και δομές ελέγχου. Οι μεταβλητές στην PHP ξεκινούν πάντα με το σύμβολο $ ακολουθούμενο από ένα όνομα με λατινικά γράμματα, αριθμούς και _ που πρέπει να ξεκινά με γράμμα ή κάτω παύλα. Έτσι έγκυρα ονόματα είναι $i, $kala, $var11, $_ab κτλ Τέλος πρέπει να επισημανθεί πως η γλώσσα θεωρεί διαφορετικές μεταβλητές αυτές που γράφονται με πεζά ή κεφαλαία γράμματα. Έτσι οι μεταβλητές $a και $Α δεν είναι ίδιες Τύποι δεδομένων Τυπικά η γλώσσα έχει τους ακόλουθους τύπους δεδομένων 1. Boolean 2. Integer 3. Double 4. String Ωστόσο δεν παρέχεται στον προγραμματιστή κάποιος άμεσος τρόπος ώστε να δηλώσει μία μεταβλητή με κάποιον από τους παραπάνω τύπους. Η ανάθεση σε μία μεταβλητή μίας τιμής κατευθύνει τον διερμηνευτή, ώστε να καταλάβει ποιος είναι ο απαιτούμενος τύπος. Έστω η επόμενη ενότητα κώδικα <% %> $a=1; $b=true; $c=2.2; $d= good morning ; Δημιουργεί τέσσερις μεταβλητές, την a με ακέραιο τύπο, την b με boolean τύπο, την c με τύπο πραγματικών αριθμών και τέλος την d με τύπο αλφαριθμητικού. Ωστόσο καμία μεταβλητή δεν δεσμεύεται στατικά με έναν τύπο παρά μόνον στην ανάθεση. Έτσι αν στην ίδια ενότητα κώδικα με την προηγούμενη ή σε κάποια άλλη υπάρχει η ανάθεση $d=-1.7, τότε δεν θα προκληθεί κάποιο λάθος και απλά ο νέος τύπος για την μεταβλητή $d είναι double. ΣΕΛΙΔΑ 7/43

8 2.2.3 Μεταβλητές του Apache Πέρα από τις μεταβλητές που μπορούμε να φτιάξουμε στο δικό μας πρόγραμμα, υπάρχουν και κάποιες μεταβλητές που παρέχονται από τον διακομιστή σελιδών και έχουν ειδική σημασία για το πρόγραμμά μας. Οι σημαντικότερες από αυτές είναι: 1. $SERVER_NAME Είναι το όνομα του διακομιστή σελιδών που μας διερμηνεύει τις σελίδες. Σε μηχάνημα χωρίς δίκτυο επιστρέφει localhost.localdomain 2. $REQUEST_METHOD Επιστρέφει την μέθοδο που χρησιμοποιήθηκε για την πρόσβαση στην σελίδα, αν αυτό έγινε με την χρήση κάποιας φόρμας. Πιθανές τιμές αυτής της μεταβλητής είναι GET, HEAD, POST, PUT 3. $QUERY_STRING Επιστρέφει τα QUERY_STRINGS που βρίσκονται στην γραμμή διευθύνσεων του φυλλομετρητή. Αν για παράδειγμα έχουμε γράψει τότε $QUERY_STRING= a=1 Από την άλλη αν έχουμε δώσει την διεύθυνση τότε $QUERY_STRING= a=1&b= $HTTP_USER_AGENT Επιστρέφει σε μορφή αλφαριθμητικού πληροφορία για τον φυλλομετρητή που χρησιμοποιούμε για να δούμε την συγκεκριμένη σελίδα. Για παράδειγμα σε PC με Linux και φυλλομετρητή Konqueror επεστράφη η ακόλουθη πληροφορία Mozilla/5.0 (compatible; Konqueror/3.0.0; Linux) 5. $REMOTE_ADDR Μας δίνει την διεύθυνση (ΙΡ) από την οποία βλέπουμε την συγκεκριμένη σελίδα. Αν φυσικά χρησιμοποιούμε το localhost θα μας επιστρέψει $SCRIPT_FILENAME Μας δίνει υπό την μορφή απόλυτης διαδρομής το μονοπάτι προς το εκτελούμενο script. Παράδειγμα τιμής είναι το /home/user/public_html/page1.php 7. $SCRIPT_NAME Μας δίνει υπό την μορφή διαδρομών του διακομιστή το μονοπάτι προς το εκτελούμενο script. Για το προηγούμενο παράδειγμα επιστρέφει /~user/page1.php Ανάκτηση Query Strings Πολλές φορές θα έχουμε προσέξει πως στο Internet μια σελίδα δεν εμφανίζεται απλώς με το όνομά της, αλλά και με διάφορα QUERY STRINGS που την ακολουθούν στο πεδίο διευθύνσεως του φυλλομετρητή. Για παράδειγμα η αναφορά στην σελίδα αναφέρεται στην σελίδα page1.php και της περνά σαν πληροφορία δύο query strings, το a με τιμή 1 και το b με τιμή 2. Τα δύο query strings δεν είναι απαραίτητο πως θα χωρίζονται πάντα με &. Πολλές φορές μπορεί να ΣΕΛΙΔΑ 8/43

9 χρησιμοποιούμε και το % χωρίς περιορισμό. Ωστόσο στα παραδείγματα αυτού του κειμένου χρησιμοποιούμε το &. Στο επόμενο παράδειγμα παίρνουμε δύο παραμέτρους στην σελίδα μας και τα εκτυπώνουμε μέσα σε αυτήν <html> </html> <head> </head> <body> </body> <title> $a=$_get['a']; $b=$_get['b']; ΣΕΛΙΔΑ </title> echo Η ΠΡΩΤΗ ΠΑΡΑΜΕΤΡΟΣ ΕΙΝΑΙ $a<br> ; echo Η ΔΕΥΤΕΡΗ ΠΑΡΑΜΕΤΡΟΣ ΕΙΝΑΙ $b<br> ; Φυσικά θα πρέπει να χρησιμοποιήσουμε τα QUERY STRINGS προκειμένου να δούμε τις τιμές τους από τις δύο echo εντολές. προηγούμενη σελίδα θα τυπώσει στο παράθυρο του φυλλομετρητή Η ΠΡΩΤΗ ΠΑΡΑΜΕΤΡΟΣ ΕΙΝΑΙ 1 Η ΔΕΥΤΕΡΗ ΠΑΡΑΜΕΤΡΟΣ ΕΙΝΑΙ 2 a και b Για την Για να εκτυπώσουμε τις τιμές παραμέτρων μέσα από την echo αρκεί να παρεμβάλλουμε τα ονόματα των μεταβλητών στο σημείο που θέλουμε Ανάκτηση πεδίων φόρμας Ένα άλλο σημαντικό στοιχείο στον προγραμματισμό σελιδών είναι η επικοινωνία μεταξύ σελιδών με την χρήση φορμών. Η ανάκτηση των τιμών των πεδίων των φορμών γίνεται πολύ απλά με το όνομα των πεδίων ακριβώς όπως κάναμε προηγουμένως και με τα QUERY STRINGS, αλλά με χρήση του πίνακα $_POST αντί για τον πίνακα $_GET. Στο επόμενο παράδειγμα εισάγουμε στην φόρμα το όνομα και το επίθετο ενός ατόμου και στην δεύτερη σελίδα τα εμφανίζουμε στην οθόνη του φυλλομετρητή. <html> <head> </head> <body> form1.html <title> ΣΕΛΙΔΑ ΕΙΣΑΓΩΓΗΣ </title> ΣΕΛΙΔΑ 9/43

10 </html> <html> <body> <head> </body> </head> </body> </html> <form method= post action= page1.php > ΟΝΟΜΑ:<input type= text name= name > <BR> ΕΠΙΘΕΤΟ:<input type= text name= lastname > <BR> <input type= submit value= send > </form> page1.php <title> ΔΕΥΤΕΡΗ ΣΕΛΙΔΑ </title> $name=$_post['name']; $lastname=$_post['lastname']; echo "ΤΟ ΟΝΟΜΑ ΣΑΣ ΕΙΝΑΙ $name <BR>"; echo "ΤΟ ΕΠΙΘΕΤΟ ΣΑΣ ΕΙΝΑΙ $lastname <BR>"; Ανάκτηση τιμών λίστας Σε πολλές περιπτώσεις θα χρειαστεί να φτιάξουμε πτυσσόμενες λίστες προκειμένου να παρέχουμε στον χρήστη την δυνατότητα να επιλέξει από μία σειρά επιλογών. Στην επόμενη φόρμα φτιάχνουμε μία λίστα επιλογών για τις τέσσερις βασικές αριθμητικές πράξεις: <html> <head> </head> <title> </title> TEST PAGE ΣΕΛΙΔΑ 10/43

11 <body> </body> </html> <form method= post action= test1.php > ΠΡΑΞΕΙΣ:<select name= list > <option> add</option> <option> sub </option> <option> mult </option> <option> div </option> </select> <br> <input type= submit value= ok > </form> Για να φτιάξουμε μία λίστα χρησιμοποιούμε το tag select και με το πεδίο name δίνουμε ένα όνομα στην λίστα. Αυτό το όνομα είναι ιδιαίτερα σημαντικό, καθώς η PHP θα χρησιμοποιήσει μία μεταβλητή με αυτό το όνομα προκειμένου να αναφερθεί στο επιλεγμένο στοιχείο της λίστας. Οι επιλογές της λίστες μπαίνουν πάντα ανάμεσα στα tag <select> </select> με την βοήθεια του tag <option>. Ανάμεσα στα <select> </select> δεν μπορεί να μπει τίποτα άλλο παρά μόνον επιλογές με <option> και τίποτα άλλο. Μία απλή σελίδα η οποία εμφανίζει την τιμή που επιλέξαμε από την λίστα είναι η επόμενη: <html> <head> </head> <body> </body> </html> <title> </title> PHP PAGE $list=$_post['list']; echo ΕΠΙΛΕΞΑΤΕ ΤΟ ΣΤΟΙΧΕΙΟ $list<br> ; ΣΕΛΙΔΑ 11/43

12 2.3 Τελεστές Αριθμητικοί τελεστές ΤΕΛΕΣΤΗΣ ΑΠΟΤΕΛΕΣΜΑ $a+$b Πρόσθεση $a και $b $a-$b Αφαίρεση $b από $a $a * $b Πολλαπλασιασμός $a με $b $a / $b Διαίρεση $a και $b $a % $b Υπόλοιπο της ακέραιας διαιρέσεως $a/$b Αν τα δύο ορίσματα του τελεστή / είναι ακέραιοι τότε το αποτέλεσμα της διαιρέσεως είναι ακέραιος αριθμός. Επίσης υπάρχει και ο τελεστής. (τελεία) ο οποίος κάνει ότι το + στους αριθμούς για τα αλφαριθμητικά. Με αυτόν τον τελεστή συνενώνουμε δύο αλφαριθμητικά. Για παράδειγμα η έκφραση HELLO. WORLD έχει σαν αποτέλεσμα HELLO WORLD Τελεστές αναθέσεως Όμοια με την C η PHP έχει και τελεστές αναθέσεως. Για παράδειγμα είναι απόλυτα έγκυρο να γράψουμε σε κάποιο σημείο του κώδικα $a=($b = 2); όπως και να γράψουμε $a+=2; Η πρώτη εντολή αναθέτει το 2 στην μεταβλητή $b και φυσικά μετά την αναθέτει και στην μεταβλητή $a. Στην δεύτερη εντολή το 2 προστίθεται στην τιμή που έχει εκείνη την στιγμή η μεταβλητή $a Τελεστές συγκρίσεως Για να συγκρίνουμε αποτελέσματα πράξεων μεταξύ τους χρησιμοποιούμε τους τελεστές συγκρίσεως, οι οποίοι παρουσιάζονται στον επόμενο πίνακα. ΤΕΛΕΣΤΗΣ ΟΝΟΜΑ ΑΠΟΤΕΛΕΣΜΑ $a == $b ΙΣΟΤΗΤΑ Αληθές αν έχουν την ίδια τιμή τα $a, $b $a === $b ΤΑΥΤΟΤΗΤΑ Αληθές αν έχουν την ίδια τιμή τα $a,$b και είναι του ίδιου τύπου $a!= $b ΟΧΙ ΙΣΟΤΗΤΑ Αληθές αν δεν έχουν την ίδια τιμή τα $a, $b $a!== $b ΟΧΙ ΤΑΥΤΟΤΗΤΑ Αληθές αν δεν έχουν την ίδια τιμή τα $a, $b ή δεν έχουν τον ίδιο τύπο. ΣΕΛΙΔΑ 12/43

13 ΤΕΛΕΣΤΗΣ ΟΝΟΜΑ ΑΠΟΤΕΛΕΣΜΑ $a < $b ΜΙΚΡΟΤΕΡΟ Αληθές αν $a < $b $a <= $b ΜΙΚΡΟΤΕΡΟ Ή ΙΣΟΝ Αληθές αν $a<=$b $a > $b ΜΕΓΑΛΥΤΕΡΟ Αληθές αν $a>$b $a >= $b ΜΕΓΑΛΥΤΕΡΟ Ή ΙΣΟΝ Αληθές αν $a>=$b Τελεστές εκτελέσεως Η PHP έχει έναν τελεστή που όμοιό του δεν θα δούμε σε άλλη γλώσσα. Αυτός είναι ο τελεστής εκτελέσεως προγραμμάτων. Για να εκτελέσουμε μία εντολή του λειτουργικού αρκεί να την περικλείσουμε σε ` `. Προσέξτε αυτά δεν είναι τα μονά εισαγωγικά αλλά οι απόστροφοι. Για να δούμε στην πράξη το αποτέλεσμα του παραπάνω τελεστή ας μελετήσουμε την επόμενη ενότητα κώδικα: $result=`ls -CF'; echo LS RESULTS=<B>$result</B> ; Στην παραπάνω ενότητα εκτελείται η εντολή ls -CF του UNIX και το αποτέλεσμα αυτής εκχωρείται στην μεταβλητή $result. Στην συνέχεια με μία echo εμφανίζουμε με έντονα γράμματα τα αποτελέσματα της εντολής Λογικοί τελεστές Το τελευταίο είδος τελεστών που θα παρουσιάσουμε είναι οι λογικοί τελεστές. ΤΕΛΕΣΤΗΣ ΟΝΟΜΑ ΑΠΟΤΕΛΕΣΜΑ $a and $b AND Αληθές αν και $a αληθές και $b αληθές $a or $b OR Αληθές αν ή $a αληθές ή $b αληθές $a xor $b XOR Αληθές αν μόνον $a αληθές ή μόνον $b αληθές! $a NOT Αληθές αν $a ψευδές $a && $b AND Αληθές αν και $a αληθές και $b αληθές $a $b OR Αληθές αν ή $a αληθές ή $b αληθές Οι τελεστές and και or έχουν την ίδια σημασία με τους && και αλλά μικρότερη προτεραιότητα. ΣΕΛΙΔΑ 13/43

14 2.4 Δομές Ελέγχου Μια γλώσσα προγραμματισμού θεωρείται νεκρή χωρίς δομές ελέγχου. Οι δομές ελέγχου πάντα περιορίζονταν σε δύο κατηγορίες: τις δομές επιλογής και τις δομές ανακυκλώσεως. Στις πρώτες αποφασίζουμε για το ποια θα είναι η επόμενη εντολή που θα εκτελεστεί χρησιμοποιώντας μία λογική συνθήκη. Στις δομές ανακυκλώσεως μια ομάδα εντολών εκτελείται πολλές φορές με βάση μία λογική συνθήκη ή έναν προκαθορισμένο αριθμό επαναλήψεων Απλός επιλογέας Ο απλός επιλογέας αποφασίζει για την επόμενη εντολή που θα εκτελεστεί με την χρήση μιας λογικής συνθήκης. Η σύνταξή του είναι if(condition) group1; Που σημαίνει πως αν ισχύει η λογική συνθήκη condition, τότε εκτελείται η ομάδα εντολών group1. Διαφορετικά αυτή η ομάδα εντολών δεν εκτελείται. Το επόμενο απλό παράδειγμα δείχνει μία εφαρμογή του απλού επιλογέα. $a=1; $b=2; if($b < $a) $b=$a; echo b=$b a=$a ; Φυσικά πάντα δεν υπάρχει ένας μόνο δρόμος στις αποφάσεις. Για αυτόν τον λόγο έχει προβλεφτεί να υπάρχει και ένα else για να καλύψει αυτήν την περίπτωση, όπως δείχνει το επόμενο παράδειγμα $a=1; $b=2; if($a < $b) echo TO A EINAI ΜΙΚΡΟΤΕΡΟ ΤΟΥ Β ; ΣΕΛΙΔΑ 14/43

15 else echo ΤΟ Β ΕΙΝΑΙ ΜΙΚΡΟΤΕΡΟ ΤΟΥ Α ; Πολλαπλός επιλογέας Εκτός του απλού επιλογέα υπάρχει και ο πολλαπλός επιλογέας, στον οποίο δεν εξετάζουμε μόνον μία περίπτωση για να πάρουμε απόφαση για την επόμενη εντολή, αλλά περισσότερες. Η δομή του πολλαπλού επιλογέα έχει ως εξής: switch (variable) case value1: case value2: group1; break; group2; break;... default: group-default; break; Αν η τιμή της μεταβλητής είναι ίση με value1, τότε εκτελούνται οι εντολές group1. Διαφορετικά ελέγχουμε αν είναι ίση με value2. Αν είναι έτσι, εκτελούνται οι εντολές group2. Αν δεν βρεθεί ταίριασμα εκτελούνται οι εντολές που ακολουθούν πρόταση default. Εδώ θα πρέπει να επισημάνουμε τα ακόλουθα σε σχέση με την switch. 1. Οι εντολές break δεν είναι απαραίτητες για την συντακτική εγκυρότητα της switch. Αν δεν υπάρχουν όμως τότε θα εκτελεστεί και το επόμενο μπλοκ εντολών μετά το πρώτο ταίριασμα της μεταβλητής. 2. Η πρόταση default δεν είναι επίσης απαραίτητη. Ωστόσο συνίσταται η χρήση της προκειμένου να εξασφαλίσουμε πως τουλάχιστον μία ομάδα εντολών θα εκτελεστεί αλλά και πως έχουμε καλύψει όλες τις πιθανές περιπτώσεις για την τιμή της μεταβλητής. 3. Δεν πρέπει σε καμία περίπτωση η πρόταση switch να θεωρηθεί ισοδύναμη με πολλαπλά if. Στα πολλαπλά if δεν έχουμε μόνον ελέγχους για ισότητα. Ένα από παράδειγμα για το πως δουλεύει η εντολή switch παρουσιάζεται στο ΣΕΛΙΔΑ 15/43

16 επόμενο παράδειγμα $var=1; switch ($var) case 1: echo H TIMH EINAI 1 ; break; case 2: echo H TIMH EINAI 2 ; break; default: echo OYTE 1 OYTE 2 ; break; Ένα λίγο πιο δυσνόητο παράδειγμα είναι αυτό που ακολουθεί: $var=5; switch ($var) case 1: case 2: case 3: echo ΕΙΝΑΙ ΑΠΟ 1 ΜΕΧΡΙ 3 ; break; case 4: case 5: case 6: echo EINAI ΑΠΟ 4 ΜΕΧΡΙ 6 ; break; default: echo EINAI ΣΕ ΑΛΛΟ ΣΥΝΟΛΟ ; break; ΣΕΛΙΔΑ 16/43

17 Στο παραπάνω παράδειγμα αν η μεταβλητή είναι από 1 μέχρι 3 εμφανίζεται το πρώτο μήνυμα. Αν είναι από 4 μέχρι 6 το δεύτερο αλλιώς το τρίτο. Δεν είναι ιδιαίτερα βολικός τρόπος για να καλύψουμε σύνολα αλλά τουλάχιστον είναι ένας τρόπος Επανάληψη με while Ο απλούστερος τρόπος για να γράψουμε μία επανάληψη είναι με την χρήση της εντολής while. Η σύνταξή της είναι ίδια με αυτήν που συναντάμε στην C, δηλαδή: while(condition) group; Δηλαδή όσο ισχύει η condition εκτελούνται οι εντολές στην ομάδα εντολών group. Ένα απλό παράδειγμα είναι αυτό ενός απλού μετρητή: $sum=0; $i=1; while($i<=100) $sum=$sum+$i; $i=$i+1; Σε αυτό το παράδειγμα υπολογίζουμε το άθροισμα 100 i Φυσικά ο βρόγχος i=1 while δεν είναι πάντα ο πλέον κατάλληλος για προκαθορισμένο πλήθος επαναλήψεων, καθώς θα πρέπει από μόνοι μας να φροντίζουμε για την ανανέωση της μεταβλητής που ελέγχει τον βρόγχο. Αν ξεχάσουμε την αύξηση της μεταβλητής $i, τότε θα έχουμε έναν ατέρμονό βρόγχο Επανάληψη με do.. while Ο δεύτερος βρόγχος που θα εξετάσουμε είναι ο βρόγχος do..while. Η σύνταξή του έχει ως ακολούθως: do ΣΕΛΙΔΑ 17/43

18 group; while(condition); Εδώ βλέπουμε πως το σύνολο εντολών θα εκτελεστεί και ύστερα θα ελέγξουμε αν η συνθήκη είναι αληθής ή ψευδής. Η διαφορά με τον προηγούμενο βρόγχο είναι ότι με το do...while οι εντολές θα εκτελεστούν τουλάχιστον μία φορά, όπως άλλωστε φαίνεται και στο επόμενο παράδειγμα: $var=100; do $var=$var+1; while($var<50); echo var=$var ; Μετά την εκτέλεση του παραπάνω κώδικα η τιμή του $var θα είναι 101, αφού θα εκτελεστεί ο βρόγχος τουλάχιστον μία φορά Επανάληψη με for Το τελευταίο είδος επαναλήψεως που θα εξετάσουμε είναι αυτό με την χρήση της εντολής for. Η σύνταξή της είναι ίδια με αυτήν που συναντάμε στην γλώσσα C, δηλαδή: for(init;check;update) group; Η σημασία των παραμέτρων του for είναι η ακόλουθη: 1. init Είναι μία εντολή που εκτελείται σε κάθε περίπτωση πριν την έναρξη του βρόγχου ακόμα και αν οι εντολές στο σώμα του δεν εκτελεστούν καμία φορά. 2. check Είναι μία λογική συνθήκη που εκτελείται πριν την κάθε επανάληψη. Αν εξαρχής δεν είναι αληθής, τότε οι εντολές στο σώμα του βρόγχου δεν θα εκτελεστούν καμία φορά. 3. update Είναι μία εντολή που εκτελείται στο τέλος του βρόγχου μετά την εκτέλεση των εντολών στο σώμα του βρόγχου και οπωσδήποτε πριν τον έλεγχο της συνθήκης check. Ένα απλό παράδειγμα του βρόγχου είναι αυτό που ακολουθεί: $sum=0; for($i=1;$i<=100;$i=$i+1) ΣΕΛΙΔΑ 18/43

19 $sum=$sum+$i; Αξίζει να σημειωθεί πως κάποιες από τις παραμέτρους του βρόγχου μπορούν να παραληφθούν, αλλά με κανέναν τρόπο δεν παραλείπονται τα Ελληνικά ερωτηματικά που τις διαχωρίζουν. Για παράδειγμα στην επόμενη πρόταση δεν υπάρχει init και update και όμως ο βρόγχος δουλεύει κανονικά. for(;$i<=100;) $sum=$sum+$i; $i=$i+1; Στην παραπάνω περίπτωση η πρόταση for είναι ισοδύναμη με ένα while. 3. Συναρτήσεις 3.1 Εισαγωγή Το πιο σημαντικό θέμα στην PHP είναι οι συναρτήσεις της. Η γλώσσα διαθέτει ένα πλούσιο ρεπερτόριο από συναρτήσεις, με τις οποίες μπορούμε να κάνουμε τα πάντα σε θέματα όπως βάσεις δεδομένων, πίνακες, μαθηματικά, συμπίεση δεδομένων κτλ. Επειδή η αναφορά σε όλες τις συναρτήσεις της γλώσσας θα απαιτούσε εκατοντάδες σελίδες και επειδή ο προσανατολισμός αυτού του κειμένου είναι προς το ηλεκτρονικό εμπόριο θα εστιάσουμε την μελέτη μας σε ότι έχει να κάνει με ηλεκτρονικό εμπόριο. Αν κάπου χρειαστεί να αναφέρουμε κάποια ειδική συνάρτηση θα το κάνουμε Ορισμός συναρτήσεων Μία συνάρτηση μπορεί να εμφανιστεί σε οποιοδήποτε σημείο του κώδικα μας ακόμα και μετά την χρήση της. Μια συνάρτηση έχει τον επόμενο ορισμό function name($arg1,$arg2,...,$argn) group; return value; Το αναγνωριστικό function είναι απαραίτητο πριν από το όνομα της συναρτήσεως προκειμένου να κατανοήσει ο διερμηνευτής της γλώσσας πως ΣΕΛΙΔΑ 19/43

20 δεν πρόκειται για απλό κώδικα, αλλά για συνάρτηση της οποίας ο κώδικας φυσικά θα εκτελεστεί όταν αυτή κληθεί. Στο σώμα της συναρτήσεως (group) βάζουμε εντολές όπως θα τις βάζαμε και σε συνεχόμενο κώδικα. Σε μία συνάρτηση δεν είναι απαραίτητο να υπάρχει η εντολή επιστροφής τιμής return. Ωστόσο γενικά οι συναρτήσεις θα πρέπει να επιστρέφουν τιμές. Επίσης οι συναρτήσεις δεν είναι απαραίτητο να παίρνουν ορίσματα όπως κάναμε στο παραπάνω παράδειγμα. Βέβαια η χρήση παραμέτρων είναι ένας τρόπος επικοινωνίας ανάμεσα στο καλούμενο πρόγραμμά και καλών πρόγραμμά. Ένα παράδειγμα μίας απλής συναρτήσεως είναι και το επόμενο που προσθέτει τα δύο ορίσματα που δέχεται και τα επιστρέφει. function add($a,$b) return $a+$b; $result=add(10,20); echo result=$result<br> ; Όπως βλέπουμε η αναφορά στην τιμή της συναρτήσεως δεν γίνεται με το $ μπροστά από το όνομά της. Αυτό γίνεται αλλά έχει άλλη σημασία όπως θα δούμε παρακάτω. Προς το παρόν αρκεί να θυμόμαστε πως όταν θέλουμε να πάρουμε το αποτέλεσμα μίας συναρτήσεως δεν βάζουμε το $ πριν από το όνομά της. Το παραπάνω παράδειγμα θα μπορούσε να είχε γραφεί και αλλιώς $result=add(10,20); echo result=$result<br> ; function add($a,$b) return $a+$b; Γιατί όπως είπαμε δεν είναι απαραίτητο να δηλώνεται η συνάρτηση πριν από την χρήση της. Βέβαια για να αποφεύγονται λάθη αλλά και επειδή πριν την έκδοση 4 αυτό δεν υποστηρίζονταν καλό είναι να δηλώνουμε τις συναρτήσεις πριν τις χρησιμοποιήσουμε Ορίσματα Όπως και σε μία τυπική διαδικασιακή γλώσσα προγραμματισμού τα ονόματα των ορισμάτων δεν έχουν καμία σχέση με ονόματα που τυχόν υπάρχουν στο υπόλοιπο πρόγραμμα ή σε κάποια άλλη συνάρτηση, πράγμα που φαίνεται στο ΣΕΛΙΔΑ 20/43

21 επόμενο απλό παράδειγμα: $a=1; $b=2; $c=3; function add($a,$b) return $a+$b; function sub($a,$b) return $a-$b; $result=sub(2,b); echo result=$result ; Ένα δεύτερο σημείο που πρέπει να προσέξουμε με τα ορίσματα είναι πως μπορούμε να χρησιμοποιήσουμε πέρασμα με αναφορά προκειμένου να πετύχουμε την αλλαγή μεταβλητών μέσα σε μία συνάρτηση. Για να περάσουμε μια μεταβλητή με αναφορά χρησιμοποιούμε τον τελεστή & μπροστά από το όνομα του ορίσματος στον ορισμό της συναρτήσεως. Στο επόμενο παράδειγμα μέσα από την συνάρτηση swap ανταλλάσσουμε τις τιμές δύο μεταβλητών: function swap(&$a,&$b) $var1=100; $var2=200; $temp=$a; $a=$b; $b=$temp; swap($var1,$var2); echo var1=$var1 and var2=$var2<br> ; ΣΕΛΙΔΑ 21/43

22 Ο παραπάνω τρόπος περάσματος τιμών με αναφορά είναι λίγο πολύ ίδιος με αυτόν που βρίσκουμε στην C++. Ωστόσο η PHP έχει ακόμα έναν τρόπο περάσματος τιμών με αναφορά : function swap($a,$b) $var1=100; $var2=200; $temp=$a; $a=$b; $b=temp; swap(&$var1,&$var2); echo var1=$var1 and var2=$var2<br> ; Λογικά η νέα έκδοση της συναρτήσεως swap δεν θα έπρεπε να ανταλλάσει τις τιμές των μεταβλητών. Ωστόσο αυτό γίνεται επειδή αν προσέξετε καλά στην κλήση της συναρτήσεως δεν περνάμε απλώς τις μεταβλητές $var1 και $var2, αλλά τις διευθύνσεις αυτών με την χρήση του τελεστή & μπροστά από το ονόματα των μεταβλητών. Ένα ακόμα σημαντικό στοιχείο που πρέπει να πούμε για τις συναρτήσεις της PHP είναι η χρήση προκαθορισμένων τιμών στις παραμέτρους. Αυτό σημαίνει πως δεν είναι απαραίτητο να καλούμε μία συνάρτηση περνώντας τιμές σε όλα της τα ορίσματα. function add($a,$b=1) return $a+$b; $result1=add(100); $result2=add(200,300); echo result1=$result1 and result2=$result2<br> ; Ορίσαμε την συνάρτηση add() να δέχεται δύο ορίσματα. Το δεύτερο όρισμα δεν είναι απαραίτητο να το περάσουμε στην κλήση της συναρτήσεως, για αυτό και δηλώνουμε πως η προκαθορισμένη του τιμή θα είναι 1. Έτσι το πρώτο ΣΕΛΙΔΑ 22/43

23 αποτέλεσμα είναι 101 και το δεύτερο Πίνακες Ο προσεκτικός αναγνώστης θα παρατήρησε πως μέχρι τώρα αποφύγαμε να μιλήσουμε για πίνακες στην ενότητα των μεταβλητών ή των δομών ελέγχου. Ο λόγος είναι απλός: Η γλώσσα δεν έχει πίνακες, τουλάχιστον όχι με την συνηθισμένη έννοια του όρου. Για την δημιουργία και τον χειρισμό πινάκων η γλώσσα διαθέτει ειδικές συναρτήσεις και ειδικές δομές ελέγχου. Οι πίνακες όπως θα δούμε παίζουν σημαντικό ρόλο στο ηλεκτρονικό εμπόριο, καθώς σε αυτούς μπορούμε να αποθηκεύουμε στοιχεία από ίδιες ομάδες αλλά και γιατί οι συναρτήσεις χειρισμού βάσεων δεδομένων επιστρέφουν πολύ συχνά πίνακες Δημιουργία πινάκων Οι πίνακες δημιουργούνται με την χρήση της συναρτήσεως Array(). Η συνάρτηση αυτή παίρνει σαν όρισμα τα στοιχεία του πίνακα και τον δημιουργεί όπως φαίνεται και στο επόμενο παράδειγμα $my_array=array(1,7,9,11); echo πρώτο=$my_array[0]<br> ; echo δεύτερο=$my_array[1]<br> ; echo τρίτο=$my_array[2]<br> '; echo τέταρτο=$my_array[3]<br> ; Στο παράδειγμα αυτό δημιουργούμε τον πίνακα $my_array με τα στοιχεία 1,7,9,11 και στην συνέχεια τα τυπώνουμε από το πρώτο προς το τελευταίο. Όπως βλέπουμε οι δείκτες των πινάκων ξεκινούν από το 0 και φτάνουν μέχρι το μέγεθος του πίνακα -1, ακριβώς όπως θα κάναμε και στην C. Ένα άλλο σημαντικό στοιχείο είναι η αναφορά στα στοιχεία του πίνακα. Αυτή γίνεται με την χρήση του [ ]. Φυσικά τα στοιχεία ενός πίνακα είναι με την σειρά τους μεταβλητές και έτσι αναφορές όπως είναι καθόλα έγκυρες. $my_array[2]=100 Ο τρόπος δημιουργίας πινάκων που είδαμε προηγουμένως δεν είναι ο μόνος. Μπορούμε κατά την δημιουργία ενός πίνακα να προσδιορίσουμε σε ποια θέση θα μπει κάθε στοιχείο στον πίνακα, όπως δείχνει και το επόμενο παράδειγμα: $fruits=array( 2=> ΜΗΛΑ, 0=> ΛΕΜΟΝΙΑ, 1=> ΠΟΡΤΟΚΑΛΙΑ, ΣΕΛΙΔΑ 23/43

24 ); 3=> ΑΧΛΑΔΙΑ echo πρώτο=$fruits[0]<br> ; echo δεύτερο=$fruits[1]<br> ; echo τρίτο=$fruits[2]<br> '; echo τέταρτο=$fruits[3]<br> ; Για να προσδιορίσουμε σε ποια θέση θα μπει κάποιο στοιχείο σε έναν πίνακα αρκεί να γράψουμε τον δείκτη της θέσεως, τον τελεστή => και στην συνέχεια την τιμή που θέλουμε να έχει ο πίνακας σε εκείνη την θέση. Όπως αναφέραμε προηγουμένως οι πίνακες ξεκινούν στην PHP από το 0. Αυτό είναι αλήθεια αρκεί να μην το αλλάξουμε ρητά. Αν θέλουμε να ξεκινά ένας πίνακας από διαφορετική θέση πρέπει να το προσδιορίσουμε καθορίζοντας την πρώτη θέση όπως στο επόμενο παράδειγμα: $my_array=array(4=>1,3,7,11); Σε αυτήν την περίπτωση ο πίνακας 1,3,7,11 στις θέσεις 4,5,6,7. ξεκινά από το 4 και έχει τα στοιχεία Οι πίνακες κατακερματισμού παίζουν ιδιαίτερα σημαντικό ρόλο στον προγραμματισμό, καθώς με την χρήση κλειδιών μπορούμε αυτόματα να αποκτήσουμε πρόσβαση σε πληροφορία που θα απαιτούσε σημαντικό χρόνο αναζητήσεως. Η PHP διαθέτει πίνακες κατακερματισμού, οι οποίοι μάλιστα δημιουργούνται με την χρήση της συναρτήσεως Array() που είδαμε για την δημιουργία πινάκων. Ένα απλό παράδειγμα πίνακα κατακερματισμού είναι και το επόμενο που παρουσιάζει έναν πίνακα κόστους για προΐόντα που πουλά ένα κατάστημα ειδών πληροφορικής: $cost=array( ); "CPU"=>100, "MB"=>80, "RAM"=>30, "HDISK"=>120, "PRINTER"=>110 $cost_printer=$cost["printer"]; echo "THE COST OF PRINTER IS ΣΕΛΙΔΑ 24/43

25 $cost_printer<br>"; Σε πολλές εφαρμογές οι πίνακες δεν είναι μονοδιάστατοι. Η δημιουργία περισσοτέρων διαστάσεων γίνεται πάλι με την χρήση της συναρτήσεως Array() αλλά με διαφορετικό τρόπο από ότι είδαμε προηγουμένως: $my_array=array( Array(1,6,7), Array(2,4,5), Array(5,5,8) ); for($i=0;$i<3;$i=$i+1) for($j=0;$j<3;$j=$j+1) echo "<BR>"; $var=$my_array[$i][$j]; echo "$var "; Με άλλα λόγια οι πολυδιάστατοι πίνακες δημιουργούνται με την χρήση ένθετων πινάκων. Βέβαια οι ένθετοι πίνακες δεν είναι απαραίτητο να έχουν όλοι την ίδια διάσταση Πλοήγηση σε πίνακες Με τον όρο πλοήγηση σε πίνακες εννοούμε την ενέργεια που κάνουμε να κινηθούμε από την μία άκρη ενός πίνακα στην άλλη. Οι πίνακες στην PHP δεν είναι πίνακες με την έννοια του όρου που τον συναντάμε στις άλλες διαδικασιακές γλώσσες.. Στην ουσία πρόκειται για γραμμικές λίστες οι οποίες διαθέτουν κάποιον δείκτη θέσεως ο οποίος δείχνει και την τρέχουσα θέση στην οποία κάνουμε κάποια συγκεκριμένη πράξη όπως έναν έλεγχο. Η απλούστερη ενέργεια που θέλουμε να κάνουμε σε έναν πίνακα είναι να ψάξουμε για ένα στοιχείο σε αυτόν. Η πρώτη συνάρτηση που το κάνει αυτό είναι η in_array(value,array). Η πρώτη της παράμετρος είναι η τιμή για την οποία ψάχνουμε και η δεύτερη παράμετρος είναι ο πίνακας στον οποίο γίνεται η έρευνα. Η συνάρτηση αυτή επιστρέφει TRUE ή FALSE, ανάλογα με το αν υπάρχει στον πίνακα η τιμή ή όχι. Αν και αυτή η συνάρτηση είναι αρκετά απλή στην σκέψη και στην λειτουργία δεν μας δίνει την θέση στην οποία βρίσκεται το ΣΕΛΙΔΑ 25/43

26 στοιχείο στον πίνακα. Αυτό γίνεται με την συνάρτηση array_search(value,array). Η συνάρτηση αυτή ψάχνει για το στοιχείο value στον πίνακα array και θα επιστρέψει αν υπάρχει το κλειδί (ή θέση) αυτού του στοιχείου στον πίνακα. Όπως αναφέραμε παραπάνω οι πίνακες είναι στην ουσία γραμμικές λίστες. Επομένως υπάρχει κάποιος τρόπος να της διατρέξουμε από την αρχή μέχρι το τέλος. Αυτήν την λειτουργία κάνει η συνάρτηση next(array), η οποία επιστρέφει το επόμενο στοιχείο σε έναν πίνακα και ταυτόχρονα μετακινεί τον δείκτη θέσεως του πίνακα κατά 1 στοιχείο. Αν έχουμε φτάσει στο τέλος του πίνακα η συνάρτηση αυτή επιστρέφει FALSE. Ένα απλό παράδειγμα της χρήσεώς της φαίνεται παρακάτω: $a=array(1,2,11,-2,4,5); $item=next($a); while($item) echo element=$item<br> ; $item=next($a); Το παραπάνω πρόγραμμα όσο απλό και αν φαίνεται έχει ένα ελάττωμα: δεν τυπώνει το πρώτο στοιχείο του πίνακα, αλλά το παρακάμπτει. Αυτό γίνεται επειδή η next() περνά αμέσως στο επόμενο στοιχείο του πίνακα. Αν θέλουμε να παίρνουμε κάθε φορά το τρέχον στοιχείο σε έναν πίνακα, τότε πρέπει να χρησιμοποιήσουμε την συνάρτηση current(array) η οποία επιστρέφει το στοιχείο σε εκείνη την θέση του πίνακα που βρισκόμαστε. Το παραπάνω παράδειγμα γραμμένο σωστά έχει ως ακολούθως: $a=array(1,2,11,-2,4,5); do $item=current($a); echo current=$item<br> ; while(next($a)); Αν δεν θέλουμε να περάσουμε από όλα τα στοιχεία ενός πίνακα, αλλά απλά να πάμε στο τέλος του, τότε μπορούμε να χρησιμοποιήσουμε την συνάρτηση end(), η οποία επιστρέφει το τελευταίο στοιχείο στον πίνακα και μετακινεί τον δείκτη του πίνακα στην τελευταία θέση του. ΣΕΛΙΔΑ 26/43

27 Όμοια με την συνάρτηση next() υπάρχει και η prev() η οποία δίνει το προηγούμενο στοιχείο σε έναν πίνακα και επιστρέφει FALSE όταν φτάσουμε στην αρχή του πίνακα. Οι προηγούμενες συναρτήσεις γενικά μετακινούν τον δείκτη ενός πίνακα για να κάνουν την δουλεία τους. Ωστόσο σε πολλές περιπτώσεις θα μας χρειαστεί να μετακινηθούμε κατά μήκος ενός πίνακα πολλές φορές. Σε αυτήν την περίπτωση θα πρέπει να χρησιιμοποιήσουμε την συνάρτηση reset(array), η οποία επαναθέτει τον δείκτη ενός πίνακα στην αρχή. Έτσι οι μελλοντικές συναρτήσεις next(), prev() κτλ θα ξεκινήσουν και πάλι από την πρώτη θέση του πίνακα Πράξεις μεταξύ πινάκων Έκτος από την πλοήγηση σε έναν πίνακα πολύ σημαντικό είναι να εξετάσουμε και τις συναρτήσεις για πράξεις μεταξύ πινάκων. Στον επόμενο πίνακα παρουσιάζονται οι σημαντικότερες από αυτές τις συναρτήσεις και την σημασία τους: ΣΥΝΑΡΤΗΣΗ array_diff(array1,array2,... ) array_flip(array) array_intersect(array1,arra y2,...) array_sum(array) array_unique(array) array_reverse(array) ΣΗΜΑΣΙΑ Επιστρέφει τα στοιχεία που υπάρχουν μόνον στο array1 Αντιμεταθέτει τα κλειδιά και τις τιμές του πίνακα array. Έχει επίδραση σε ακέραιες και string τιμές. Επιστρέφει την τομή των στοιχείων των πινάκων. Επιστρέφει το άθροισμα των στοιχείων του πίνακα. Διαγράφει τις διπλές τιμές από τον πίνακα array. Αναποδογυρίζει τον πίνακα array Ταξινόμηση πινάκων Για την ταξινόμηση πινάκων η PHP διαθέτει μία σειρά από συναρτήσεις που παρουσιάζονται στον επόμενο πίνακα: ΣΥΝΑΡΤΗΣΗ arsort(array) asort (array) krsort(array) ksort(array) rsort(array) sort(array) ΣΗΜΑΣΙΑ Ταξινομεί τον πίνακα αντίστροφα και τα κλειδιά διατηρούν την σχέση τους με τις τιμές. Ταξινομεί τον πίνακα και τα κλειδιά διατηρούν την σχέση τους με τις τιμές. Ταξινομεί τον πίνακα αντίστροφα βάσει του κλειδιού Ταξινομεί τον πίνακα βάσει του κλειδιού Ταξινομεί τον πίνακα αντίστροφα Ταξινομεί τον πίνακα ΣΕΛΙΔΑ 27/43

28 3.2.5 Η δομή foreach Μια πολύ χρήσιμη δομή που παρέχει η γλώσσα για την κίνηση μέσα σε πίνακες είναι η δομή foreach. Η δομή αυτή εμφανίζεται με δύο μορφές. Στην πρώτη μορφή του γράφουμε foreach($array as $value) group; Σε αυτήν την μορφή η μεταβλητή $value παίρνει διαδοχικά μία μία τις τιμές που περιέχονται στον πίνακα $array. Κάθε φορά που έχουμε μία νέα τιμή από τον πίνακα εκτελούνται οι εντολές στον σύνολο group. Για παράδειγμα μπορούμε με αυτόν τον τρόπο να τυπώσουμε όλα τα στοιχεία που υπάρχουν στην λίστα $ar=array(1,7,12,34); foreach($ar as $v) echo Value=$v<BR> ; Έτσι ακόμα και αν δεν ξέρουμε πόσα στοιχεία έχει ένας πίνακας μπορούμε να τον διατρέξουμε και να εκτελέσουμε διάφορες πράξεις πάνω στον πίνακα. Βέβαια η PHP διαθέτει την συνάρτηση count() η οποία επιστρέφει το πλήθος των στοιχείων ενός πίνακα. Η δομή foreach εκτελεί την πράξη reset() πάνω σε ένα αντίγραφο του πίνακα πριν την έναρξη των πράξεων. Έτσι ο προγραμματιστής απαλλάσσεται από την μέριμνα την τοποθετήσεως του δείκτη του πίνακα. Ωστόσο αυτό σημαίνει πως πράξεις σαν και την επόμενη δεν έχουν το αποτέλεσμα που θα επιθυμούσαμε: $ar=array(1,3,5,10); foreach($ar as $v) print_r($ar); $v=$v+1; ΣΕΛΙΔΑ 28/43

29 Η συνάρτηση print_r() απλά τυπώνει τα στοιχεία ενός πίνακα. Θα περιμέναμε να προστεθεί 1 σε κάθε στοιχείο του πίνακα. Αυτό όμως δεν συνέβη, καθώς η foreach δεν επηρεάζει τον πραγματικό πίνακα. Η δεύτερη μορφή με την οποία εμφανίζεται η δομή είναι η επόμενη: foreach($array as $key=>$value) group; Σε αυτήν την μορφή σε κάθε επανάληψη εκτελούνται οι εντολές στο group και η μεταβλητή $value λαμβάνει την επόμενη τιμή στον πίνακα αλλά και η μεταβλητή $key παίρνει το κλειδί σε εκείνη την θέση στον πίνακα. Και αυτή η μορφή της δομής δεν επηρεάζει τον πραγματικό πίνακα Το επόμενο παράδειγμα δείχνει την χρήση αυτής της μορφής της δομής Στοιβάδες $ar=array( a =>1 b =>2, c =>3, d =>4 ); foreach($ar as $key=>$value) echo key=$key<br> ; echo value=$value<br> ; Το τελευταίο σημεία που θα εξετάσουμε στους πίνακες είναι η χρήση τους με την μορφή στοιβάδας. Στοιβάδες είναι δομές δεδομένων στις οποίες επιτρέπονται δύο πράξεις: Η εισαγωγή ενός στοιχείο στο τέλος της στοιβάδας (κορυφή). Η εξαγωγή ενός στοιχείου από το τέλος της στοιβάδας. Για να καταλάβουμε καλύτερα την δομή της θα πρέπει να την φανταστούμε σαν μία σειρά από πιάτα. Μπορούμε μόνον να πάρουμε το επάνω πιάτο ή να βάλουμε κάποιο άλλο πάνω από αυτό. Αυτή η δομή έχει πάρα πολλά πλεονεκτήματα 1 και για αυτόν τον λόγο αξίζει να αφιερώσουμε λίγο χρόνο για 1 Ειδικά στους μεταφραστές ΣΕΛΙΔΑ 29/43

30 να την μελετήσουμε. Η πρώτη συνάρτηση που θα εξετάσουμε είναι η συνάρτηση array_push(array,value). Η συνάρτηση αυτή τοποθετεί την τιμή value στο τέλος του array και επιστρέφει το νέο πλήθος στοιχείων που έχει ο πίνακας. Αν θέλουμε μπορούμε να προσθέσουμε περισσότερα στοιχεία στον πίνακα βάζοντας και τρίτο και τέταρτο όρισμα στην συνάρτηση. Στο επόμενο παράδειγμα οι ζυγοί αριθμοί από το 2 έως και το 100 τοποθετούνται σε έναν πίνακα: $ar=array(); for($i=2;$i<=100;$i+=2) print_r($ar); array_push($ar,$i); Η δεύτερη συνάρτηση που θα εξετάσουμε είναι η συνάρτηση array_pop(array) επιστρέφει το τελευταίο στοιχείο του πίνακα. Αν ο πίνακας είναι άδειος επιστρέφει NULL. $ar=array(); for($i=2;$i<=100;$i+=2) do while($v!=null); 3.3 Ημερομηνία και ώρα array_push($ar,$i); $v=array_pop($ar); echo value=$v<br> ; Με την βοήθεια της γλώσσας μπορούμε να ανακτήσουμε την ώρα και την ημερομηνία και να τα ενσωματώσουμε στις σελίδες μας. Στον επόμενο πίνακα παρουσιάζονται οι σημαντικότερες συναρτήσεις για ημερομηνία και ώρα ΣΥΝΑΡΤΗΣΗ date() ΣΗΜΑΣΙΑ Ανάκτηση ημερομηνίας ΣΕΛΙΔΑ 30/43

31 ΣΥΝΑΡΤΗΣΗ time() getdate() localtime() ΣΗΜΑΣΙΑ Ανάκτηση ώρας σε δευτερόλεπτα (UNIX) Επιστρέφει πίνακα με μήνες, χρόνια, μέρες Επιστρέφει πίνακα με λεπτά, δευτερόλεπτα κτλ Η συνάρτηση date() γενικά απαιτεί ένα αλφαριθμητικό με πολλές παραμέτρους και θα ήταν χάσιμο χρόνο να τις αναλύσουμε αυτήν την στιγμή εδώ. Από την άλλη η time() είναι χρήσιμη για να μετρήσουμε χρονικές αποστάσεις. H getdate() και η localtime() είναι οι πιο εύχρηστες και μας επιστρέφουν πληροφορία που μπορεί να διαβαστεί εύκολα από άνθρωπο. 3.4 MySQL Εισαγωγή $current_date=getdate(); $month= $current_date["month"]; $year= $day= $current_date["year"]; $current_date["mday"]; $minutes= $current_date["minutes"]; $seconds= $current_date["seconds"]; $hours= $current_date["hours"]; echo "TIME $hours:$minutes :$seconds <BR>"; echo "DATE $day / $month / $year <BR>"; Για όσους ασχολούνται με ηλεκτρονικό εμπόριο το πλέον σημαντικό θέμα στον σχεδιασμό σελιδών είναι η σύνδεση με βάσεις δεδομένων και η εκτέλεση ερωτημάτων μέσω του διαδικτύου σε αυτές. Η PHP έχει δεκάδες συναρτήσεις για αυτόν τον σκοπό με τις οποίες μπορούμε να συνδεθούμε σε βάσεις ORACLE, SQL SERVER, INGRESS κτλ. Ωστόσο σε αυτό το κείμενο παρουσιάζονται μόνον οι συναρτήσεις που έχουν να κάνουν με την MySQL, καθώς μπορεί κανείς να την βρει εύκολα, δεν είναι ιδιαίτερα απαιτητική σε πόρους και προ πάντων εργάζεται το ίδιο σε όλα τα λειτουργικά συστήματα στα οποία είναι εγκατεστημένη Σύνδεση με βάση Το πρώτο που κοιτάμε να κάνουμε όταν θέλουμε να εργαστούμε σε μία βάση είναι να συνδεθούμε σε αυτήν. Η σύνδεση για την MySQL γίνεται με την συνάρτηση ΣΕΛΙΔΑ 31/43

32 mysql_connect(ip,username,password); Η παραπάνω συνάρτηση επιστρέφει έναν περιγραφέα της βάσεως (περιγραφέας αρχείου) σε περίπτωση επιτυχίας. Σε περίπτωση αποτυχίας επιστρέφει FALSE. Τα ορίσματα έχουν την ακόλουθη σημασία 1. IP Είναι η διεύθυνση του μηχανήματος στην οποίο τρέχει ο εξυπηρέτης της MySQL. Για παράδειγμα σε αυτό μπορούμε να δώσουμε τιμές όπως , localhost, pegasus.cs.uoi.gr κτλ. Όταν ο εξυπηρέτης είναι στο ίδιο μηχάνημα με το κώδικα, τότε μπορούμε να βάλουμε την τιμή localhost. 2. username Είναι ο κώδικος με τον οποίο θα συνδεθούμε στην βάση του απομακρυσμένου μηχανήματος. Αν η βάση δεδομένων βρίσκεται στον ίδιο υπολογιστή με τον κώδικα βάζουμε το username που έχουμε σε αυτό το μηχάνημα. 3. password Είναι το συνθηματικό το οποίο αντιστοιχεί στον κωδικό συνδέσεως για την βάση του απομακρυσμένου μηχανήματος. Αν η βάση δεδομένων βρίσκεται στον ίδιο υπολογιστή βάζουμε δύο συνεχόμενα, δηλαδή το αφήνουμε κενό. Ένα παράδειγμα συνδέσεως παρατίθεται στην συνέχεια $link=mysql_connect("localhost","sheridan","") ; if(!$link) else echo ΛΑΘΟΣ ΣΤΗΝ ΣΥΝΔΕΣΗ<BR>; mysql_close($link); Η συνάρτηση mysql_close() κλείνει μία σύνδεση που έχει ανοίξει επιτυχώς προηγουμένως. Θα πρέπει να σημειωθεί πάντως πως ακόμα και με την mysql_connect() δεν επιτυγχάνουμε σύνδεση με συγκεκριμένη βάση δεδομένων παρά μόνον σύνδεση με τον εξυπηρέτη. Για να συνδεθούμε με συγκεκριμένη βάση δεδομένων και να μπορέσουμε να εκτελέσουμε ερωτήματα πρέπει να χρησιμοποιήσουμε την συνάρτηση mysql_select_db(database). Η παράμετρος database επιλέγει την βάση δεδομένων με την οποία επιθυμούμε να εργαστούμε. Αν ο δεν έχουμε φτιάξει κάποια συγκεκριμένη βάση, τότε απλά μπορούμε να βάλουμε την default βάση test. ΣΕΛΙΔΑ 32/43

33 3.4.3 Δημιουργία βάσεων Όπως είπαμε πριν αν δεν έχουμε κάποια βάση να συνδεθούμε, τότε απλά μπορούμε να χρησιμοποιήσουμε την προκαθορισμένη βάση test. Ωστόσο η δημιουργία βάσεων είναι σχετικά απλή ακόμα και μέσα από php. Αυτό γίνεται με την συνάρτηση mysql_create_db( name,$link) Αυτή η συνάρτηση δημιουργεί την βάση name. Σε περίπτωση επιτυχίας επιστρέφει TRUE και σε περίπτωση αποτυχίας επιστρέφει FALSE. Το δεύτερο όρισμα είναι ο περιγραφέας που έχουμε πάρει με την σύνδεση προηγουμένως. Από την άλλη αν θέλουμε να διαγράψουμε μία βάση δεδομένων θα πρέπει να χρησιμοποιήσουμε την συνάρτηση mysql_drop_db(database,$link) η οποία έχει παρόμοια στην σημασία ορίσματα με την προηγούμενη συνάρτηση. Ωστόσο πρέπει να επισημανθεί πως η δημιουργία και η διαγραφή βάσεων δεδομένων εξαρτάται από τον διαχειριστή της βάσεως δεδομένων στην οποία συνδεόμαστε και από τα δικαιώματα που έχουμε επί των βάσεων δεδομένων που προσπαθούμε να δημιουργήσουμε ή/και να διαγράψουμε Ανάκτηση πλειάδων Η βασικότερη συνάρτηση που θα δούμε είναι η mysql_query(query,link). Το πρώτο όρισμα είναι το ερώτημα σε μορφή αλφαριθμητικού που θέλουμε να εκτελέσουμε και το δεύτερο όρισμα είναι ο περιγραφέας της βάσεως δεδομένων που έχουμε ανοίξει. Το αποτέλεσμα αυτής της συναρτήσεως αν είναι FALSE, σημαίνει πως το ερώτημα απέτυχε. Οι λόγοι αποτυχίας μπορεί να έχουν να κάνουν είτε με την σύνταξη του ερωτήματος είτε με δικαιώματα που υπάρχουν επί της βάσεως δεδομένων που θέλουμε. Το επόμενο απλό παράδειγμα δείχνει πως μπορούμε να εκτελέσουμε ερώτημα επιλογής σε μία βάση δεδομένων: <html> <head> </head> <body> <TITLE> ΔΟΚΙΜΗ </TITLE> $link=mysql_connect("localhost","sheridan",""); if(!$link) echo "ΛΑΘΟΣ ΣΤΗΝ ΣΥΝΔΕΣΗ<BR>"; mysql_select_db("test",$link); $result=mysql_query("select * from test",$link); ΣΕΛΙΔΑ 33/43

34 </html> if(!$result) </body> echo "ΛΑΘΟΣ ΣΤΟ ΕΡΩΤΗΜΑ"; mysql_close($link); Στο παραπάνω παράδειγμα έχω φτιάξει στην βάση δεδομένων test έναν πίνακα με τα πεδία name, job, code. Τα δύο πρώτα είναι αλφαριθμητικά και το τρίτο είναι ακέραιος και είναι το κλειδί της βάσεως. Αν και το παραπάνω παράδειγμα είναι επιτυχές δεν εμφανίζει κάτι στην οθόνη. Η βάση μου έχει αρκετές γραμμές αλλά καμία δεν εμφανίζεται επί της οθόνης. Αυτό γίνεται γιατί με το που εκτελείται ένα ερώτημα τα αποτελέσματα αποθηκεύονται σε δυαδική μορφή στην μεταβλητή που ανατίθεται το ερώτημα, στην παραπάνω περίπτωση στην μεταβλητή $result. Για να μπορέσουμε λοιπόν να ανακτήσουμε αυτές τις πλειάδες θα πρέπει να επεξεργαστούμε τα δεδομένα στο $result με την συνάρτηση myql_fetch_array() που αναλαμβάνει να φέρει μία προς μία τις όποιες γραμμές υπάρχουν σε αυτόν τον πίνακα. Το επόμενο παράδειγμα ολοκληρώνει αυτό που είδαμε προηγουμένως: <html> <head> </head> <body> <TITLE> ΔΟΚΙΜΗ </TITLE> $link=mysql_connect("localhost","sheridan",""); if(!$link) echo "ΛΑΘΟΣ ΣΤΗΝ ΣΥΝΔΕΣΗ<BR>"; mysql_select_db("test",$link); $result=mysql_query("select * from test",$link); if(!$result) echo "ΛΑΘΟΣ ΣΤΟ ΕΡΩΤΗΜΑ"; ΣΕΛΙΔΑ 34/43

35 echo "<table border=1>"; while($row=mysql_fetch_array($result)) echo "<tr>"; foreach($row as $v) echo </tr> ; echo </table> ; mysql_close($link); </body> </html> echo "<td> $v </td>"; Η mysql_fetch_array() αναλαμβάνει να σπάσει το $result σε γραμμές. Κάθε κλήση σε αυτήν λαμβάνει την επόμενη γραμμή. Το αποτέλεσμα της συναρτήσεως είναι ένας πίνακας με μήκος ίσο με το πλήθος των στοιχείων κάθε πλειάδας. Αυτό σημαίνει πως μπορούμε να ταξινομήσουμε τον πίνακα ή να το επεξεργαστούμε με κάποια από τις συναρτήσεις που έχουμε δει σε προηγούμενη ενότητα για τον χειρισμό πινάκων. Το παραπάνω παράδειγμα δεν είναι πλήρες. Μπορεί να τυπώνει στην οθόνη τα πεδία ενός πίνακα αλλά δεν τυπώνει τα ονόματα των πεδίων. Έτσι αν δεν ξέρουμε την δομή ενός πίνακα δεν θα μπορέσουμε να καταλάβουμε τι παριστάνει κάθε στήλη. Για αυτόν τον λόγο υπάρχει η συνάρτηση $fields=mysql_list_fields(database,table,link) Το πρώτο όρισμα είναι το όνομα της βάσεως για την οποία ενδιαφερόμαστε. Το δεύτερο όρισμα είναι το όνομα του πίνακα και το τρίτο όρισμα είναι ο περιγραφέας της βάσεως δεδομένων. Το αποτέλεσμα είτε θα είναι FALSE αν υπάρχει κάποιο σφάλμα (ανύπαρκτος πίνακας) είτε θα είναι μία λίστα με τα ονόματα των πεδίων του πίνακα. Για να ξέρουμε πόσα πεδία έχει ένας πίνακας αρκεί να καλέσουμε την συνάρτηση: $columns=mysql_num_fields($fields) Η συνάρτηση αυτή θα επιστρέψει το πλήθος των στηλών που υπάρχουν στην λίστα $fields. Η λίστα $fields προήλθε από την mysql_list_fields(). Στην συνέχεια με την συνάρτηση $fieldname=mysql_field_name($fields,pos) λαμβάνουμε το όνομα του πεδίου, σαν αλφαριθμητικό πλέον, από την λίστα ΣΕΛΙΔΑ 35/43

36 fields στην θέση pos. Το αρχικό μας παράδειγμα ολοκληρωμένο τώρα και με ονόματα πεδίων έχει ως ακολούθως: <html> <head> </head> <body> <TITLE> ΔΟΚΙΜΗ </TITLE> $link=mysql_connect("localhost","sheridan",""); if(!$link) echo "ΛΑΘΟΣ ΣΤΗΝ ΣΥΝΔΕΣΗ<BR>"; mysql_select_db("test",$link); $result=mysql_query("select * from test",$link); if(!$result) echo "ΛΑΘΟΣ ΣΤΟ ΕΡΩΤΗΜΑ"; $fields=mysql_list_fields( test, test,$link) echo "<table border=1>"; echo "<tr>"; for($i=0;$i<$columns;$i++) echo "<td>"; echo mysql_field_name($fields,$i); echo "</td>"; echo "</tr>"; while($row=mysql_fetch_array($result)) echo "<tr>"; foreach($row as $v) ΣΕΛΙΔΑ 36/43

37 echo </tr> ; echo </table> ; mysql_close($link); </body> </html> Εισαγωγή πλειάδων echo "<td> $v </td>"; Ένα άλλο σημαντικό ζήτημα που έχουμε στις βάσεις δεδομένων και στο ηλεκτρονικό εμπόριο είναι η εισαγωγή νέων εγγραφών σε μία βάση δεδομένων ή η ενημέρωση παλαιών. Με την PHP κάτι τέτοιο είναι αρκετά απλό αρκεί να γνωρίζουμε MySQL. Στην MySQL για να ενημερώσουμε έναν πίνακα σε μία βάση δεδομένων γράφουμε INSERT INTO TABLENAME(field1,field2,...) VALUES(val1,val1,val3); Με τον όρο TABLENAME εννοούμε το όνομα του πίνακα. Field1, field2 κτλ είναι τα ονόματα των πεδίων στον πίνακα στα οποία κάνουμε εισαγωγή. Για το παράδειγμα του πίνακα test που είδαμε παραπάνω μπορούμε να φτιάξουμε την επόμενη σελίδα. Στην πρώτη δίνονται τρία πεδία: όνομα, εργασία και κωδικός και στην δεύτερη αυτά τα στοιχεία εισάγονται στην βάση δεδομένων και εμφανίζονται πλέον όλα μαζί στην οθόνη μας. Η πρώτη σελίδα έχει ως ακολούθως: <html> <body> <head> </head> <title> ΔΕΥΤΕΡΗ ΣΕΛΙΔΑ </title> <form method="post" action="page2.php"> ONOMA:<input type="text" name="name"> <br> ERGASIA:<input type="text" name="job"> <br> CODIKOS:<input type="text" name="code"> <br> <input type="submit" value="ok"> ΣΕΛΙΔΑ 37/43

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

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

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

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) Γιάννης Σαμωνάκης 1 Περιεχόμενα Τι είναι η PHP Που μπορεί να χρησιμοποιηθεί

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

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου ΕΣΔ 516 Τεχνολογίες Διαδικτύου Εισαγωγή στην PHP Περιεχόμενα Περιεχόμενα PHP και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις Παράδειγματα 1 Βιβλιογραφία Ενότητας Βιβλιογραφία [Lane 2004]: Chapter

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

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών PHP 1 Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

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

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~ Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~ Στελιος Σφακιανάκης Εαρινό 2019 Αυτή η εργασία χορηγείται με άδεια Creative Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 1 Server-side programming

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

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

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

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σύντομες εισαγωγικές σημειώσεις για την. Matlab Σύντομες εισαγωγικές σημειώσεις για την Matlab Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και

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

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

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

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

databases linux - terminal (linux / windows terminal)

databases linux - terminal (linux / windows terminal) databases linux - terminal (linux / windows terminal) 1) ανοίγουμε την mysql -> $ mysql -u root -p (enter) password (enter) TIP: αν κατά την εντολή αυτή μας γράψει, ERROR 2002 (HY000): Can't connect to

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

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

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

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

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

Σχεδίαση Βάσεων Δεδομένων Οδηγίες Μέρος 1: Απαντήστε κάθε ερώτηση. 1. Ποια είναι τα πλεονεκτήματα που παρέχει το Περιβάλλον Βάσεων Δεδομένων της Oracle για τις επιχειρήσεις; Το σύστημα διαχείρισης βάσεων δεδομένων της Oracle δίνει

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

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας Εισαγωγή στην PHP Περιεχόμενα Περιεχόμενα PHP και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις Παράδειγματα 1 Βιβλιογραφία Ενότητας Βιβλιογραφία

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

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ Η συνθήκη WHERE βάζει περιορισμούς στις εγγραφές που επιστρέφονται. Ο όρος ORDER BY ταξινομεί τις εγγραφές που επιστρέφονται. Παράδειγμα: SELECT * FROM table_name ORDER

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ Εισαγωγή στη MySQL Νικόλαος Ζ. Ζάχαρης Τι είναι η MySql Είναι ένα Σχεσιακό Σύστημα Διαχείρισης

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

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

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

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

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 5 η Έλεγχος Προγράμματος Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος Προγραμματισμός ΗΥ και Υπολογιστική Φυσική Χρήστος Γκουμόπουλος Προγραμματισμός ΗΥ και Υπολογιστική Φυσική Χρήστος Γκουμόπουλος Προγραμματισμός ΗΥ και Υπολογιστική Φυσική Χρήστος Γκουμόπουλος Προγραμματισμός

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

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

ΕΠΛ 012. JavaScripts

ΕΠΛ 012. JavaScripts ΕΠΛ 012 JavaScripts Γλώσσα JavaScript (JS) ηµιουργεί δυναµικές ιστοσελίδες και αλληλεπιδράσεις µε το χρήστη εν είναι Java, αλλά είναι αντικειµενοστραφής (απλό µοντέλο υποκειµένων) Objects, properties (τιµές

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

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

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

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

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

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

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

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

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

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

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

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές Εργαστήριο Βάσεων Δεδομένων Δικαιώματα Χρηστών Προβολές Επικοινωνία με MySQL mysql host DB server queries results Client host Β Δ Η χρήση της mysql βασίζεται στο μοντέλο client server Remote access to

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Η C, όπως έχουμε αναφέρει, είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε για πρώτη φορά το 1972 από τον Dennis Ritchie στα AT&T Bell

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

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

Σχεδιασμός Βάσεων Δεδομένων

Σχεδιασμός Βάσεων Δεδομένων Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Σχεδιασμός Βάσεων Δεδομένων Εργαστήριο 4 Δρ. Βασιλική Κούφη Περιεχόμενα Υλοποίηση Βάσεως Δεδομένων Εκτέλεση ερωτημάτων SQL στην Βάση Δεδομένων BHMA 1. Σχεδιασμός

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

Τμήμα Διοίκησης Επιχειρήσεων

Τμήμα Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων «Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα» «Σημειώσεις για την SQL» ΕΞΑΜΗΝΟ: ΣΤ Δρ. Κωνσταντίνος Χ. Γιωτόπουλος Πάτρα, Νοέμβριος 2010 SQL Create Table Η CREATE TABLE

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

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών JAVASCRIPT 1 Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

FAIL PASS PASS οριακά

FAIL PASS PASS οριακά AEM 0001 0002 COMMENTS οριακά -Το πρόγραµµά σου δουλεύει λάθος για τις εισόδους: 7 -Δεν έχεις µεριµνήσει για την περίπτωση step=1. Μπορούσες να θεωρήσεις ειδική περίπτωση και να την υλοποιείς σε άλλον

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

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

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

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

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures): 9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers Σκοπός της παρούσας εργαστηριακής άσκησης, είναι η εξοικείωση του σπουδαστή με τη δημιουργία αποθηκευμένων διαδικασιών (Stored Procedures) και σκανδάλης

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

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

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

Pascal. 15 Νοεμβρίου 2011

Pascal. 15 Νοεμβρίου 2011 Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

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

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY Mία γλώσσα προγραμματισμού συνίσταται από ένα περιορισμένο υποσύνολο της αγγλικής γλώσσας και το οποίο αποτελείται από εκφράσεις σαφώς ορισμένες, χωρίς παρερμηνεία.

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

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 5 ο Έλεγχος Προγράµµατος Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Η εντολή if (Ι) Η εντολή if είναι µία από τις βασικότερες δοµές ελέγχου ροής στη C, αλλά και στις περισσότερες

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

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

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Σκοπός της 1ης άσκησης είναι η εξοικείωση με τη γλώσσα προγραμματισμού Python, την οποία και θα χρησιμοποιήσουμε και στις υπόλοιπες εργαστηριακές ασκήσεις.

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 6 η Βρόχοι Επανάληψης Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση Βάσεις Δεδομένων 2η εργαστηριακή άσκηση Εισαγωγή στο περιβάλλον της oracle Δημιουργία πινάκων Δρ. Εύη Φαλιάγκα 1. Login Χρησιμοποιώντας έναν web explorer, μπαίνετε στο http://10.0.0.6:8080/apex και συμπληρώνετε

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

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου Σκοπός και περίγραμμα της Ενότητας 4 Σκοπός της παρουσίασης Να μελετήσουμε τις συναρτήσεις που ελέγχουν την ροή και την εκτέλεση ενός προγράμματος Σύνοψη

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Κανόνες

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τρίτη Διάλεξη Εντολές Επιλογής και Επανάληψης Εντολές επιλογής Εντολή if Η πιο απλή μορφή της if συντάσσεται ως εξής: if ( συνθήκη ) Οι εντολές μέσα στα άγκιστρα αποτελούν

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

PHP/MySQL και Project

PHP/MySQL και Project PHP/MySQL και Project Μια απλή διαδικτυακή εφαρμογή Γεώργιος Ευαγγελίδης Τμήμα Εφαρμοσμένης Πληροφορικής Σχολή Επιστημών Πληροφορίας Πανεπιστήμιο Μακεδονίας Περιεχόμενα PHP (Middle tier) Διαδικτυακές εφαρμογές

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

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Τμημα Πληροφορικης και Τηλεματικης Τσάμη Παναγιώτα ΑΜ: 20833 ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Άσκηση 1 Αθήνα 13-12-2011 Αναφορά Ενότητα 1 A Δημιουργήστε στο φλοιό 3 εντολές (alias) που η

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

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο

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

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

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

Τμήμα Πληροφορικής ΑΠΘ

Τμήμα Πληροφορικής ΑΠΘ Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 2 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: Η μελέτη ερωτημάτων σε μία μόνο σχέση. Εξετάζουμε τους τελεστές επιλογής

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

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

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

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

Εντολές ελέγχου ροής if, for, while, do-while

Εντολές ελέγχου ροής if, for, while, do-while Εντολές ελέγχου ροής if, for, while, do-while 1 Μαρτίου 014 1 Εντολές εκτέλεσης υπό συνθήκη Μπορούμε να εκτελέσουμε εντολές της γλώσσας σε περίπτωση που κάποια συνθήκη ισχύει χρησιμοποιώντας την εντολή

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

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα 3 Φύλλο Εργασίας 3 Στο φύλλο εργασιών 3 θα ασχοληθούμε με τις λίστες μια δομή της γλώσσας python που έχει την δομή ενός πίνακα. Θα χρησιμοποιήσουμε τις βασικές εντολές από τις λίστες και θα κατασκευάσουμε

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης Εντολές Ελέγχου 2 Γενικά Εντολές λήψης αποφάσεων Επιτρέπουν στο πρόγραμμα να εκτελεί διαφορετικές

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά 2008-2009

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά 2008-2009 ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά 2008-2009 ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ 2009 ΜΑΘΗΜΑ: ΠΛΗΡΟΦΟΡΙΚΗ ΤΑΞΗ : Β ΗΜΕΡΟΜΗΝΙΑ: Τετάρτη, 3 Ιουνίου 2009 ΩΡΑ: 07:45 10:15 ΟΔΗΓΙΕΣ: Το εξεταστικό δοκίμιο αυτό αποτελείται

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

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML. Κεφάλαιο 5 Η γλώσσα SQL 5.1 Εισαγωγή Η γλώσσα SQL (Structured Query Language) είναι η πιο διαδεδομένη διαλογική γλώσσα ερωταπαντήσεων που χρησιμοποιείται για την επικοινωνία του χρήστη με σχεσιακές ΒΔ.

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

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

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

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης Γ7.1 Επανάληψη ύλης Β Λυκείου Γ Λυκείου Κατεύθυνσης Απλά προγράμματα Ένα πρόγραμμα στη C++ που υπολογίζει το άθροισμα 2 ακέραιων αριθμών. // simple program #include using namespace std; int main(){

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

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

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

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Triggers, Stored procedures Γιώργος Μαρκοµανώλης Περιεχόµενα Triggers-Ενηµέρωση δεδοµένων άλλων πινάκων... 1 Ασφάλεια...

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

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος...

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος... Περιεχόμενα Πρόλογος...11 Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών... 13 1.1 Εισαγωγή στους υπολογιστές... 15 1.2 Μονάδες μέτρησης... 27 1.3 Οι βασικές λειτουργίες ενός ηλεκτρονικού υπολογιστή...

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

Υπολογισμός - Εντολές Επανάληψης

Υπολογισμός - Εντολές Επανάληψης Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

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

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

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