Ασκήσεις Ηλεκτρονικού Εμπορίου Ιωάννης Γ. Τσούλος



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

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

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

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

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

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

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

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

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

1. (25%) Αναφέρετε πέντε (5) «καλoύς» κανόνες (πρακτικές) σχεδίασης web sites (όχι περισσότερες από δύο γραμμές για κάθε κανόνα)

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

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

Προγραμματιστικό Περιβάλλον

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

Hyper Text Markup Language (HTML) που σημαίνει γλώσσα σήμανσης υπερκειμένου.

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

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

Εισαγωγη στην html. Η δομή μιας ιστοσελίδας (αρχείο html) Η βασική δομή ενός αρχείου html είναι η εξής: <html> <head>

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ ΥΠΟΛΕΙΠΟΜΕΝΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

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

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

Java & Java EE 3o Μέρος: Διασφάλιση ασφάλειας σε εφαρμογές Java Enterprise Edition. Κακαρόντζας Γεώργιος

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ

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

Επαναληπτική Άσκηση ΕΤΙΚΕΤΕΣ HTML

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

Γλώσσα Προγραμματισμού C

Τεχνολογίες Διαδικτύου (Εξασκηθείτε στην HTML)

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

C: Από τη Θεωρία στην Εφαρμογή

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

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

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

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

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

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

Ετικέτες HTML. <!-->: Τα σχόλια χρησιμοποιούνται για να γράφουμε σημειώσεις μέσα στον

Browsers. Λειτουργικότητα και Παραμετροποίηση

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

XAMPP Apache MySQL PHP javascript xampp

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

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

<HTML> <HEAD> <TITLE> <BODY>

Οδηγίες Χρήσης της MySQL

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

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή.

Περιεχόμενα. Πρόλογος...11

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

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

Οδηγίες για smartphone ή tablet με λογισμικό ios

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

Τα προγράμματα σε ASP που χρησιμοποιήθηκαν για την υλοποίηση της διαχείρισης των μαθημάτων.

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

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

Γνωρίστε το Excel 2007

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

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

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

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

Εργαστήριο «Βάσεις Οικολογικών Δεδομένων και Εφαρμογές»

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Παιχνίδια σε Javascript

ΤΕΙ Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών. Επώνυμο Όνομα: Α.Μ. : Εξάμηνο : Αίθουσα

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

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

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

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

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ. Πρόσβαση στην Καταγραφή και Εγχειρίδιο Χρήσης Εφαρµογών για ιευθύνσεις και Γραφεία Εκπαίδευσης

Τυπικές χρήσεις της Matlab

Τεχνολογίες Διαδικτύου - Εργαστήριο 1 ο

ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΠΤΑ (7)

Java & Java EE 1o Μέρος: Servlets και Java Server Pages. Κακαρόντζας Γεώργιος

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

Οδηγίες Χρήσης της MySQL

Transcript:

1. HTML Ασκήσεις Ηλεκτρονικού Εμπορίου Ιωάννης Γ. Τσούλος Σε αυτό το κεφάλαιο παρουσιάζονται τα βασικά στοιχεία από την HTML προκειμένου να αποτελέσουν μία καλή εισαγωγή για την συνέχεια όπου θα δούμε παραδείγματα σε PHP. 1.1 Παραδείγματα Παράδειγμα 1 Να γραφεί μία σελίδα η οποία θα εμφανίζει τρεις τίτλους ταινιών με επικεφαλίδες επιπέδου 1 και κάτω από τις επικεφαλίδες σύντομες πληροφορίες για κάθε ταινία. Η σελίδα που κάνει τα παραπάνω για τρεις ενδεικτικές ταινίες είναι η επόμενη: Παράδειγμα 1 <h1 align=center> </h1> <i> </i> XMEN <h1 align=center> </h1> Μία ταινία που αποτελεί μεταφορά του ομώνυμου κόμικ στην μεγάλη οθόνη. MATRIX <i> Μία ταινία που προβάλλει το ερώτημα αν πραγματικά ζούμε στον κόσμο που βλέπουμε γύρω μας. </i> ΣΕΛΙΔΑ 1/77

</body> <h1 align=center> STAR TROOPERS </h1> <i> Σε ένα σκληρό μέλλον το μόνο που σου μένει να κάνεις όταν όλα γύρω σου χάνονται είναι να αγωνιστείς. </i> Η επόμενη οθόνη μας δείχνει πως θα εμφανιστεί το παραπάνω κείμενο. Για τα παραδείγματα αυτού του κειμένου χρησιμοποιήθηκε ο Web Browser Konqueror σε ένα Mandrake Linux 9.1 αλλά η οπτική απόδοση του κειμένου θα πρέπει να είναι η ίδια σε όλους τους σύγχρονους browsers. Παράδειγμα 2 Μία εταιρεία αγόρασε 5 CPU προς με ΕΥΡΩ το τεμάχια, 2 PRINTERS με 130 ΕΥΡΩ το τεμάχιο και 5 οθόνες προς 200 ΕΥΡΩ το τεμάχιο. Εμφανίστε την ΣΕΛΙΔΑ 2/77

παραπάνω πληροφορία σε μορφή πίνακα της HTML. Η επόμενη σελίδα εκτελεί την παραπάνω εργασία Παράδειγμα 2 <table border=1> <th> ΠΡΟΪΟΝ </th> <th> ΚΟΣΤΟΣ ΤΕΜΑΧΙΟΥ </th> <th> ΤΕΜΑΧΙΑ </th> <tr> <td>cpu</td> <td>800</td> <td>5</td> </tr> <tr> <td>printer</td> <td>130</td> <td>2</td> </tr> <tr> <td>monitor</td> <td>200</td> <td>5</td> </tr> ΣΕΛΙΔΑ 3/77

</table> </body> Το παραπάνω παράδειγμα δίνει την επόμενη οπτική απεικόνιση: Παράδειγμα 3 Φτιάξτε μία σελίδα η οποία θα διαθέτει ένα link σε μία δεύτερη σελίδα, ένα link σε ένα αρχείο κειμένου και ένα link εικόνας σε μία τρίτη σελίδα. Η σελίδα για την παραπάνω άσκηση είναι η επόμενη: Παράδειγμα 3 ΣΕΛΙΔΑ 4/77

Πρώτος δεσμός:<a href="ex1.html">πατήστε εδώ για να πάτε στην σελίδα ex1.html</a><br> Δεύτερος δεσμός:<a href="test.txt"> Πατήστε εδώ για να δείτε ή να κατεβάσετε το test.txt</a><br> Τρίτος δεσμός:<a href="ex2.html"> <img src="home.png"> </a> </body> Το απεικόνισμα εξόδου για την παραπάνω σελίδα είναι το επόμενο: Το παραπάνω παράδειγμα μπορούμε να το φέρουμε σε καλύτερη μορφή αν χρησιμοποιήσουμε αριθμημένες λίστες όπως φαίνεται από τον επόμενο κώδικα: ΣΕΛΙΔΑ 5/77

