Χρήση της PHP και επικοινωνία με τη MySQL

Σχετικά έγγραφα
Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης -

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

Εφαρµογές διαδικτύου µε PHP

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

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

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

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

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

Web Programming for Dummies

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

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

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

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

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

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

Δημιουργία Μηχανής Αναζήτησης με PHP Στυλιάδης Κων/νος, Υπ. Κέντρου ΠΛΗ.ΝΕ.Τ. Ν. Φλώρινας, Φλώρινα, Σεπτέμβριος 2006

Εισαγωγή στην Ανάπτυξη Εφαρμογών Web με Χρήση της Python, του Apache και του mod_python

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP)

5 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: προχωρημένα θέματα PHP

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

στην πλευρά του εξυπηρετητή

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Φόρμες. Γενικοί κανόνες. Η ετικέτα <form>

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Web εφαρμογή με χρήση LDAP και SMTP Server

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

Η HTML χρησιμοποιεί εντολές που ονομάζονται HTML tags δίνοντας εντολές στους Web browsers για το πώς να εμφανίζουν την κάθε ιστοσελίδα.

Άσκηση 5 -Δηµιουργία ιστοσελίδων µε HTML µέρος 5 ο

Προγραμματισμός Διαδικτύου ΕΡΓΑΣΤΗΡΙΟ. Τμ. ΔΕ- Χειμ

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

Διάλεξη 3η HTML intermediate

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ

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

databases linux - terminal (linux / windows terminal)

ΚΕΦΑΛΑΙΟ Web Services

Προγραμματισμός Παγκόσμιου Ιστού

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

PHP Functions. by George Girtsou Copyright All Rights Reserved. Με την επιφύλαξη κάθε νόμιμου δικαιώματος.

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ. Κεφάλαιο 5. Αλληλεπιδραστικές ιστοσελίδες (χρήση ετικέτας <FORM> και η τεχνική CGI)

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

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 1 17/01/2012

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

PHP/MySQL και Project

ΗΛΕΚΤΡΟΝΙΚΟ ΚΑΤΑΣΤΗΜΑ

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

Ανάκτηση Δεδομένων (Information Retrieval)

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση του DBDesigner. Γιώργος Πυρουνάκης - forky@di.uoa.gr

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. 3 η Γραπτή Εργασία ΠΛΗ 23 Ακαδημαϊκό Έτος ( Τόμος Β Κεφάλαια 1 4 ) Ημερομηνία Παράδοσης 25.3.

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

Cascading Style Sheets Φόρμες (Forms)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

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

Injection Attacks. Protocol Host FilePath. field1=valuex&field2=valuey. Query String. Web server HTTP GET.

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

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην HTML. Άννα Κεφάλα Παναγιώτα Μιχόλια

ΜΕΡΟΣ ΠΡΩΤΟ: Θεωρητική Προσέγγιση...15

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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


ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

«Δημιουργία Δυναμικών Ιστοσελίδων με PHP και MySQL στο Πανελλήνιο Σχολικό Δίκτυο»

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

1. Απαιτήσεις εργασίας

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

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

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

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

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

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

Άσκηση 6 Επαναληπτική Άσκηση HTML

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Εργαστήριο 4: Εργαλεία Συστήματος UNIX. Διδάσκων: Γιώργος Χατζηπολλάς. Στο εργαστήριο θα μελετηθούν: Εργαστηριακή Άσκηση 2 Παραδείγματα χρήσης awk

Το σχεσιακό μοντέλο βάσεων δεδομένων

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

11. Η γλώσσα HTML Πίνακες, Λίστες, Φόρμες

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Οδηγίες Ακολουθήστε τα παρακάτω βήματα. Βεβαιωθείτε ότι το πρόγραμμά σας δουλεύει σωστά σε κάθε βήμα, πριν προχωρήσετε στο επόμενο.

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

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

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

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

Βάσεις Δεδομένων (Databases)

για την Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών»

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

Transcript:

