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

PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

PHP 1Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος

Επιμέλεια διαφανειών: Δ. Ζήνδρος

Σχολή Ηλεκτρολόγων Μηχανικών

και Μηχανικών Υπολογιστών

Page 2: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Άδεια Χρήσης

Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.

Page 3: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Στόχος της ώρας

• Εισαγωγή της γλώσσας PHP σε αρχάριο επίπεδο:

• Βασική σύνταξη

• Συνδυασμός PHP με άλλες γλώσσες

• Μεταβλητές

• Αλφαριθμητικά

• Τελεστές

• if, else, switch

• for, while

• Συναρτήσεις

• Χειρισμός φορμών

Page 4: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς
Page 5: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

PHP

• PHP Hypertext Preprocessor

• Τρέχει στον server και όχι στον client

• Συνδυάζεται με κάποιον web server όπως ο Apache

• Ανοιχτού κώδικα, τρέχει σε Windows, Linux, και αλλού

• Παράγει το HTML που θα φτάσει στο χρήστη

• Θα μελετήσουμε την έκδοση 5.2

Page 6: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Εναλλακτικές λύσεις

• ASP

• Η server-side λύση της Microsoft

• JSP

• Server-side λύση βασισμένη στη Java

• Python, Django

• Ruby, Ruby on Rails

Page 7: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Τι μπορεί να κάνει;

• Δυναμικές σελίδες

• Login, διαχείριση χρηστών

• Μόνιμη αποθήκευση δεδομένων (στο server)

• Διαχείριση προσωπικού περιεχομένου

• Προσωπικά μηνύματα

• Φωτογραφίες που μπορούν να δουν μόνο «οι φίλοι μου»

• Ανέβασμα αρχείων

• Σύνδεση με βάση δεδομένων

• Πολλά, πολλά άλλα

Page 8: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Δώσε μου τη σελίδα Χ

Φτιάξε μου τη σελίδα Χ

Εκτέλεση κώδικα PHP

Παραγωγή HTML

Ορίστε η σελίδα Χ

Ορίστε η σελίδα Χ

Εμφάνιση σελίδας

Page 9: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

LAMP

• Linux

• Apache

• MySQL

• PHP

Φωτογραφία: only_point_five

Page 10: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συγγραφή PHP

• Την γράφουμε σε αρχεία .php

• Τα αρχεία .php αποθηκεύονται στον server

• Ο χρήστης δεν έχει άμεση πρόσβαση στα αρχεία αυτά!

• Γράφουμε σκέτη HTML

• Σε ορισμένα σημεία παρεμβάλλεται εκτελέσιμος κώδικας

• Για να τρέξει θα περάσει από το πρόγραμμα httpd

• Δεν μιλάμε πλέον για τοπικά αρχεία

Page 11: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Γεια σου κόσμε!

<html>

<head><title>:)</title></head>

<body>

<?php

echo “<p>Hello, world!</p>”;

?>

</body>

</html>

Page 12: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

<html>

<head><title>:)</title></head>

<body><p>Hello, world!</p></body>

</html>

Page 13: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Βασική σύνταξη

• Παρεμβολή κώδικα

• Αρχίζει με <?php

• Ή συντομογραφία <?

• Τελειώνει με ?>

• Μπορούμε να παρεμβάλλουμε πολλές φορές κώδικα

• Ο κώδικας εκτελείται σειριακά

• Η μία εντολή μετά την άλλη

• Κάθε εντολή τελειώνει σε ;

Page 14: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Γεια σου κόσμε!

<html>

<head><title>

<?php

echo “:-)”;

?>

</title></head>

<body>

<?php

echo “<p>Hello, world!</p>”;

?>

</body>

</html>

Page 15: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

<html>

<head><title>:)</title></head>

<body><p>Hello, world!</p></body>

</html>

Page 16: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Τυπώνοντας κείμενο

• echo: Τυπώνει την παράμετρο στο αποτέλεσμα

Page 17: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Interpreter

• Δεν γίνεται compile

• Το πρόγραμμα τρέχει όπως διαβάζεται

Page 18: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Μεταβλητές στην PHP

• Αποθηκεύουν μία τιμή

• Νούμερα, κείμενα, πίνακες, ...

• Αρχίζουν με $, ακολουθεί το όνομα

• Το όνομα...

• Αρχίζει με γράμμα ή _

• Περιέχει γράμματα, αριθμούς, _

• Έχει ευαισθησία σε πεζά-κεφαλαία

• Παρόμοιες με C, C++, Java, Pascal, …

Page 19: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Μεταβλητές

• Τιμή μεταβλητής ορίζεται με τον τελεστή =