</ol> </body> Παράδειγμα 3 <ol> <li>πρώτος δεσμός:<a href="ex1.html"> Πατήστε εδώ για να πάτε στην σελίδα ex1.html</a> </li> <li>δεύτερος δεσμός:<a href="test.txt"> Πατήστε εδώ για να δείτε ή να κατεβάσετε το test.txt</a> </li> <li>τρίτος δεσμός:<a href="ex2.html"> <img src="home.png"> </li> </a> 1.2 Ερωτήσεις 1. Τι σημαίνουν τα αρχικά HTTP; 2. Τι σημαίνουν τα αρχικά HTML; 3. Για ποιους λόγους πιστεύετε πως αναπτύχθηκε τόσο ευρύτατα το πρότυπο της HTML; 4. Αναφέρατε περιπτώσεις όπου μπορούμε να χρησιμοποιήσουμε HTML σελίδες; 5. Χρειαζόμαστε σύνδεση στο INTERNET για να δούμε τα αποτελέσματα μίας σελίδας HTML; 6. Σε ποιες περιπτώσεις δεν είναι αποδοτική η χρήση HTML σελίδων; 7. Τι είδους πληροφορία μπορούν να περιγράψουν οι πίνακες της HTML; 8. Αν χρειάζεται να αλλάξουμε κάποια στοιχεία ενός πίνακα HTML αυτό μπορεί να γίνει; ΣΕΛΙΔΑ 6/77

9. Ποια είναι η πρακτική χρησιμότητα των frames; 10.Τι είδους προγράμματα μπορούν να διαβάσουν (υποδεκτούν) τα δεδομένα από μία φόρμα της HTML; 1.3 Πολλαπλής επιλογής Ερώτηση 1 Ποια σειρά εντολών από τις επόμενες βάζει σε έντονα και πλάγια γράμματα την λέξη HTML; a) <b><u> HTML </u></b> b) <i> HTML </i> c) <b> <i> HTML </i></b> Ερώτηση 2 Ποια σειρά εντολών από τις επόμενες εμφανίζει τις λέξεις HTML και PHP στο κέντρο και κάθε λέξη σε διαφορετική γραμμή; a) <center> HTML PHP </center> b) <center> HTML<br>PHP </center> c) <center> <b>html</b> <i>php</i> ΣΕΛΙΔΑ 7/77

</center> Ερώτηση 3 Ποιο από τα επόμενα δεν είναι tag της HTML; a) <a></a> b) <bold></bold> c) <u></u> Ερώτηση 4 Με ποια σειρά εντολών από τις επόμενες εισάγουμε μία γραμμή κειμένου σε έναν πίνακα με τα στοιχεία α1 β1 γ1; a) <table> α1 β1 γ1 </table> b) <tr> <td> α1 β1 γ1 </td> </tr> c) <tr> <td>α1</td> <td>β1</td> <td>γ1</td> </tr> Ερώτηση 5 Ποια από τις επόμενες εκφράσεις θα εμφανίσει το κείμενο x 2 ; a) x<sup>20</sup> b) x<b>2</b> c) x<sup>2</sup> ΣΕΛΙΔΑ 8/77

1.4 Ασκήσεις 1. Να γραφεί μία σελίδα σε HTML η οποία θα έχει δύο παραγράφους με επικεφαλίδες ΚΕΙΜΕΝΟ1 και ΚΕΙΜΕΝΟ2. 2. Να γραφεί μία σελίδα σε HTML η οποία θα εμφανίζει σε ένα πίνακα χωρίς περιγράμματα ονόματα, επίθετα και τηλέφωνα 5 φίλων σας. 3. Να γραφεί μία σελίδα σε HTML η οποία θα περιέχει στην πρώτη στήλη ενός πίνακα 4 μικρές εικόνες και στην δεύτερη στήλη μία σύντομη περιγραφή της εικόνας που υπάρχει στην πρώτη στήλη. 4. Να γραφεί μία σελίδα σε HTML η οποία θα περιέχει 3 frames. Σε κάθε σελίδα frame θα υπάρχει ένα μήνυμα σε έντονα γράμματα το οποία θα γράφει απλά τον τίτλο του frame. ΣΕΛΙΔΑ 9/77

2. Βασικά στοιχεία PHP Στο κεφάλαιο αυτό παρουσιάζονται τα βασικά στοιχεία του συντακτικού της γλώσσας PHP από τις δομές δεδομένων μέχρι τις συναρτήσεις. Σκοπός του κεφαλαίου αυτού είναι να δώσει στον αναγνώστη τις γενικές αρχές που χρειάζονται ώστε να εξοικειωθεί με την γλώσσα προγραμματισμού PHP. 2.1 Παραδείγματα Παράδειγμα 1 Να γραφεί ένα πρόγραμμα σε PHP το οποίο θα εμφανίζει στο κέντρο μήνυμα ΚΑΛΩΣΗΡΘΑΤΕ ΣΤΗΝ PHP 5 φορές. Το σενάριο που κάνει την παραπάνω εργασία παρουσιάζεται στην συνέχεια: PHP1 <? echo "<center>"; for($i=0;$i<10;$i++) echo "ΚΑΛΩΣΗΡΘΑΤΕ ΣΤΗΝ PHP<br>"; echo "</center>";?> </body> το Παράδειγμα 2 Να γραφεί μία φόρμα σε HTML με δύο πλαίσια κειμένου με τα συμβολικά ονόματα text1 και text2 και ένα πλήκτρο πιέσεως submit το οποίο θα ενεργοποιεί μία σελίδα σε PHP η οποία θα εμφανίζει τις τιμές των πλαισίων κειμένου με πλάγια γράμματα. Η φόρμα που ενεργοποιεί την PHP σελίδα παρουσιάζεται στην συνέχεια: ΣΕΛΙΔΑ 10/77

</body> Φόρμα <form method="post" action="ex5.php"> Κείμενο1:<input type="text" name="text1"><br> Κείμενο2:<input type="text" name="text2"><br> <input type="submit" value="ok"> </form> Η σελίδα PHP για αυτήν την φόρμα είναι η επόμενη: </body> PHP <??> $text1=$_post['text1']; $text2=$_post['text2']; echo "<i>"; echo "text1=$text1<br>"; echo "text2=$text2<br>"; echo "</i>"; Εναλλακτικά κάποιος θα μπορούσε να γράψει τον κώδικα php αλλά και την φόρμα στην ίδια σελίδα. Σε αυτήν την περίπτωση θα είχαμε μία σελίδα PHP σαν και την επόμενη: ΣΕΛΙΔΑ 11/77