Σχεδίαση και Χρήση Βάσεων Δεδομένων Χρήση της PHP και επικοινωνία με τη MySQL Γιώργος Πυρουνάκης - forky@di.uoa.gr

Δομή Διάλεξης Βασικά στοιχεία για την PHP Χρήση της PHP σε command-line περιβάλλον Επικοινωνία της PHP με τη MySQL Χρήση της PHP για τη δημιουργία δυναμικών ιστοσελίδων 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 2

Γενικά στοιχεία Χρήση PHP5 Scripting γλώσσα ανοικτού κώδικα για γενική χρήση Αντικειμενοστραφής και διαδικαστική Ιδανική για την κατασκευή δυναμικών ιστοσελίδων Ο κώδικας εκτελείται στον εξυπηρέτη Εγχειρίδιο χρήσης http://www.php.net/docs.php Υποστήριξη πολλών ΣΔΒΔ (MySQL, Oracle, MS SQL Server, IBM DB2 κ.α.) 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 3

Βασικοί κανόνες σύνταξης Ο PHP κώδικας βρίσκεται ανάμεσα στα tags <?php και?> Η σύνταξη μοιάζει με της C Οι μεταβλητές ξεκινούν πάντα από $ Ο τύπος της μεταβλητής καθορίζεται από την τιμή που δίνεται Σχόλια // για μια σειρά /*.. */ για πολλές σειρές 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 4

Ένα απλό παράδειγμα <?php // A simple example $grade = 10; $name = 'Smith'; $phrase = "Grade of $name is $grade \n"; echo $phrase;?> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 5

Εκτέλεση σε command-line Χρήση του PHP Command Line Interface (CLI) Εκτέλεση σε command-line shell> {/usr/local/php/bin/}php test.php Ανάκτηση των παραμέτρων εκτέλεσης $argc (πλήθος παραμέτρων συν ένα) $argv[i] (χρήση της παραμέτρου i) Οτιδήποτε βρίσκεται εκτός των tags <?php και?> δεν επεξεργάζεται από τον parser 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 6

Εισαγωγή παραμέτρων <?php if ($argc!= 2) {?> Give as a parameter a word to print <?php } else { echo $argv[1],"\n"; }?> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 7

Σύνδεση PHP με MySQL Χρήση του MySQL Improved Extension (mysqli) Επικοινωνία με εκδόσεις της MySQL από 4.1.3 και μετά Πληροφορίες στο http://www.php.net/mysqli Σύνδεση με τον MySQL Server $link = mysqli_connect('polynikes.di.uoa.gr', 'user', 'password', 'test'); Κλείσιμο της σύνδεσης mysqli_close($link); 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 8

Έλεγχος σύνδεσης με τη ΒΔ test <?php $link = mysqli_connect("polynikes.di.uoa.gr", "forky", "password", "test"); if (!$link) { } printf("connect failed: %s\n", mysqli_connect_error()); exit(); printf("host information: %s\n", mysqli_get_host_info($link)); mysqli_close($link);?> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 9

Εκτέλεση απλών επερωτήσεων Εκτέλεση επερώτησης $result = mysqli_query($link, $query); Επιστροφή της τρέχουσας γραμμής ως μονοδιάστατο array $row = mysqli_fetch_row($result); echo $row[0],' ',$row[1]; Επιστροφή της τρέχουσας γραμμής ως αντικείμενο $obj = mysqli_fetch_object($result); echo $obj->sonoma,' ',$obj->sn; 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 10

<?php Εκτύπωση όλων των προμηθευτών $link = mysqli_connect("polynikes.di.uoa.gr", "forky", "password", "test");... mysqli_query($link,"set names greek"); $query="select SN, SONOMA FROM S"; if ($result = mysqli_query($link, $query)) { } while ($obj = mysqli_fetch_object($result)) { } printf ("%s (%s)\n", $obj->sonoma, $obj->sn); mysqli_free_result($result); mysqli_close($link);?> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 11