• $a = 5;

• Δίνει στην μεταβλητή $a την τιμή 5

• Οι μεταβλητές μπορούν να αλλάξουν τιμή

• Μπορούν να χρησιμοποιηθούν μέσα σε παραστάσεις

Page 20: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Μεταβλητές

<?php

$a = “Hello, ”;

$b = “world!”;

echo $a;

echo $b;

?>

Hello, world!

Page 21: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Ασθενές σύστημα τύπων

• Κάθε τιμή έχει έναν τύπο

• int: 5, 9, 34, -18

• float: 0.99, 3.14

• string: “Hello world”, ‘Διονύσης’

• boolean: true, false

• Δεν ορίζουμε τύπους μεταβλητών

• Ο τύπος μίας μεταβλητής μπορεί να αλλάξει

• Ανάλογα με την τιμή που παίρνει

Page 22: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

<?php

$a = “Hello, ”;

echo $a;

$a = 5;

echo $a;

?>

Hello, 5

Τύπου string

Τύπου int

Page 23: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Δυναμικό σύστημα τύπων

• Μεταβλητές παίρνουν τύπο τιμής

• Διευκόλυνση στη συγγραφή κώδικα

• Σφάλματα χρόνου εκτέλεσης αντί συντακτικά

• Πιο δύσκολα στον εντοπισμό

• Οι μετατροπές τύπων γίνονται αυτόματα

<?php

$a = “5”;

$b = 7;

echo $b - $a;

?>

2

Μετατρέπεται σε int για να γίνει η πράξη

Page 24: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Αλφαριθμητικά

• Μία τιμή που είναι μία σειρά από αριθμούς, χαρακτήρες,

γράμματα, ...

• Δηλαδή ένα κείμενο

• Το μήκος μπορεί να αλλάζει

• Δεν υπάρχει περιορισμός μήκους

• Δεν πρόκειται για πίνακες από χαρακτήρες

• Δεν υπάρχει διαφορετικός τύπος χαρακτήρα και

αλφαριθμητικού

• Επιτρέπεται το UTF-8 άμεσα:

$a = “Χαίρε, κόσμε!”;

Page 25: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Αλφαριθμητικά

• Διπλά εισαγωγικά: Προκαλούν αντικαταστάσεις

<?php

$a = “world”;

echo “Hello, $a!”;

?>

• Μονά εισαγωγικά: Δεν προκαλούν αντικαταστάσεις

<?php

$a = “world”;

echo ‘Hello, $a!’;

?>

• Εξίσου γρήγορα και τα δύο

Hello, world!

Hello, $a!

Page 26: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συνένωση αλφαριθμητικών

• Με τον τελεστή . (τελεία)

• Παράγει ένα αλφαριθμητικό που είναι η παράθεση δύο

άλλων

• “Hello, “ . “world” Hello, world

Page 27: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συναρτήσεις αλφαριθμητικών

• Παρέχονται έτοιμες από την PHP:

• strlen: Υπολογίζει μήκος αλφαριθμητικού

• trim: «Κόβει» τα κενά από την αρχή και το τέλος

• strpos: Εντοπίζει ένα αλφαριθμητικό μέσα σε άλλο

• strtolower: Μετατρέπει από κεφαλαία σε πεζά

• strtoupper: Μετατρέπει από πεζά σε κεφαλαία

• str_repeat: Δημιουργεί αλφαριθμητικό με επανάληψη

άλλου αλφαριθμητικού

…και πολλές άλλες: http://php.net/strings

Ψάξτε τες όταν τις χρειαστείτε!

Page 28: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Ειδικοί χαρακτήρες

• Παρόμοιοι με C, C++, Java, …

• \n Αλλαγή γραμμής

• \t Tab

• Δουλεύουν μόνο σε “διπλά εισαγωγικά”

Page 29: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Τελεστές Λειτουργία

+, -, *, /, % Αριθμητικές πράξεις

||, &&, ! Λογικές πράξεις: ή, και, όχι

==, !=, <, >, <=, >= Σύγκριση

++, -- Αύξηση, μείωση

. Ένωση αλφαριθμητικών

=, +=, -=, *=, /=, %=, .= Ανάθεση τιμής

Τελεστές

Page 30: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Τελεστές

Κώδικας Αποτέλεσμα

3 + 5 8

2 - 9 -7

1 / 2 0.5

5 * 7 35

102 % 5 2

true || false true

!true false

true && true true

3 < 5 true

3 != 3 false

“Hello “ . ‘, world!’ Hello, world!

Page 31: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Τελεστές

$a = 5;

echo $a;