</body> PHP and HTML TOGETHER <? if(!isset($first))?> <form method="post" action="<? echo $SCRIPT_NAME;?>?first=1"> ΚΕΙΜΕΝΟ1:<input type="text" name="text1"><br> ΚΕΙΜΕΝΟ2:<input type="text" name="text2"><br> <input type="submit" value="ok"> </form> <? else?> echo "<i>"; $text1=$_post['text1']; $text2=$_post['text2']; echo "text1=$text1<br>"; echo "text2=$text2<br>"; echo "</i>"; Στην παραπάνω σελίδα για να καταλάβουμε αν εκτελείται το σενάριο PHP ή η φόρμα χρησιμοποιούμε μία μεταβλητή first. Αν αυτή έχει τεθεί σε κάποια τιμή (που δεν μας ενδιαφέρει) τότε ξέρουμε πως εκτελείται το σενάριο. Διαφορετικά εμφανίζουμε την φόρμα. Προσοχή πρέπει να δοθεί στο γεγονός πως γίνεται ανάμειξη κώδικα HTML και PHP χωρίς κάποιο πρόβλημα απλά διακόπτοντας τα TAG της PHP και επιστρέφοντας σε κατάσταση HTML. Επίσης πρέπει να δοθεί προσοχή στο γεγονός πως επειδή δεν ξέρουμε το όνομα που έχει το ΣΕΛΙΔΑ 12/77

εκτελούμενο σενάριο απλά χρησιμοποιούμε την καθολική μεταβλητή $SCRIPT_NAME στο πεδίο action της φόρμας. Παράδειγμα 3 Να γραφεί μία φόρμα η οποία θα δέχεται από τον χρήστη ένα όνομα, ένα επίθετο και έναν αριθμητικό κωδικό. Αν κάποιο από τα πεδία δεν συμπληρωθεί από τον χρήστη τότε θα πρέπει να επανεμφανίζεται η φόρμα με ένα κόκκινο μήνυμα που να γράφει ποια πεδία πρέπει να συμπληρωθούν. Η φόρμα ενεργοποιεί μία σελίδα PHP που εκτυπώνει τα πεδία της φόρμας. Το σενάριο που εκτελεί την παραπάνω εργασία είναι το επόμενο: <? FORM $name=$_post['name']; $lastname=$_post['lastname']; $number=$_post['number']; if(isset($inscript) && ($name=="" $lastname=="" $number=="")) $flag=0; echo "<font color=red>"; echo "ΛΑΘΟΣ ΣΤΗΝ ΠΛΗΚΤΡΟΛΟΓΗΣΗ<br>"; echo "ΠΡΕΠΕΙ ΝΑ ΓΕΜΙΣΕΤΕ ΤΑ ΠΕΔΙΑ "; if($name=="") $flag=1; echo "ΟΝΟΜΑ "; if($lastname=="") if($flag==1) echo " ΚΑΙ "; ΣΕΛΙΔΑ 13/77

echo "ΕΠΙΘΕΤΟ "; $flag=1; if($number=="") if($flag==1) echo " ΚΑΙ "; echo "ΚΩΔΙΚΟΣ "; echo "</font>"; echo "<br>"; else if(isset($inscript)) echo "ΟΝΟΜΑ=$name<br>"; echo "ΕΠΙΘΕΤΟ=$lastname<br>"; echo "ΚΩΔΙΚΟΣ=$number<br>"; if(!isset($inscript) isset($flag)) echo "ΔΗΜΙΟΥΡΓΙΑ ΦΟΡΜΑΣ<br>";?> <form method="post" action= "<? echo $SCRIPT_NAME;?>?inscript=1"> ΟΝΟΜΑ:<input type="text" value= "<? echo $name;?>" name="name"><br> ΕΠΙΘΕΤΟ:<input type="text" value= "<? echo $lastname;?>" name="lastname"><br> ΚΩΔΙΚΟΣ:<input type="text" value= "<? echo $number;?>" name="number"><br> <input type="submit" value="ok"> </form> <? ΣΕΛΙΔΑ 14/77

</body>?> Παράδειγμα 4 Σε ένα αρχείο PHP υπάρχουν οι μεταβλητές var1,var2, Ex1 και Ex2 με διάφορες τιμές. Να γραφεί μία φόρμα που θα έχει ένα πλαίσιο κειμένου και θα ενεργοποιεί το παραπάνω αρχείο και το οποίο θα εμφανίζει την τιμή της μεταβλητής που έχει όνομα ίδιο με αυτό που είναι η τιμή του πλαισίου κειμένου. Η φόρμα για το παραπάνω παράδειγμα είναι η επόμενη: </body> form <form method="post" action="ex8.php"> </form> Και η σελίδα PHP είναι η επόμενη: <? PHP ΜΕΤΑΒΛΗΤΗ:<input type="text" name="var"><br> <input type="submit" value="ok"> $var=$_post['var']; $var1=100; ΣΕΛΙΔΑ 15/77

</body>?> $var2=200; $Ex1=300; $Ex2=400; $variable=$$var; echo "variable value=$variable<br>"; Με το παραπάνω παράδειγμα βλέπουμε πως δεν χρειάζεται να ξέρουμε εκ των προτέρων το όνομα μίας μεταβλητής για να έχουμε πρόσβαση σε αυτήν. Επίσης ο τελεστής $ μπροστά από ένα αλφαριθμητικό το μετατρέπει σε μεταβλητή της PHP. Φυσικά αν θέλουμε μπορούμε να ελέγξουμε για την ύπαρξη της μεταβλητής πριν δοκιμάσουμε να την χρησιμοποιήσουμε. Σε αυτήν την περίπτωση ο κώδικας μετατρέπεται ως ακολούθως: </body> <??> PHP $var1=100; $var2=200; $Ex1=300; $Ex2=400; $var=$_post['var']; if(isset($$var)) else $variable=$$var; $variable="δεν ΒΡΕΘΗΚΕ ΤΙΜΗ"; echo "variable value=$variable<br>"; Με την χρήση της συναρτήσεως isset() εξετάζουμε αν υπάρχει μία μεταβλητή ΣΕΛΙΔΑ 16/77