Προετοιμασμένες δηλώσεις (Ι) Χρησιμοποιούνται για τη δημιουργία επερωτήσεων με μεγαλύτερη ασφάλεια και απόδοση Μια προετοιμασμένη δήλωση (prepared statement) ελέγχεται μια φορά και αποθηκεύεται στον MySQL Server Προετοιμασία μιας δήλωσης $stmt = mysqli_prepare($link, "INSERT INTO S VALUES (?,?,?,?)"); Το? θα αντιστοιχηθεί στην τιμή μιας μεταβλητής Χρησιμοποιείται σε τιμές σύγκρισης στο WHERE ή σε τιμές στο VALUES() του INSERT 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 12

Προετοιμασμένες δηλώσεις (ΙI) Αντιστοίχηση μεταβλητών σε μια δήλωση mysqli_stmt_bind_param($stmt, "ssds", $sn, $sonoma, $katast, $spoli); Τύποι μεταβλητών: i (Integer), d (Double), s (String), b (Blob) Εκτέλεση δήλωσης mysqli_stmt_execute($stmt); Επιστροφή του αριθμού γραμμών που άλλαξαν, διαγράφηκαν ή εισήχθησαν mysqli_stmt_affected_rows($stmt); Κλείσιμο δήλωσης mysqli_stmt_close($stmt); 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 13

<?php Εισαγωγή νέου προμηθευτή.../* Κώδικας για σύνδεση με την test */ $stmt = mysqli_prepare($link, "INSERT INTO S VALUES (?,?,?,?)"); mysqli_stmt_bind_param($stmt, "ssds", $sn, $sonoma, $katast, $spoli); $sn = $argv[1]; $sonoma = $argv[2]; $katast = $argv[3]; $spoli = $argv[4]; mysqli_stmt_execute($stmt); printf("rows inserted: %d\n", mysqli_stmt_affected_rows($stmt)); mysqli_stmt_close($stmt); mysqli_close($link);?> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 14

Εισαγωγή δύο νέων προμηθευτή <?php.../* Κώδικας για σύνδεση με την test */ $stmt = mysqli_prepare($link, "INSERT INTO S VALUES (?,?,?,?)"); mysqli_stmt_bind_param($stmt, "ssds", $sn, $sonoma, $katast, $spoli); $sn = 'S7'; $sonoma = 'ΑΝΑΓΝΩΣΤΟΥ'; $katast = 20; $spoli = 'ΑΘΗΝΑ'; mysqli_stmt_execute($stmt); $sn = 'S8'; $sonoma = 'ΚΥΡΙΑΚΙΔΗΣ'; $katast = 10; $spoli = 'ΠΑΡΙΣΙ'; mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); mysqli_close($link);?> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 15

Προετοιμασμένες δηλώσεις (ΙII) Ανάλογη αντιστοίχηση ισχύει για την επιστροφή αποτελεσμάτων Τοποθετείται μετά τη mysqli_stmt_execute() Αντιστοίχηση μεταβλητών για επιστροφή αποτελεσμάτων mysqli_stmt_bind_result($stmt, $sn, $sonoma, $katast, $spoli); Ανάκτηση αποτελέσματος στις δεσμευμένες μεταβλητές mysqli_stmt_fetch($stmt); 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 16

<?php Εκτύπωση επιλεγμένου προμηθευτή.../* Κώδικας για σύνδεση με την test */ if ($stmt = mysqli_prepare($link, "SELECT * FROM S WHERE SN=?")) { } mysqli_stmt_bind_param($stmt, "s", $argv[1]); mysqli_stmt_execute($stmt); mysqli_stmt_bind_result($stmt, $sn, $sonoma, $katast, $spoli); mysqli_stmt_fetch($stmt); printf("%s %s %s %s \n", $sn, $sonoma, $katast, $spoli); mysqli_stmt_close($stmt); mysqli_close($link);?> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 17