++$a;

echo $a;

--$a;

echo $a;

5

6

5

Page 32: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Τι θα τυπώσουν;

• echo “1” / “2”;

• echo 1 . 2;

• $a = 5; echo “$a”;

• $b = 5; echo “$b” - $b;

• $c = 5; echo ‘$c’ . $c;

0.5

12

5

0

$c5

Page 33: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Σύγκριση

• Με ==, !=

• Ο τύπος των τιμών μετατρέπεται ώστε να γίνει η σύγκριση

• 1 == 1 true

• 1 == 2 false

• 0 == “hello” true

• “1” == 1 true

Page 34: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Σύγκριση

• Η σύγκριση αλφαριθμητικών γίνεται εύκολα και σωστά:

$a = “hello”;

if ( $a == “hello” ) {

echo ‘$a is hello. ‘;

}

else {

echo ‘$a is not hello. ‘;

}

Page 35: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

if

if ( συνθήκη ) {

σώμα 1

}

else if ( συνθήκη ) {

σώμα 2

}

...

else {

σώμα 3

}

Page 36: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

if

• Εκτελεί κώδικα υπό συνθήκη

• Παρόμοιο με το if της C, C++, Java, …

• 1η συνθήκη αληθής;

• Εκτέλεση κώδικα σώματος if

• Αλλιώς, 2η συνθήκη αληθής;

• Εκτέλεση κώδικα σώματος else if

• …

• Όλες οι συνθήκες ψευδείς;

• Εκτέλεση κώδικα σώματος else

• Τα else if και else είναι προαιρετικά

Page 37: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

if

if ( $a == 5 ) {

echo “Hello!”;

}

else {

echo “Goodbye!”;

}

Page 38: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

switch

switch ( παράσταση ) {

case τιμή1:

σώμα 1;

break;

case τιμή2:

σώμα 1;

break;

...

default:

εναλλακτικό σώμα

}

Page 39: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

switch

• Επιλέγει ένα σώμα με βάση την τιμή μίας παράστασης

• Παρόμοιο με C, C++, Java, …

• Τα cases μπορούν να είναι και όχι σταθερές

• Αν η παράσταση έχει τιμή1

• Εκτέλεση σώματος 1

• Αν η παράσταση έχει τιμή2

• Εκτέλεση σώματος2

• ...

• Αλλιώς

• Εκτέλεση εναλλακτικού σώματος

• Το default είναι προαιρετικό

Page 40: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

switch

switch ( $a ) {

case 5:

echo “a is 5”;

break;

case 10:

echo “a is 10”;

break;

case 15:

echo “a is 15”;

break;

default:

echo “a is neither 5, nor 10, nor 15”;

}

Page 41: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

switch

• Παράληψη του break οδηγεί σε fall-through

• Εκτελούνται τα σώματα που ακολουθούν μέχρι το

επόμενο break

Page 42: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

switch

$a = 10;

switch ( $a ) {

case 5:

echo “a is 5. ”;

case 10:

echo “a is 10. ”;

case 15:

echo “a is 15. ”;

default:

echo “a is neither 5, nor 10, nor 15”;

}

Page 43: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

a is 10. a is 15. a is neither 5, nor 10, nor 15.

Page 44: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

for

for ( αρχικοποίηση; συνθήκη; βήμα ) {

σώμα

}

Page 45: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

for

• Ίδιο σε C, C++, Java…

• Επαναλαμβάνει ένα σώμα σύμφωνα με κάποια συνθήκη

• Αρχικά τρέχει η αρχικοποίηση

• Αν η συνθήκη είναι ψευδής, τελειώσαμε

• Αν η συνθήκη είναι αληθής, τρέχει το σώμα

• Μετά το σώμα τρέχει το βήμα

• Η συνθήκη ελέγχεται ξανά, κ.ό.κ.

for ( αρχικοποίηση; συνθήκη; βήμα ) {σώμα

}

Page 46: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

for

for ( $i = 0; $i < 5; ++$i ) {

echo “Hello, world! “;

}

Hello, world! Hello, world! Hello, world!

Hello, world! Hello, world!

Page 47: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

while

while ( συνθήκη ) {

σώμα

}

Page 48: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

while

• Ίδιο σε C, C++, Java, …

• Επαναλαμβάνει ένα σώμα σύμφωνα με κάποια συνθήκη

• Αρχικά ελέγχεται η συνθήκη

• Αν η συνθήκη είναι ψευδής, τελειώσαμε

• Αν η συνθήκη είναι αληθής, τρέχει το σώμα

• Η συνθήκη ελέγχεται ξανά, κ.ό.κ.