στο σύστημα. Παράδειγμα 5 Να γραφεί μία φόρμα σε HTML η οποία να περιλαμβάνει μία λίστα με ΠΡΟΪΟΝΤΑ και μία λίστα με τις ενέργειες ΑΓΟΡΑ, ΚΟΣΤΟΣ και ΑΚΥΡΩΣΗ. Η φόρμα θα ενεργοποιεί μία σελίδα σε PHP η οποία: 1. Αν έχει επιλεγεί το ΑΓΟΡΑ θα καλεί μία συνάρτηση η οποία θα εμφανίζει σε ΜΠΛΕ γράμματα την φράση Αγορά του ΠΡΟΪΟΝ, όπου ΠΡΟΪΟΝ είναι το στοιχείο που έχουμε επιλέξει από την πρώτη λίστα. 2. Αν έχει επιλεγεί το ΚΟΣΤΟΣ θα καλεί μία συνάρτηση η οποία θα εμφανίζει σε πλάγια γράμματα το στοιχείο που έχει επιλεγεί από την πρώτη λίστα και ένα συμβολικό κόστος 3. Αν έχει επιλεγεί το ΑΚΥΡΩΣΗ θα καλεί μία συνάρτηση η οποία θα εμφανίζει σε έντονα γράμματα την φράση Ακύρωση αγοράς του ΠΡΟΪΟΝ, όπου ΠΡΟΪΟΝ είναι το στοιχείο της πρώτης λίστας. Η φόρμα για την παραπάνω εργασία είναι η επόμενη: FORM <form method="post" action="ex10.php"> ΠΡΟΪΟΝΤΑ: <select name="goods"> </select> <br> ΠΡΑΞΗ: <option>πορτοκαλια</option> <option>μηλα</option> <option>λεμονια</option> <select name="action"> </select> <option>αγορα</option> <option>κοστοσ</option> <option>ακυρωση</option> ΣΕΛΙΔΑ 17/77

<br> <input type="submit" value="ok"> </form> </body> Ο κώδικας PHP για αυτήν είναι: PHP <? function agora($item) echo "<font color=blue>"; echo "Αγορά του προϊόντος $item<br>"; echo "</font>"; function kostos($item) switch ($item) case "ΠΟΡΤΟΚΑΛΙΑ": $cost=30; break; case "ΛΕΜΟΝΙΑ": $cost=70; break; case "ΜΗΛΑ": $cost=150; break; ΣΕΛΙΔΑ 18/77

echo "<i>"; echo "Το $item κοστίζει $cost<br>"; echo "</i>"; function akyrosi($item) echo "<b>"; echo "Ακύρωση αγοράς $item<br>"; echo "</b>"; </body>?> $action = $_POST['action']; $goods = $_POST['goods']; switch($action) case "ΑΓΟΡΑ": agora($goods); break; case "ΚΟΣΤΟΣ": kostos($goods); break; case "ΑΚΥΡΩΣΗ": akyrosi($goods); break; Παράδειγμα 6 Να γραφεί συνάρτηση η οποία θα εκτυπώνει τον αριθμό των φορών που έχει κληθεί. Το σενάριο για την παραπάνω εργασία είναι το επόμενο: ΣΕΛΙΔΑ 19/77

PHP <? function showcalls() static $v=0; $v++; echo "I WAS CALLED $v times<br>"; </body>?> showcalls(); showcalls(); showcalls(); showcalls(); Η static μεταβλητή $v αρχικοποιήθηκε σε 0 και κάθε φορά που καλείται η συνάρτηση showcalls() αυξάνει κατά 1 και δείχνουμε το αποτέλεσμα στην οθόνη. 2.2 Ερωτήσεις 1. Τι σημαίνουν τα αρχικά PHP; 2. Ποιες είναι οι βασικές διαφορές μεταξύ PHP και ASP; 3. Ποιες είναι οι βασικές διαφορές μεταξύ PHP και JAVASCRIPT; 4. Σε ποιους Web Servers εκτελείται ένα αρχείο PHP; 5. Γιατί δεν μπορούμε να εκτελέσουμε ένα αρχείο PHP απλά ανοίγοντάς το με έναν διαχειριστή αρχείων όπως γίνεται με τις HTML σελίδες; 6. Πώς μπορούμε να έχουμε καθολικές μεταβλητές μεταξύ πολλών συναρτήσεων; ΣΕΛΙΔΑ 20/77

2.3 Πολλαπλής επιλογής Ερώτηση 1 Ποια σειρά εντολών από τις επόμενες εμφανίζει στο κέντρο και με έντονα γράμματα το περιεχόμενο της μεταβλητής x; a) echo <center><i> ; echo $x</i></center> ; b) echo <center> ; echo <b> ; echo x ; echo </b> ; echo </center> ; c) echo <center><b>$x</b></center> ; Ερώτηση 2 Ποια από τις επόμενες σειρές εντολών ορίζει μία συνάρτηση με ένα όρισμα το οποίο και εκτυπώνει με πλάγια γράμματα; a) function f($a) echo <b>$a</b> ; b) function f($a) echo <i> ; echo $a; echo </i> ; c) function f() echo <i>a</i> ; Ερώτηση 3 Ποια εντολή από τις επόμενες αυξάνει την τιμή της μεταβλητής $a κατά 2; ΣΕΛΙΔΑ 21/77

a) $x=2; $a+=x; b) $a++; $a=1; c) $a-=1; Ερώτηση 4 $a=$a+2; Ποια από τις επόμενες σειρές εντολών φτιάχνει μία συνάρτηση που δεν τερματίζει ποτέ; a) function f($x) return f(0); b) function f($x) if($x>0) return 1; return $x*f($x-1); c) function f($x) Ερώτηση 5 return $x+1; Ποια σειρά εντολών από τις επόμενες φτιάχνει μία συνάρτηση που μπορεί να δεχθεί είτε 1 είτε 2 ορίσματα; a) function f($a,$b) if(!$b) return $a; b) function f($a,$b=1) ΣΕΛΙΔΑ 22/77

return $a+$b; c) function f($a=1,$b=2) 2.4 Ασκήσεις return $a+$b; 1. Να γραφεί μία συνάρτηση η οποία θα δέχεται δύο αλφαριθμητικά σαν ορίσματα και θα εμφανίζει 5 φορές το πρώτο όρισμα χωρίς αλλαγή γραμμής και 5 φορές το δεύτερο όρισμα με αλλαγή γραμμής. 2. Να γραφεί συνάρτηση η οποία θα δέχεται σαν είσοδο έναν ακέραιο και ένα αλφαριθμητικό και θα εμφανίζει στην οθόνη στο κέντρο το αλφαριθμητικό τόσες φορές όσες είναι η τιμή του ακεραίου. 3. Να γραφεί μία φόρμα σε PHP η οποία θα περιέχει μία λίστα με τις επιλογές ΠΡΟΣΘΕΣΗ, ΑΦΑΙΡΕΣΗ και ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ και δύο πλαίσια κειμένου. Η φόρμα αυτή θα ενεργοποιεί μία σελίδα σε PHP η οποία θα ελέγχει την λίστα και: 1. Αν έχει επιλεχθεί ΠΡΟΣΘΕΣΗ θα εμφανίζει το άθροισμα των τιμών που είναι στα πλαίσια κειμένου. 2. Αν έχει επιλεχθεί ΑΦΑΙΡΕΣΗ θα εμφανίζει την διαφορά των τιμών που είναι στα πλαίσια κειμένου. 3. Αν έχει επιλεχθεί ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ θα εμφανίζει το γινόμενο των τιμών που είναι στα πλαίσια κειμένου. ΣΕΛΙΔΑ 23/77