Εκτύπωση προμηθευτών με δεδομένη κατάσταση <?php.../* Κώδικας για σύνδεση με την test */ if ($stmt = mysqli_prepare($link, "SELECT SN, SONOMA FROM S WHERE KATAST >?")) { $katast = $argv[1]; mysqli_stmt_bind_param($stmt, "i", $katast); mysqli_stmt_execute($stmt); mysqli_stmt_bind_result($stmt, $sn, $sonoma); printf ("Suppliers with status greater than %s \n", $katast); while (mysqli_stmt_fetch($stmt)) { printf("%s %s \n", $sn, $sonoma); } mysqli_stmt_close($stmt); } mysqli_close($link);?> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 18

Χρήση της include() Για να συμπεριλάβουμε ένα php αρχείο στον κώδικά μας include 'connect.php'; Ο κώδικας αυτός είναι διαθέσιμος από τη γραμμή που καλούμε το include και μετά Οι μεταβλητές που βρίσκονται μέσα στο καλούμενο αρχείο είναι διαθέσιμες στον κώδικα μας (με την καθορισμένη εμβέλεια) 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 19

Σύνδεση με τη ΒΔ test (connect.php) <?php $link = mysqli_connect("polynikes.di.uoa.gr", "forky", "password", "test"); if (!$link) { } printf("connect failed: %s\n", mysqli_connect_error()); exit(); mysqli_query($link,"set names utf8");?> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 20