while ( συνθήκη ) {σώμα

}

Page 49: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

while

$i = 0;

while ( $i < 5 ) {

echo “Hello, world! “;

++$i;

}

Hello, world! Hello, world! Hello, world!

Hello, world! Hello, world!

Page 50: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

do… while

do {

σώμα

} while ( συνθήκη );

Page 51: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

do… while

• Ίδιο σε C, C++, Java, …

• Επαναλαμβάνει ένα σώμα σύμφωνα με κάποια συνθήκη

• Αρχικά τρέχει μία φορά το σώμα

• Στη συνέχεια ελέγχεται η συνθήκη

• Αν η συνθήκη είναι ψευδής, τελειώσαμε

• Αν η συνθήκη είναι αληθής, τρέχει το σώμα

• Η συνθήκη ελέγχεται ξανά, κ.ό.κ.

do {σώμα

} while ( συνθήκη );

Page 52: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

do… while

$i = 0;

do {

echo “Hello, world! “;

++$i;

} while ( $i < 0 );

Hello, world!

Page 53: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

break

• Ίδιο σε C, C++, Java, …

• Εμφανίζεται μέσα σε μία ροή ελέγχου

• for, foreach, while, do… while, switch

• Διακόπτει την ροή και συνεχίζει αμέσως μετά

• Δεν γίνονται άλλες επαναλήψεις μετά το break

Page 54: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

continue

• Ίδιο σε C, C++, Java, …

• Εμφανίζεται μέσα σε μία ροή επανάληψης

• for, foreach, while, do… while

• Διακόπτει την ροή και συνεχίζει ελέγχοντας την συνθήκη

• Μπορεί να γίνουν και άλλες επαναλήψεις μετά το continue

Page 55: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Χειρισμός φορμών

• Για να πάρουμε δεδομένα από HTTP GET:

• Μεταβλητή $_GET

• $_GET[ “όνομα_παραμέτρου” ]

• Για να πάρουμε δεδομένα από HTTP POST:

• Μεταβλητή $_POST

• $_POST[ “όνομα_παραμέτρου” ]

• Ορίζονται αυτόματα από την PHP

Page 56: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Χειρισμός φορμών

input.html:

<form action=“test.php” method=“post”>

<input type=“text” name=“foo” />

<input type=“submit” value=“Στείλε” />

</form>

Page 57: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Χειρισμός φορμών

test.php:

<p>

Πληκτρολόγησες

<?php

echo $_POST[ ‘foo’ ];

?>!

</p>

Page 58: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Σχόλια

• // η υπόλοιπή γραμμή είναι σχόλιο

• Το πολύ 1 γραμμή

$a = 5; // assign $a to be 5

• /* τα περιεχόμενα είναι σχόλιο */

• 1 ή περισσότερες γραμμές

Page 59: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συναρτήσεις

function όνομα_συνάρτησης( ορίσματα ) {

σώμα;

}

Page 60: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συναρτήσεις

• Παρόμοιες με συναρτήσεις σε C, C++, Java, …

• Ορίζουν υπο-ρουτίνες που κάνουν συγκεκριμένη δουλειά

• Ορίζονται με την λέξη-κλειδί function

• Ακολουθεί το όνομα της συνάρτησης

• Ακολουθούν τα ονόματα των ορισμάτων σε ( ) χωρισμένα

με κόμματα

Page 61: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Επιστροφή τιμής

• Οι συναρτήσεις επιστρέφουν τιμή με return

• Η τιμή επιστροφής χρησιμοποιείται όπου έγινε η κλήση

• Επιστροφή σημαίνει τερματισμός συνάρτησης

• Δεν ορίζουμε τύπο επιστροφής

• Δεν είναι υποχρεωτικό

Page 62: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Κλήση συναρτήσεων

• Καλούνται οπουδήποτε χρησιμοποιώντας το όνομα

• Ακολουθούν οι τιμές των ορισμάτων σε ( ) χωρισμένες με

κόμματα

• Σειρά ορισμάτων έχει σημασία

• Πρώτη τιμή Πρώτο όρισμα

• Δεύτερη τιμή Δεύτερο όρισμα

• κ.ό.κ.

• Κλήση χωρίς επιστροφή:

όνομα_συνάρτησης( τιμές_ορισμάτων );

• Κλήση με επιστροφή:

$a = όνομα_συνάρτησης( τιμές_ορισμάτων );

Page 63: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Ορίσματα

• Δίνουν πληροφορίες σε μία συνάρτηση

• Ακολουθούν ίδια ονοματολογία με μεταβλητές

• Αρχίζουν με $, ακολουθεί το όνομα