3. Πίνακες Στο κεφάλαιο αυτό γίνεται μία εισαγωγή στους πίνακες της γλώσσας PHP και παρουσιάζονται πολλές συναρτήσεις για τον χειρισμό των πινάκων. 3.1 Παραδείγματα Παράδειγμα 1 Να γραφεί ένα σενάριο σε PHP στο οποίο θα ορίζεται ένας πίνακας 2x2 στοιχείων των οποίων οι τιμές θα λαμβάνονται από QUERY STRING. Στην συνέχεια εμφανίστε τον πίνακά σας σε μορφή πίνακα HTML μέσω μίας συναρτήσεως. Το σενάριο για την παραπάνω εργασία είναι το επόμενο: PHP <? function showtable($ar) echo "<table border=1>"; foreach($ar as $v) echo "<tr>"; foreach($v as $v1) echo "</table>"; echo "</tr>"; echo "<td>$v1</td>"; $x=array(array($x11,$x12), ΣΕΛΙΔΑ 24/77

</body>?> Array($x21,$x22) ); showtable($x); Στο παραπάνω σενάριο χρησιμοποιήθηκε διπλός βρόγχος foreach επειδή ο πίνακας x είναι διδιάστατος. Κατά συνέπεια με το πρώτο foreach λαμβάνουμε στην μεταβλητή $v την κάθε γραμμή του πίνακα και με το δεύτερο foreach παίρνουμε ένα ένα τα στοιχεία του διανύσματος $v και τα αποθηκεύουμε στην μεταβλητή $v1 την οποία και εκτυπώνουμε. Παράδειγμα 2 Σε ένα αρχείο PHP υπάρχουν κάποιες πρωτεύουσες νομών της Ελλάδας σε μορφή πίνακα έτσι ώστε να αντιστοιχεί σε κάθε όνομα νομού και η πρωτεύουσά του. Γράψτε μία φόρμα σε HTML με ένα πλάσιο κειμένου και τις επιλογές ΠΡΩΤΕΥΟΥΣΑ, ΝΟΜΟΣ σε μία λίστα επιλογών. Η φόρμα αυτή θα ενεργοποιεί την παραπάνω σελίδα σε PHP η οποία: 1. Αν έχει επιλεγεί το πεδίο ΠΡΩΤΕΥΟΥΣΑ θα εμφανίζει την πρωτεύουσα (αν υπάρχει) του νομού του οποίου το όνομα είναι στο πλαίσιο κειμένου. 2. Αν έχει επιλεγεί το πεδίο ΝΟΜΟΣ θα εμφανίζει τον νομό του οποίου η πρωτεύουσα είναι στο πλαίσιο κειμένου. Η φόρμα για την παραπάνω εργασία είναι η επόμενη: form <form method="post" action="ex13.php"> ΕΠΙΛΕΞΤΕ ΕΝΑ: <select name="action"> </select> <br> <option>πρωτευουσα</option> <option>νομοσ</option> <input type= text name= name > ΣΕΛΙΔΑ 25/77

