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

Σχετικά έγγραφα
Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης ΔΟΜΗΣΗ ΚΩΔΙΚΑ. Μαθαίνω παίζοντας

ΓΟΜΖ. Γηδάζθνληεο: Π. Αγγειάηνο, Γ. Εήλδξνο Δπηκέιεηα δηαθαλεηώλ: Γ. Εήλδξνο. Σρνιή Ζιεθηξνιόγσλ Μεραληθώλ θαη Μεραληθώλ Υπνινγηζηώλ

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

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

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

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

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

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

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

PHP/MySQL και Project

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

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

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

Ηλεκτρονικοί Υπολογιστές II

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Δομημένος Προγραμματισμός

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7α: SQL (NULL, Διαίρεση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Εισαγωγή ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Ηλεκτρονικοί Υπολογιστές II

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7β: SQL (Πρακτική Εξάσκηση 1) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 5: SQL (Απλή SELECT) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Εισαγωγή στις Βάσεις Δεδομζνων II

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

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

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Βάσεις Περιβαλλοντικών Δεδομένων

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

Βάσεις Περιβαλλοντικών Δεδομένων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Τεχνολογία Πολιτισμικού Λογισμικού

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

ΣΧΕΔΙΟ ΣΤΟΝ Η/Υ. Ενότητα 3: Εντολές επεξεργασίας Extend, Fillet, Block. Παπαδόπουλος Χρήστος Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων

Διαχείριση Πολιτισμικών Δεδομένων

Ασφάλεια Πληροφοριακών Συστημάτων

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

Αυτοματοποιημένη χαρτογραφία

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

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

Δομημένος Προγραμματισμός

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στην Πληροφορική

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προγραμματισμός και Εφαρμογές Υπολογιστών

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 3: Server Side Scripting II PHP & MySQL

Εισαγωγή στην πληροφορική

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Βάσεις Περιβαλλοντικών Δεδομένων

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

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

Λογιστικές Εφαρμογές Εργαστήριο

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 6: SQL (Συζεύξεις, Εμφώλευση, Ομαδοποίηση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Πληροφορική ΙΙ Θεματική Ενότητα 5

Εισαγωγή στην Πληροφορική

Ηλεκτρονικοί Υπολογιστές

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 1: Ορισμοί βασικών εννοιών: Μια πρώτη μοντελοποίηση. Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Ιστορία της μετάφρασης

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Ψηφιακή Τεχνολογία σε Ακαδημαϊκό Περιβάλλον

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

Υπολογιστικά Συστήματα

Τεχνολογία Πολιτισμικού Λογισμικού

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Δομημένος Προγραμματισμός

Εισαγωγή στους Υπολογιστές

Δομημένος Προγραμματισμός

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 8: SQL (Πρακτική Εξάσκηση 2) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Χρήση εργαλείων Εικόνων, Εντολών και Ετικετών ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

Περιγραφή του EcoTruck

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΑΣ. Ενότητα 3: Αποκατάσταση Εικόνας.

ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ(Visual Basic)

Transcript:

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

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

Στόχος της ώρας Δόμηση κώδικα Συνεργασία σε ομάδες Χωρισμός σε αρχεία Στυλ κώδικα Front-end και back-end Το πρότυπο MVC

Τίποτα δεν γίνεται από έναν Facebook: 4 ιδρυτές 1700 άτομα σήμερα Google: 2 ιδρυτές 23000 άτομα σήμερα Microsoft: 2 ιδρυτές Apple: 3 ιδρυτές YouTube: 3 ιδρυτές πρέπει να μάθουμε να συνεργαζόμαστε!

Δόμηση κώδικα Καθαρότερος κώδικας για εμάς Επεξεργασία μετά από ένα μήνα ή ένα χρόνο Καθαρότερος κώδικας για τους άλλους Κι άλλοι διαβάζουν τον κώδικά σας Πρέπει να τον καταλάβουν Πρέπει να τον αλλάξουν Πρέπει να τον ξανακαταλάβουμε χρειαζόμαστε μία κοινή συνισταμένη

Δόμηση κώδικα Πλεονεκτήματα ορθής δόμησης: Maintainability Ο κώδικας μπορεί να αλλάξει εύκολα Είναι προσαρμόσιμος Είναι επεκτάσιμος Είναι ευανάγνωστος Εκφράζει την σκέψη μας

Programs must be written for people to read, and only incidentally for machines to execute.

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

Δύο διαφορετικά στυλ if ( isset( $foo[ bar ] ) ) { dosomething(); } else { dosomethingelse(); } κενό { δίπλα στο if if(isset($foo[ bar ])) { DoSomething(); } else { κάτω από το if { DoSomethingElse(); } απουσία κενού

Στυλ κώδικα Ασυνέπεια: if ( $a ) { dosomething(); } else { dosomethingelse(); }

Στυλ κώδικα Δεν έχει σημασία ποιο στυλ χρησιμοποιείτε Δεν έχει σημασία αν έχετε πολλά κενά ή λίγα Διαλέξτε ένα στυλ και κρατήστε το Μία ομάδα Ένα στυλ Ένα λογισμικό Ένα στυλ Συνέπεια! Οτιδήποτε άλλο είναι αντιπαραγωγικό

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

Στυλ κώδικα Υπάρχουν έτοιμες προτάσεις Mozilla Google και άλλες. Αναζητήστε για Coding Style Βρείτε μία που σας ταιριάζει

Συνεργασία σε ομάδες Απαιτείται καταμερισμός εργασιών Αυτό σημαίνει σωστή δόμηση Χωρισμός σε αρχεία Όλοι πρέπει να συμφωνήσουμε: Τι είδους κώδικα γράφουμε πού; Πού θα γραφεί ο κώδικας... PHP, για την σύνδεση στη βάση δεδομένων; HTML, για την φόρμα δημιουργίας λογαριασμού; SQL, για την δημιουργία λογαριασμού; Κάθε πράγμα πρέπει να έχει μία θέση

Χωρισμός σε αρχεία Πρώτη ιδέα: Αντί να έχω ένα μεγάλο αρχείο, έχω πολλά μικρότερα Ευκολότερη συνεργασία Ο καθένας δουλεύει στα αρχεία που τον αφορούν

Συναρτήσεις Επαναχρησιμοποίηση κώδικα Συχνά μπορούν να χρησιμοποιηθούν σε αρχεία

Front-end και back-end Η πρώτη μεγάλη ιδέα! Front-end: Κώδικας που αναφέρεται στην διεπαφή χρήστη PHP που παράγει άμεσα HTML Στατικό HTML CSS Javascript Εικόνες κ.ό.κ.

Front-end και back-end Back-end: Κώδικας που επεξεργάζεται τα δεδομένα PHP που δεν παράγει HTML Συναρτήσεις επεξεργασίας δεδομένων Συναρτήσεις αποθήκευσης δεδομένων SQL

Front-end Back-end

Front-end και back-end Χωρίζουμε σε ξεχωριστά αρχεία Το front-end Το back-end Στο front-end δεν υπάρχει SQL Στο back-end δεν υπάρχει HTML/CSS Το front-end περιγράφει την παραγωγή της διεπαφής χρήστη Το back-end περιγράφει την επεξεργασία, αποθήκευση, ανάκτηση δεδομένων

Front-end και back-end Ας τα χωρίσουμε! Το back-end συχνά αναφέρεται και ως models Συχνό φαινόμενο σε web εφαρμογές: Φάκελος models που περιέχει τον back-end κώδικα

Decoupling Κάθε τμήμα κώδικα γνωρίζει μόνο όσα χρειάζεται να γνωρίζει Κάθε είδους «γνώση» υπάρχει μόνο σε ένα σημείο του κώδικά μας Front-end γνωρίζει: Ότι χρησιμοποιούμε HTML Ποια έκδοση της HTML χρησιμοποιούμε Back-end γνωρίζει: Ότι χρησιμοποιούμε MySQL Ποια έκδοση της MySQL χρησιμοποιούμε Ποιο είναι το σχήμα μας

Decoupling Front-end δεν γνωρίζει: Αν χρησιμοποιούμε αρχεία ή βάση δεδομένων για αποθήκευση Αν αποθηκεύω το όνοματεπώνυμο ως όνομα + επώνυμο Αν τα δεδομένα προέρχονται από ανάκτηση ή από υπολογισμό Back-end δεν γνωρίζει: Ότι παράγουμε HTML Αν χρησιμοποιούμε XHTML 1.0 Strict ή όχι Ότι ο χρήστης είναι άνθρωπος και όχι αράχνη

<h2>τι είπαν οι άλλοι</h2> <ol> <?php front-end $res = mysql_query( "SELECT username, text FROM }?> </ol> shouts CROSS JOIN users ON shouts.userid = users.userid ORDER BY created DESC; ); while ( $row = mysql_fetch_array( $res ) ) {?><li><strong><?php echo $row[ 'username' ];?>:</strong> <span><?php echo $row[ 'text' ];?></span></li><?php front-end back-end

Σαλάτα από τον Chiot's Run

<h2>τι είπαν οι άλλοι</h2> <ol> <?php front-end $res = mysql_query( "SELECT username, text FROM }?> </ol> shouts CROSS JOIN users ON shouts.userid = users.userid ORDER BY created DESC; ); while ( $row = mysql_fetch_array( $res ) ) {?><li><strong><?php echo $row[ 'username' ];?>:</strong> <span><?php echo $row[ 'text' ];?></span></li><?php front-end back-end

Πώς θα χωρίσουμε αυτό τον κώδικα; Το HTML στο front-end Η SQL στο back-end

models/shouts.php: $res = mysql_query( "SELECT username, text FROM shouts CROSS JOIN users ON shouts.userid = users.userid ORDER BY created DESC; ); back-end

<h2>τι είπαν οι άλλοι</h2> έλλειψη διαφάνειας αναφοράς <ol> <?php include models/shouts.php ; while ( $row = mysql_fetch_array( $res ) ) {?><li><strong><?php echo $row[ 'username' ];?>:</strong> back-end <span><?php echo $row[ 'text' ]; back-end?></span></li><?php }?> </ol> front-end?

<h2>τι είπαν οι άλλοι</h2> <ol> <?php include models/shouts.php ; $shouts = GetShouts();?> </ol> foreach ( $shouts as $shout ) {?><li><strong><?php echo $shout[ 0 ];?>:</strong> <span><?php echo $shout[ 1 ];?></span></li><?php } διεπαφή (API) front-end/back-end

models/shouts.php: function GetShouts() { $rows = array(); $res = mysql_query( "SELECT username, text FROM shouts CROSS JOIN users ON shouts.userid = users.userid ORDER BY created DESC; ); while ( $row = myql_fetch_array( $res ) ) { $rows[] = array( $row[ username ], $row[ text ] ); } return $rows; }

Front-end και back-end Back-end που ζει στον φάκελο models : Εμπεριέχει όλη την λογική επικοινωνίας με την βάση Αποθήκευση Ανάκτηση Επεξεργασία Δεν γνωρίζει για τον τρόπο χρήσης των δεδομένων Δεν γνωρίζει από πού προήλθαν τα δεδομένα

Front-end και back-end Front-end: Εμπεριέχει όλη την λογική διεπαφής χρήστη Παραγωγή HTML CSS/JS Δεν γνωρίζει για τον τρόπο αποθήκευσης των δεδομένων Δεν γνωρίζει πώς ανακτούνται τα δεδομένα

Συνεργασία σε ομάδες Σε μία ομάδα ο κάθε προγραμματιστής επιλέγει αν θα ασχοληθεί με το back-end ή το front-end Ταχύτερη ανάπτυξη Δεν γράφεται το ίδιο πράγμα 2 φορές

if ( isset( $_SESSION[ 'username' ] ) && isset( $_POST[ 'shout' ] ) ) { $shout = $_POST[ 'shout' ]; mysql_query( "INSERT INTO shouts SET back-end text = '". $shout. "', userid = ". $_SESSION[ 'userid' ]. ", created = NOW(); ); header( 'Location: index.php' ); } else {?>Πρέπει να έχεις κάνει είσοδο.<?php } front-end front-end front-end

models/shouts.php: function SaveShout( $userid, $text ) { mysql_query( "INSERT INTO shouts SET text = $text', userid = $userid, created = NOW(); ); }

if ( isset( $_SESSION[ 'username' ] ) && isset( $_POST[ 'shout' ] ) ) { include models/shouts.php ; SaveShout( $_SESSION[ userid ], $_POST[ shout ] ); header( 'Location: index.php' ); } else {?>Πρέπει να έχεις κάνει είσοδο.<?php }

Τι είναι front-end και τι back-end? Εμφάνιση μηνύματος σφάλματος (Δεν έχεις κάνει login) Ανάγνωση δεδομένων GET Ανάγνωση δεδομένων POST Προσθήκη εγγραφής στη βάση δεδομένων Εμφάνιση κουμπιού που αποθηκεύει Χρήση mysql_fetch_array για ανάγνωση δεδομένων Εύρεση μέσου όρου βαθμολογιών μαθητών Χρωματισμός γραμμάτων διεπαφής με κόκκινο χρώμα

MVC Model-View-Controller Καλός ο διαχωρισμός Front-end / Back-end Back-end = Model Όμως στο Front-end μας μπλέκουμε δύο πράγματα Την παραγωγή της διεπαφής (View) Την συλλογή δεδομένων και τις απαραίτητες κλήσεις (Controller)

Views Αποκλειστικά υπεύθυνα για την παραγωγή διεπαφής Κυρίως HTML κώδικας Μόνο η απαραίτητη PHP π.χ. foreach για παραγωγή επαναλαμβανόμενων τμημάτων Πρόσβαση σε συγκεκριμένες ονομασμένες μεταβλητές Λέγονται και «Templates» ή πρότυπα

Controllers Αποφασίζουν ποιο view και ποιο model θα κληθεί Παίρνουν τα δεδομένα από τον χρήστη Δίνουν τα δεδομένα του χρήστη στο σωστό model Δίνουν τα δεδομένα του χρήστη και του model στο view Στέλνουν πίσω τα δεδομένα στον χρήστη Το «λεπτότερο» τμήμα Το πρώτο και τελευταίο πράγματα που τρέχει Έχει τον έλεγχο (controller = ελεγκτής)

Views Controller Models

if ( isset( $_SESSION[ 'username' ] ) && isset( $_POST[ 'shout' ] ) ) { include models/models/shouts.php ; Controller SaveShout( $_SESSION[ userid ], $_POST[ shout ] ); Controller header( 'Location: index.php' ); } else {?>Πρέπει να έχεις κάνει είσοδο.<?php } Controller View

if ( isset( $_GET[ 'username' ] ) ) { $res = mysql_query( SELECT userid FROM users WHERE model username =. $_GET[ username ]. LIMIT 1; ) ); if ( mysql_num_rows( $res ) == 1 ) {?>Username already taken :-( <input type= text value= /><?php } else {?><input type= text value= <?php echo $_GET[ username ];?> /><?php view } } else {?><input type= text value= /><?php } controller

1. Controller $exists = false; $username = ; if ( isset( $_GET[ 'username' ] ) ) { include models/user.php ; $exists = UsernameExists( $_GET[ username ] ); $username = $_GET[ username ]; } include views/register.php ;

2. Model function UsernameExists( $username ) { $res = mysql_query( SELECT userid FROM users WHERE username = $username LIMIT 1; ); return mysql_num_rows( $res ) == 1; }

2. View <?php if ( $exists ) {?>Το όνομα χρήστη υπάρχει ήδη :-(<?php }?> <input type= text value= <?php echo $username;?> />

Σε ποιο τμήμα του MVC ανήκουν; Εμφάνιση μηνύματος σφάλματος (Δεν έχεις κάνει login) Ανάγνωση δεδομένων GET Ανάγνωση δεδομένων POST Προσθήκη εγγραφής στη βάση δεδομένων Εμφάνιση κουμπιού που αποθηκεύει Χρήση mysql_fetch_array για ανάγνωση δεδομένων Εύρεση μέσου όρου βαθμολογιών μαθητών Χρωματισμός γραμμάτων διεπαφής με κόκκινο χρώμα Include του view Include του model

Συγχαρητήρια! Μπορείτε να δομείτε τον κώδικά σας σωστά!

Την επόμενη φορά... Εισαγωγή στην Javascript Πόσες γλώσσες προγραμματισμού θα χρειαστούμε πια;

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