• Το όνομα...

• Αρχίζει με γράμμα ή _

• Περιέχει γράμματα, αριθμούς, _

• Έχει ευαισθησία σε πεζά-κεφαλαία

Page 64: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συναρτήσεις

function add( $a, $b ) {

$c = $a + $b;

return $c;

}

echo “The sum of 3 and 5: “ . add( 3, 5 );

Όνομα συνάρτησης

Ορισμός συνάρτησης

Κλήση συνάρτησης

Page 65: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συναρτήσεις

function add( $a, $b ) {

$c = $a + $b;

return $c;

}

echo “The sum of 3 and 5: “ . add( 3, 5 );

Ορίσματα

Τιμές ορισμάτων

Πρώτο όρισμα

Δεύτερο όρισμα

Τιμή πρώτου ορίσματος

Τιμή δεύτερου ορίσματος

Page 66: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συναρτήσεις

function add( $a, $b ) {

$c = $a + $b;

return $c;

}

echo “The sum of 3 and 5: “ . add( 3, 5 );

Τιμή επιστροφής

Παίρνει αυτή τη θέση

Page 67: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συναρτήσεις

function avg( $a, $b ) {

$c = $a + $b;

return $c / 2;

}

echo ‘The average of 3, 5: ‘ . avg( 3, 5 );

echo “\n”;

echo ‘The average of 1, 9: ‘ . avg( 1, 9 );

Page 68: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συναρτήσεις

function is_prime( $a ) {

for ( $i = 2; $i < $a; ++$i ) {

if ( $a % $i == 0 ) {

return false;

}

}

return true;

}

if ( is_prime( 5 ) ) {

echo “5 is a prime number.”;

}

Page 69: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Προαιρετικά ορίσματα

• Μπορούν να είναι:

• Τα τελευταία μίας συνάρτησης

• Όσα θέλουμε

• Ορίζουμε μία προεπιλεγμένη τιμή με το = μετά το όνομα

του ορίσματος

Page 70: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Προαιρετικά ορίσματα

function makeCoffee

( $type = “frappe”, $milk = true ) {

$str = “Making a cup of $type”;

if ( $milk ) {

$str .= ‘ with milk’;

}

$str .= “.\n”;

return $str;

}

echo makeCoffee( “espresso” );

Όλα τα ορίσματα προαιρετικά

Page 71: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Προαιρετικά ορίσματα

function makeCoffee

( $type, $milk = true ) {

$str = “Making a cup of $type”;

if ( $milk ) {

$str .= ‘ with milk’;

}

$str .= “.\n”;

return $str;

}

echo makeCoffee( “espresso” );

2ο όρισμα προαιρετικό

Page 72: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Προαιρετικά ορίσματα

function makeCoffee

( $type = ‘frappe’, $milk ) {

$str = “Making a cup of $type”;

if ( $milk ) {

$str .= ‘ with milk’;

}

$str .= “.\n”;

return $str;

}

echo makeCoffee( “espresso” );

Page 73: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Εγκαταστήστε Apache + PHP!

• Ήρθε η ώρα να στήσετε έναν server στον υπολογιστή σας

• Εγκαταστήστε τον Apache από το http://apache.org/

• Εγκαταστήστε την PHP από το http://php.net/

• Πειραματιστείτε!

• Θα τα χρειαστείτε για την 4η εργασία!

Page 74: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Μάθαμε

• Εισαγωγή της γλώσσας PHP σε αρχάριο επίπεδο:

• Βασική σύνταξη

• Συνδυασμός PHP με άλλες γλώσσες

• Μεταβλητές

• Αλφαριθμητικά

• Τελεστές

• if, else, switch

• for, while

• Συναρτήσεις

• Χειρισμός φορμών

Page 75: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Συγχαρητήρια!• Μάθατε PHP.

• Μπορείτε να κάνετε δυναμική την

πρώτη σας σελίδα!

Page 76: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Την επόμενη φορά...

• Εμβάθυνση στην PHP

• Πίνακες και λεξικά

• foreach

• Διαχείριση αρχείων

• Ημερομηνίες

• Διαχωρισμός κώδικα σε πολλά αρχεία

• Ανέβασμα αρχείων από τον χρήστη

• Μπισκότα και σύνοδοι

• Αποστολή e-mail

Page 77: PHP 1 - ocw.aoc.ntua.gr · Σ 2όχος 2ης ώρας •Ειαγωγή ης γλώας PHP 1 0 αρχάριο πίπο: • Βαική ύν 2αξη • Συνυαμός PHP μ άλλς

Χρηματοδότηση

Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα.

Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού.

Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.