<br> <input type="submit" value="ok"> </form> </body> Μία πρώτη προσπάθεια για το σενάριο φαίνεται στο παρακάτω πρόγραμμα: PHP <? $info=array( Array("ΠΥΡΓΟΣ","ΗΛΕΙΑΣ"), Array("ΤΡΙΠΟΛΗ","ΑΡΚΑΔΙΑΣ"), Array("ΚΑΛΑΜΑΤΑ","ΜΕΣΣΗΝΙΑΣ"), Array("ΣΠΑΡΤΗ","ΛΑΚΩΝΙΑΣ"), Array("ΝΑΥΠΛΙΟ","ΑΡΓΟΛΙΔΟΣ"), Array("ΚΟΡΙΝΘΟΣ","ΚΟΡΙΝΘΙΑΣ"), Array("ΠΑΤΡΑ","ΑΧΑΪΑΣ") ); $action=$_post['action']; $name= $_POST['name]; if($action=="πρωτευουσα") for($i=0;$i<7;$i++) if($info[$i][1]==$name) $v=$info[$i][0]; echo "ΠΡΩΤΕΥΟΥΣΑ: $v <br>"; ΣΕΛΙΔΑ 26/77

else for($i=0;$i<7;$i++) if($info[$i][0]==$name) $v=$info[$i][1]; echo "ΝΟΜΟΣ: $v <br>"; </body>?> Όπως παρατηρούμε στο παραπάνω πρόγραμμα δεν τυπώσαμε απευθείας είτε το στοιχείο $info[$i][0] είτε το στοιχείο $info[$i][1], καθώς η echo δεν επιτρέπει κάτι τέτοιο. Αντίθετα αναθέσαμε σε μία προσωρίνη μεταβλητή την τιμή των παραπάνω μεταβλητών και τυπώσαμε αυτήν την προσωρινή μεταβλητή. Το παραπάνω πρόγραμμα έχει κάποιες εμφανείς αδυναμίες. Καταρχή απαιτεί από τον χρήστη να ορίσει κάποια διάταξη στον πίνακα, δηλαδή να ορίσει να είναι στη πρώτη στήλη η πρωτεύουσα και στην δεύτερη ο νομός. Επιπλέον απαιτεί έναν βρόγχο for στην επανάληψη ο οποίος γενικά είναι χρονοβόρος. Η επόμενη προσέγγιση λύνει τα προηγούμενα προβλήματα: PHP <? $info=array( ΣΕΛΙΔΑ 27/77

"ΠΥΡΓΟΣ"=>"ΗΛΕΙΑΣ", "ΤΡΙΠΟΛΗ"=>"ΑΡΚΑΔΙΑΣ", "ΚΑΛΑΜΑΤΑ"=>"ΜΕΣΣΗΝΙΑΣ", "ΣΠΑΡΤΗ"=>"ΛΑΚΩΝΙΑΣ", "ΝΑΥΠΛΙΟ"=>"ΑΡΓΟΛΙΔΟΣ", "ΚΟΡΙΝΘΟΣ"=>"ΚΟΡΙΝΘΙΑΣ", "ΠΑΤΡΑ"=>"ΑΧΑΪΑΣ" ); $action=$_post['action']; $name= $_POST['name]; if($action=="πρωτευουσα") foreach($info as $key=>$v) if($v==$name) echo "ΠΡΩΤΕΥΟΥΣΑ: $key<br>"; else $v=$info[$name]; echo "ΝΟΜΟΣ: $v<br>"; </body>?> Στο παραπάνω πρόγραμμα χρησιμοποιήθηκε ένας πίνακας ο οποίος έχει σαν κλειδιά του τις πρωτεύουσες των νομών. Έτσι η εύρεση ενός νομού γίνεται σε ένα μόλις βήμα. Από την άλλη η εύρεση της πρωτεύουσας απαιτεί μία πράξη foreach η οποία δεν είναι το ίδιο χρονοβόρα με την επανάληψη με for. Επίσης αυτή η πράξη foreach μπορεί να αποφευχθεί αν χρησιμοποιηθεί και ένας δεύτερος πίνακας ο οποίος να έχει τα στοιχεία του πρώτου πίνακα αλλά σαν κλειδία να είναι οι νομοί. ΣΕΛΙΔΑ 28/77

Παράδειγμα 3 Να γραφεί μία φόρμα σε HTML με ένα πλαίσιο κειμένου που θα ενεργοποιεί μία σελίδα σε PHP η οποία θα φτιάχνει έναν πίνακα με τυχαίες ακέραιες τιμές. Το πλήθος των στοιχείων του πίνακα είναι ίσο με την τιμή που πληκτρολόγησε ο χρήστης στο πλαίσιο κειμένου της φόρμας. Η φόρμα για την παραπάνω εργασία είναι η επόμενη: </body> form <form method="post" action="ex15.php"> </form> <input type="text" name="count"> <br> <input type="submit" value="ok"> Μια πρώτη προσέγγιση για το ζητούμενο σενάριο είναι το επόμενο: PHP <? $count=$_post['count']; $x=array(); for($i=0;$i<$count;$i++) $x[]=mt_rand(1,100); ΣΕΛΙΔΑ 29/77

for($i=0;$i<$count;$i++) echo "element at $i: $x[$i]<br>"; </body>?> Για να προσθέσουμε ένα στοιχείο στο τέλος του πίνακα απλά αναθέτουμε σε ένα στοιχείο του πίνακα με άδεια άγκιστρα την τιμή που θέλουμε να βάλουμε στο τέλος. Ωστόσο μπορούμε να επιτύχουμε ίδια αποτελέσματα με το παραπάνω σενάριο αν χρησιμοποιήσουμε την συνάρτηση array_push() όπως φαίνεται στην συνέχεια: PHP <? $x=array(); $count=$_post['count']; for($i=0;$i<$count;$i++) array_push($x,mt_rand(1,100)); for($i=0;$i<$count;$i++) echo "element at $i: $x[$i]<br>"; ΣΕΛΙΔΑ 30/77

</body>?> Παράδειγμα 4 Σε ένα αρχείο PHP υπάρχει ένα διάνυσμα ακεραίων αριθμών. Φτιάξτε μία φόρμα σε HTML η οποία θα έχει ένα πλαίσιο κειμένου και θα ενεργοποιεί την συγκεκριμένη σελίδα σε PHP και η οποία θα ταξινομεί σε αύξουσα σειρά τον πίνακα και στην συνέχεια θα βρίσκει με την μέθοδο της δυαδικής αναζητήσεως την θέση του στοιχείου του οποίου η τιμή είναι ίση με αυτή του πλαισίου κειμένου. Η φόρμα για την παραπάνω εργασία είναι η επόμενη: </body> form <form method="post" action="ex17.php"> </form> ΠΟΙΟ ΣΤΟΙΧΕΙΟ ΨΑΧΝΕΤΕ; <input type="text" name="value"> <br> <input type="submit" value="ok"> Το σενάριο που εκτελεί την παραπάνω εργασία είναι το ακόλουθο: PHP <? ΣΕΛΙΔΑ 31/77

function bsearch($x,$item,$start,$final) $mid=(int)($start+$final)/2; if($start>$final) return -1; if($x[$mid]==$item) return $mid; else if($x[$mid]>$item) return bsearch($x,$item,$start,$mid-1); else return bsearch($x,$item,$mid+1,$final); return -1; </body>?> $value=$_post['value']; $x=array(10,22,34,78,89,102); $pos=bsearch($x,$value,0,count($x)-1); echo "the position of $value is $pos<br>"; Παράδειγμα 5 Σε ένα αρχείο PHP υπάρχει σε μορφή πίνακα πληροφορία για μια σειρά από μαθητές. Η πληροφορία αυτή περιλαμβάνει ΟΝΟΜΑ, ΕΠΙΘΕΤΟ και Αριθμό Μητρώου. Να γραφεί μία φόρμα σε HTML η οποία θα έχει μία λίστα επιλογών με τις επιλογές ΚΑΤΑ ΟΝΟΜΑ, ΚΑΤΑ ΕΠΙΘΕΤΟ, ΚΑΤΑ ΑΜ. Η φόρμα θα ενεργοποιεί την σελίδα σε PHP η οποία: 1. Αν έχει επιλεγεί το ΚΑΤΑ ΟΝΟΜΑ θα εμφανίζει τους μαθητές με σειρά ονόματος. 2. Αν έχει επιλεγεί το ΚΑΤΑ ΕΠΙΘΕΤΟ θα εμφανίζει τους μαθητές με σειρά επιθέτου. 3. Αν έχει επιλεγεί το ΚΑΤΑ ΑΜ θα εμφανίζει τους μαθητές με σειρά Αριθμού Μητρώου. Η φόρμα για την παραπάνω εργασία είναι η επόμενη: ΣΕΛΙΔΑ 32/77

form <form method="post" action="ex18.php"> ΕΜΦΑΝΙΣΗ: <select name="action"> <option>κατα ΟΝΟΜΑ</option> <option>κατα ΕΠΙΘΕΤΟ</option> <option>κατα ΑΜ</option> </select> <br> <input type="submit" value="ok"> </form> </body> Το σενάριο είναι το επόμενο: PHP <? function showtable($x,$row) $rows=count($x); for($i=0;$i<$rows;$i++) for($j=0;$j<$rows-1;$j++) if($x[$j+1][$row]<$x[$j][$row]) ΣΕΛΙΔΑ 33/77

$y=$x[$j]; $x[$j]=$x[$j+1]; $x[$j+1]=$y; echo "<table border=1>"; foreach($x as $v) echo "<tr>"; foreach($v as $v1) echo "<td>$v1</td>"; echo "</tr>"; echo "</table>"; $students=array( Array("ΙΩΑΝΝΗΣ","ΠΑΠΑΔΟΠΟΥΛΟΣ",100), Array("ΕΥΓΕΝΙΑ","ΧΡΙΣΤΙΔΟΥ",20), Array("ΠΕΤΡΟΣ","ΝΙΚΟΛΑΟΥ",300), Array("ΔΗΜΗΤΡΑ","ΚΑΛΟΜΟΙΡΗ",10) ); $action=$_post['action']; switch($action) case "ΚΑΤΑ ΟΝΟΜΑ": showtable($students,0); break; case "ΚΑΤΑ ΕΠΙΘΕΤΟ": showtable($students,1); break; ΣΕΛΙΔΑ 34/77

</body>?> case "ΚΑΤΑ ΑΜ": showtable($students,2); break; Στο παραπάνω σενάριο επιλέκτη να γίνει οργάνωση των μαθητών σε έναν διδιάστατο πίνακα χωρίς κλειδία. Κάθε στήλη του πίνακα αποτελεί και ένα πεδίο της πληροφορίας. Έτσι η πρώτη στήλη συμβολίζει ονόματα, η δεύτερη συμβολίζει επίθετα και η τρίτη αριθμούς μητρώου. Η συνάρτηση showtable() δέχεται δύο ορίσματα. Το πρώτο είναι ο πίνακας που θα ταξινομήσει και ο δεύτερος είναι η στήλη ως προς την οποία θα κάνει την ταξινόμηση. 3.2 Ερωτήσεις 1. Ποιες είναι οι πρακτικές εφαρμογές των πινάκων; 2. Μπορεί ένας πίνακας να αποθηκεύσει έναν πίνακα από SQL; 3. Ποιες είναι οι διαφορές μεταξύ των πινάκων της PHP και των πινάκων της C++; 4. Αν έχουμε έναν πίνακα Ν στοιχείων πόσες πράξεις κατά μέσο όρο σε σχέση με το Ν θα χρειαστεί η δυαδική αναζήτηση για να βρει ένα στοιχείο στον πίνακα; 5. Σε ποιες περιπτώσεις μπορεί να χρειαστούμε τις συναρτήσεις array_push() και array_pop(); 3.3 Πολλαπλής επιλογής Ερώτηση 1 Ποιο από τα επόμενα φτιάχνει έναν πίνακα με τρεις διαστάσεις; a) $x=array( Array(3,3,3),Array(2,2,2),Array(1,1,1) ); b) $x=array(array(array(2,3,1))); c) $x=array(3,3*3,3*3*3); Ερώτηση 2 Ποια σειρά εντολών από τις επόμενες αφαιρεί το τελευταίο στοιχείο από τον πίνακα x; ΣΕΛΙΔΑ 35/77