Δημιουργία δυναμικών ιστοσελίδων Ενσωμάτωση κώδικα PHP σε κώδικα HTML Για την εμφάνιση ιστοσελίδων στο λογαριασμό του Τμήματος Πληροφορικής (http://www.di.uoa.gr/~username/test.php) login σε κάποιον server του di mkdir public_html δημιουργία των ιστοσελίδων στο directory public_html Ένα tutorial στα ελληνικά για βασική HTML http://www.it.uom.gr/project/htmlman/pages/ HTML 4.01 Specification http://www.w3.org/tr/html4/ 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 21

Η πρώτη μου ιστοσελίδα <html> <head> <title>test page</title> <meta http-equiv="content-type" content="text/html; charset=utf8"> </head> <body> <?php $name="γιώργος"; printf ("Το όνομα μου είναι %s.<br>",$name);?> </body> </html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 22

<html>... <body> <?php Πληροφορίες του εξυπηρέτη include 'connect.php'; printf ("Όνομα εξυπηρέτη: <b>%s</b><br>", $_SERVER['SERVER_NAME']); printf ("IP διεύθυνση εξυπηρέτη: <b>%s</b><br>", $_SERVER['SERVER_ADDR']); printf ("IP διεύθυνση πελάτη: <b>%s</b><br>", $_SERVER['REMOTE_ADDR']); printf ("PHP αρχείο: <b>%s</b><br>", $_SERVER['PHP_SELF']); mysqli_close($link);?> </body></html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 23

<html> <head> Εκτύπωση όλων των προμηθευτών (I) <title>print all suppliers</title> <meta http-equiv="content-type" content="text/html; charset=utf8"> </head> <body> <?php include 'connect.php'; $query="select SN, SONOMA FROM S"; if ($result = mysqli_query($link, $query)) { while ($obj = mysqli_fetch_object($result)) { printf ("<b>%s (%s)</b><br>", $obj->sonoma, $obj->sn); } 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 24

} Εκτύπωση όλων των προμηθευτών (II) mysqli_free_result($result); mysqli_close($link);?> </body> </html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 25

Διάβασμα παραμέτρων μέσω της HTTP GET Διάβασμα παραμέτρων από το URL Μετά το όνομα του αρχείου php ακολουθεί ένα? και ζεύγη της μορφής name=value διαχωρισμένα με το & Παράδειγμα http://www.di.uoa.gr/~forky/print_supplier.php?sn=s1 Προτιμότερο να χρησιμοποιείται μόνο για ανάκτηση δεδομένων (SELECT) και όχι για επεξεργασία της βάσης (π.χ. INSERT, UPDATE, κ.α.) Διάβασμα στην PHP μέσω της μεταβλητής $_GET['param'] 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 26

<html>... <body> <?php... Εκτύπωση επιλεγμένου προμηθευτή (I) mysqli_query($link,"set names utf8"); if ($stmt = mysqli_prepare($link, "SELECT * FROM S WHERE SN=?")) { $sn = $_GET['sn']; mysqli_stmt_bind_param($stmt, "s", $sn); mysqli_stmt_execute($stmt); mysqli_stmt_bind_result($stmt, $sn, $sonoma, $katast, $spoli); 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 27

Εκτύπωση επιλεγμένου προμηθευτή (II) if (mysqli_stmt_fetch($stmt)){ printf("τα στοιχεία του Προμηθευτή με κωδικό <b>%s</b> είναι: <br> Όνομα: <b>%s</b>, Κατάσταση: <b>%s</b>, Πόλη: <b>%s</b> <br>", $sn, $sonoma, $katast, $spoli); } else { printf("ο Προμηθευτής με κωδικό <b>%s</b> δεν υπάρχει!", $sn); } mysqli_stmt_close($stmt); } mysqli_close($link);?> </body> </html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 28

Διάβασμα παραμέτρων μέσω της HTTP POST Πέρασμα παραμέτρων με τη χρήση φόρμας Ετικέτες φόρμας <form method="post" action="print_posted_supplier.php">...</form> Στοιχεία ελέγχου (controls) <input type="text" name="sn"> Τύποι: text, checkbox, password, hidden, submit,... Κουμπί για την καταχώρηση της φόρμας <input type="submit" value="αναζήτηση"> Διάβασμα στην PHP μέσω της μεταβλητής $_POST['param'] 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 29

Φόρμα επιλογής προμηθευτή <html> <head> <title>post supplier number</title> <meta http-equiv="content-type" content="text/html; charset=utf8"> </head> <body> <form method="post" action="print_posted_supplier.php"> <h2>εισάγετε τoν κωδικό του Προμηθευτή</h2><br> <b>κωδικός </b><input type="text" name="sn"> <input type="submit" value="αναζήτηση"> </form> </body> </html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 30

<html>... <body> <?php Εκτύπωση επιλεγμένου προμηθευτή (I) include 'connect.php'; if ($stmt = mysqli_prepare($link, "SELECT * FROM S WHERE SN=?")) { $sn = $_POST['sn']; mysqli_stmt_bind_param($stmt, "s", $sn); mysqli_stmt_execute($stmt); mysqli_stmt_bind_result($stmt, $sn, $sonoma, $katast, $spoli); 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 31

Εκτύπωση επιλεγμένου προμηθευτή (II) if (mysqli_stmt_fetch($stmt)){ printf("τα στοιχεία του Προμηθευτή με κωδικό <b>%s</b> είναι: <br> Όνομα: <b>%s</b>, Κατάσταση: <b>%s</b>, Πόλη: <b>%s</b> <br>", $sn, $sonoma, $katast, $spoli); } else { printf("ο Προμηθευτής με κωδικό <b>%s</b> δεν υπάρχει!", $sn); } mysqli_stmt_close($stmt); } mysqli_close($link);?> <a href="post_supplier_number.html">επόμενη αναζήτηση</a> </body> </html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 32

Εισαγωγή νέου προμηθευτή (I) <html>... <body> <?php if (!$_POST['sn']) {?> <h2>εισάγετε τα στοιχεία του Προμηθευτή</h2><br> <form method="post" action="insert_supplier.php"> <table> <tr><td>κωδικός</td><td><input type="text" name="sn"></td></tr> <tr><td>όνομα</td><td><input type="text" name="sonoma"></td></tr> <tr><td>κατάσταση</td><td><input type="text" name="katast"></td></tr> <tr><td>πόλη</td><td><input type="text" name="spoli"></td></tr> </table> <input type="submit" value="προσθήκη"> </form> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 33

Εισαγωγή νέου προμηθευτή (II) <?php } else { }?> include 'connect.php'; $stmt = mysqli_prepare($link, "INSERT INTO S VALUES (?,?,?,?)"); mysqli_stmt_bind_param($stmt, "ssds", $sn, $sonoma, $katast, $spoli); $sn=$_post['sn']; $sonoma=$_post['sonoma']; $katast=$_post['katast']; $spoli=$_post['spoli']; mysqli_stmt_execute($stmt); printf("rows inserted: %d\n", mysqli_stmt_affected_rows($stmt)); mysqli_stmt_close($stmt); mysqli_close($link); </body></html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 34

Επεξεργασία στοιχείων προμηθευτή (I) <html>... <body> <?php include 'connect.php'; if ($stmt = mysqli_prepare($link, "SELECT * FROM S WHERE SN=?")) { $sn = $_GET['sn']; mysqli_stmt_bind_param($stmt, "s", $sn); mysqli_stmt_execute($stmt); mysqli_stmt_bind_result($stmt, $sn, $sonoma, $katast, $spoli); if (mysqli_stmt_fetch($stmt)) { 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 35

Επεξεργασία στοιχείων προμηθευτή (II) echo <<<FORM_HTML <form method="post" action="update_supplier.php"> <h2>ενημερώστε τα στοιχεία του Προμηθευτή με κωδικό $sn</h2><br> <table> <tr><td>όνομα</td><td><input type="text" name="sonoma" value="$sonoma"></td></tr> <tr><td>κατάσταση</td><td><input type="text" name="katast" value="$katast"></td></tr> <tr><td>πόλη</td><td><input type="text" name="spoli" value="$spoli"></td></tr> </table> <input type="hidden" name="sn" value="$sn"> <input type="submit" value="ενημέρωση"> </form> FORM_HTML; 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 36

} } else { Επεξεργασία στοιχείων προμηθευτή (III) printf("ο Προμηθευτής με κωδικό <b>%s</b> δεν υπάρχει!", $sn); } mysqli_stmt_close($stmt); mysqli_close($link);?> </body> </html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 37

<?php Ενημέρωση στοιχείων προμηθευτή if ($_POST['sn']) { }?> include 'connect.php'; $stmt = mysqli_prepare($link, "UPDATE S SET SONOMA=?, KATAST=?, SPOLI=? WHERE SN=?"); mysqli_stmt_bind_param($stmt, "sdss", $sonoma, $katast, $spoli, $sn); $sn=$_post['sn']; $sonoma=$_post['sonoma']; $katast=$_post['katast']; $spoli=$_post['spoli']; mysqli_stmt_execute($stmt); printf("rows updated: %d\n", mysqli_stmt_affected_rows($stmt)); mysqli_stmt_close($stmt); mysqli_close($link); 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 38

Επιλογή προμηθευτή από πίνακα ονομάτων (Ι) <html>... <body> <table border="2"> <tr> <td><b>α/α</b></td> <td><b>όνομα Προμηθευτή</b></td> </tr> <?php include 'connect.php'; $query="select SN, SONOMA FROM S"; 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 39

Επιλογή προμηθευτή από πίνακα ονομάτων (ΙΙ) if ($result = mysqli_query($link, $query)) { } $i=1; while ($obj = mysqli_fetch_object($result)) { printf ("<tr><td>%d</td><td><a href='print_given_supplier.php?sn=%s'>%s</a></td></ tr>",$i,$obj->sn,$obj->sonoma); } $i++; mysqli_free_result($result); mysqli_close($link);?> </table> </body> </html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 40

Επιλογή προμηθευτή από λίστα κωδικών (Ι) <html>... <body> <form method="get" action="print_given_supplier.php"> <b>κωδικοί Προμηθευτή</b> <select name="sn"> <?php include 'connect.php'; $query="select SN FROM S"; if ($result = mysqli_query($link, $query)) { while ($obj = mysqli_fetch_object($result)) { } printf ("<option>%s\n", $obj->sn); 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 41

Επιλογή προμηθευτή από λίστα κωδικών (ΙI) mysqli_free_result($result); } mysqli_close($link);?> </select> <br> <input type="submit" value="αναζήτηση"> </form> </body> </html> 14/11/2007 Σχεδίαση και Χρήση Βάσεων Δεδομένων 42