a) $y=$x[x-1]; echo $y<br> ; b) $x[]=-1; c) array_pop($x); Ερώτηση 3 Ποιο από τα επόμενα υπολογίζει το άθροισμα των στοιχείων ενός διδιάστατου πίνακα x; a) $sum=0; foreach($x as $v) foreach($v as $v1) $sum+=$v1; b) $sum=0; foreach($x as $v) $sum+=$v; c) $sum=0; foreach($x as $v) $sum+=$v[0]; Ερώτηση 4 Ποιο από τα επόμενα εκτυπώνει το τρίτο στοιχείο του πίνακα x που έχει οριστεί με την εντολή $x=array( a) $v=$x[3]; cpu =>100, hd =>200, mb =>300, ram =>50 ); echo v=$v<br> ; b) $v=$x[ mb ]; echo v=$v<br> ; ΣΕΛΙΔΑ 36/77

c) $v=$x[ ram ]; Ερώτηση 5 echo v=$v<br> ; Ποια σειρά εντολών από τι επόμενες αναθέτει σε κάθε στοιχείο του διανύσματος x την τιμή 1; a) foreach($x as $v) $v=1; b) $n=count($x); for($i=0;$i<$n;$i++) $x[$i]=1; c) $x=1; 3.4 Ασκήσεις 1. Να γραφεί μία φόρμα σε HTML η οποία θα περιέχει τρία πλαίσια κειμένου και θα ενεργοποιεί μία σελίδα σε PHP η οποία θα ελέγχει τα πλαίσια κειμένου και για καθένα από αυτά που δεν είναι άδειο θα δημιουργεί έναν πίνακα 5 τυχαίες τιμές. Στο τέλος θα εμφανίζονται οι πίνακες. 2. Να γραφεί ένα σενάριο σε PHP στο οποίο θα υπάρχει ένα διάνυσμα με 10 στοιχεία της επιλογής σας. Στην συνέχεια να γραφεί μία φόρμα σε HTML με μία λίστα επιλογών με τις επιλογές AVERAGE, MAX, MIN. Η φόρμα θα ενεργοποιεί την σελίδα σε PHP η οποία: 1. Αν έχει επιλεγεί το AVERAGE θα υπολογίζει και θα εμφανίζει τον μέσο όρο των στοιχείων που υπάρχουν στον πίνακα. 2. Αν έχει επιλεγεί το MAX θα υπολογίζει και θα εμφανίζει το στοιχείο με την μέγιστη τιμή από τον πίνακα. 3. Αν έχει επιλεγεί το MIN θα υπολογίζει και θα εμφανίζει το στοιχείο με την ελάχιστη τιμή από τον πίνακα. 3. Να γραφεί συνάρτηση σε PHP η οποία θα παίρνει σαν είσοδο ένα διάνυσμα και θα παράγει μία φόρμα στην οποία θα υπάρχουν τόσα πλαίσια κειμένου όσο είναι και το πλήθος των στοιχείων του διανύσματος. Αρχική τιμή των πλασίων κειμένου θα είναι η τιμή του διανύσματος στο αντίστοιχο στοιχείο. 4. Να γραφεί συνάρτηση σε PHP η οποία θα παίρνει σαν είσοδο με αναφορά ένα διάνυσμα και μία τιμή. Στην συνέχεια αυτή η συνάρτηση θα αφαιρεί από τον πίνακα το στοιχείο με τιμή ίση με την δεύτερη παράμετρο της συναρτήσεως. ΣΕΛΙΔΑ 37/77

5. Να γραφεί συνάρτηση η οποία θα παίρνει σαν είσοδο δύο πίνακες. Η συνάρτηση αυτή θα επιστρέφει έναν πίνακα του οποίου κλειδιά είναι τα στοιχεία του πρώτου πίνακα και τιμές είναι τα στοιχεία του δεύτερου πίνακα. Αν οι δύο πίνακες δεν έχουν ίδιο πλήθος στοιχείων θα επιστρέφει την σταθερά 0. ΣΕΛΙΔΑ 38/77

4. Χειρισμός αρχείων Στο κεφάλαιο αυτό παρουσιάζεται το αφηρημένο API της γλώσσας προγραμματισμού PHP για τον χειρισμό αρχείων με πολλές χρήσιμες συναρτήσεις και εξειδικευμένα παραδείγματα. 4.1 Παραδείγματα Παράδειγμα 1 Να γραφεί μία φόρμα σε HTML η οποία θα έχει ένα πλαίσιο κειμένου και θα ενεργοποιεί μία σελίδα σε PHP η οποία θα εμφανίζει τα περιεχόμενα του αρχείου το οποίο έχει όνομα ίσο με την τιμή του πλαισίου κειμένου. Η φόρμα για την παραπάνω σελίδα είναι η επόμενη: </body> form <form method="post" action="ex19.php"> </form> ΟΝΟΜΑ ΑΡΧΕΙΟΥ:<input <br> type="text" name="fname"> <input type="submit" value="ok"> Μια πρώτη προσπάθεια υλοποιήσεως του ζητούμενου σεναρίου παρουσιάζεται στην συνέχεια: PHP <? ΣΕΛΙΔΑ 39/77

</body>?> $fname=$_post['fname']; if(!file_exists($fname)) echo "file $fname not found <br>"; die; $fp=fopen($fname,"r"); if(!$fp) echo "file $fname can not be opened<br>"; die; $size=filesize($fname); echo "file: $fname id: $fp filesize $size bytes<br>"; $contents=fread($fp,$size); echo "$contents"; fclose($fp); Όπως βλέπουμε πρώτα ελέγχουμε αν το αρχείο υπάρχει και αν μπορεί να ανοίξει και στην συνέχεια εμφανίζουμε τα περιεχόμενά του. Μία οπτική απεικόνιση από μία ενδεικτική εκτέλεση του παραπάνω σεναρίου παρουσιάζεται στην συνέχεια: Από το παραπάνω παράδειγμα βλέπουμε πως ναι μεν τα περιεχόμενα του αρχείου εκτυπώθηκαν αλλά οι αλλαγές γραμμής δεν εμφανίστηκαν καθόλου με αποτέλεσμα όλο το αρχείο να θεωρηθεί σαν ένα αλφαριθμητικό. Το επόμενο σενάριο λύνει το παραπάνω πρόβλημα: ΣΕΛΙΔΑ 40/77

PHP <? $fname=$_post['fname']; if(!file_exists($fname)) echo "file $fname not found <br>"; die; $fp=fopen($fname,"r"); if(!$fp) echo "file $fname can not be opened<br>"; die; ΣΕΛΙΔΑ 41/77

</body>?> $size=filesize($fname); echo "file: $fname id: $fp filesize $size bytes<br>"; while(!feof($fp)) fclose($fp); $ch=fgetc($fp); if($ch=="\n") echo "<br>"; else if($ch=="\t") else echo "$ch"; for($i=0;$i<8;$i++) echo " "; Στο παραπάνω σενάριο διαβάζουμε έναν προς έναν τους χαρακτήρες από το αρχείο μέχρι τέλος αρχείου. Κάθε φορά που βρίσκουμε αλλαγή γραμμής τυπώνουμε το <br> στην οθόνη. Κάθε φορά που βρίσκουμε tab εκτυπώνουμε τον ειδικό χαρακτήρα &nbsp. Παράδειγμα 2 Να γραφεί σενάριο το οποίο να μετράει πόσες φορές έχουμε επισκεφτεί την συγκεκριμένη σελίδα. Η υλοποίηση της παραπάνω εργασίας θα γίνει με την χρήση ενός αρχείου στο οποίο αποθηκεύουμε τον μετρητή που θέλουμε να αυξάνουμε κάθε φορά. PHP <? $fname="/home/sheridan/hitcounter"; if(file_exists($fname)) ΣΕΛΙΔΑ 42/77

else $fp=fopen($fname,"r"); $count=(int)fgets($fp,10); $count++; fclose($fp); $count=1; $fp=fopen($fname,"w"); fputs($fp,$count); fclose($fp); echo "<h1> WELCOME TO OUR SITE YOY ARE VISITOR $count<br></h1>"; </body>?> Ωστόσο θα πρέπει να επισημανθεί πως το παραπάνω πρόγραμμα είναι σχετικά επικίνδυνο, καθώς απαιτεί το αρχείο που φυλάσσεται ο μετρητής να είναι εγγράψιμο από όλους. Παράδειγμα 3 Ένα αρχείο σε PHP περιέχει σε μορφή πίνακα μία σειρά από αλφαριθμητικά τα οποία αποτελούν TAGS στην HTML. Να γραφεί μία φόρμα σε HTML η οποία θα έχει ένα πλαίσιο κειμένου και θα ενεργοποιεί το παραπάνω αρχείο σε PHP το οποίο θα ανοίγει την σελίδα με διεύθυνση ίση με την τιμή του πλαισίου κειμένου και θα εμφανίζει τα περιεχόμενα της σελίδας αυτής επιτρέποντας μόνον τα TAGS που είναι στον πίνακα. Η φόρμα για την παραπάνω εργασία είναι η επόμενη: form <form method="post" action="ex22.php"> URL:<input type="text" name="pname"> <br> ΣΕΛΙΔΑ 43/77

</body> </form> <input type="submit" value="ok"> Το σενάριο για την παραπάνω εργασία είναι το επόμενο: </body> PHP <? $pname=$_post['pname']; $tags=array("<b>","<br>","<i>"); $tag=""; for($i=0;$i<count($tags);$i++) $tag=$tag.$tags[$i]; $fp=fopen($pname,"r"); while(!feof($fp)) fclose($fp);?> $line=fgetss($fp,1024,$tag); print $line; Στον πίνακα tags όπως βλέπουμε έχουμε μόνον την αλλαγή γραμής, τα έντονα γράμματα και τα πλάγια γράμματα τα οποία είναι και τα μόνα tags που επιτρέπει το παραπάνω σενάριο να υπάρχουν μέσα στο αρχείο $pname. Τα υπόλοιπα δεν θα διερμηνευθούν. Αξίζει να σημειωθεί πως ανοίγουμε την σελίδα σαν να ανοίγαμε ένα οποιοδήποτε άλλο κοινό αρχείο. Αυτό παρέχει ένα αφηρημένο τρόπο αντιμετωπίσεως των αρχείων από την μεριά του προγραμματιστή. Το μόνο που χρειάζεται να προσέξουμε είναι πως χρησιμοποιούμε την συνάρτηση fgetss() αντί για την fgets() μιας και θέλουμε ΣΕΛΙΔΑ 44/77