Βάσεις Δεδομένων με Εφαρμογές στο Διαδίκτυο

74
Βάσεις Δεδομένων με Εφαρμογές στο Διαδίκτυο Θεοδώρα Α. Μαγουλιώτη, ΠΕ19

Transcript of Βάσεις Δεδομένων με Εφαρμογές στο Διαδίκτυο

Βάσεις Δεδομένων με Εφαρμογές στο ΔιαδίκτυοΘεοδώρα Α. Μαγουλιώτη, ΠΕ19

Το Περιβάλλον Εργασίας Σελίδες δυναμικού περιεχομένου για τον ιστό είναι οι σελίδες που το κείμενο που

περιέχουν δεν είναι στατικό αλλά αλλάζει ανάλογα με τα κλικ του χρήστη πάνω σε διάφορα λινκς. Το περιεχόμενο των σελίδων αυτών συνήθως περιέχεται μέσα σε μια βάση δεδομένων. Ενώ οι στατικές σελίδες μπορούν να φτιαχτούν με html οι δυναμικές σελίδες απαιτούν μια γλώσσα προγραμματισμού για τον ιστό π.χ. php, jsp, jsf κ.λπ. για να λειτουργήσουν.

Το λογισμικό που απαιτείται για να φτιάξουμε και να ελέγξουμε εφαρμογές δυναμικού περιεχομένου για τον ιστό είναι: ένας web-server (π.χ. Apache, Apache Tomcat), μια γλώσσα προγραμματισμού για διαχείριση δυναμικού περιεχομένου (π.χ. php,

java/jsp), μια βάση δεδομένων για να κρατά το δυναμικό περιεχόμενο (π.χ. MySQL), (προαιρετικά) εργαλεία διαχείρισης της βάση δεδομένων όπως π.χ.

phpmyadmin. Να αναφέρουμε ότι όλο το απαιτούμενο λογισμικό πρόκειται για δωρεάν λογισμικό, το

λεγόμενο Λογισμικό Ανοιχτού Κώδικα. Για την εγκατάσταση της υποδομής που χρειάζεται για να φτιάξουμε εφαρμογές για

τον ιστό, υπάρχουν διάφορα ολοκληρωμένα λογισμικά όπως το xampp, wamp κ.λπ. τα οποία εγκαθιστούν μονομιάς ό,τι απαιτείται για να δημιουργήσει και να τεστάρει κανείς ιστοσελίδες δυναμικού περιεχομένου.

XAMPP

Το XAMPP είναι ένα πακέτο προγραμμάτων ελεύθερου λογισμικού, λογισμικού ανοικτού κώδικα και ανεξαρτήτου πλατφόρμας το οποίο περιέχει τον εξυπηρετητή ιστοσελίδων http Apache, την βάση δεδομένων MySQL και ένα διερμηνέα για κώδικα γραμμένο σε γλώσσες

προγραμματισμού PHP και Perl. Το XAMPP είναι ακρωνύμιο και αναφέρεται στα παρακάτω αρχικά:

X (αναφέρεται στο «cross-platform» που σημαίνει λογισμικό ανεξάρτητο πλατφόρμας, τρέχει σε Microsoft Windows, Linux, Solaris, and Mac OS X).

Apache HTTP εξυπηρετητής. MySQL. PHP. Perl.

Εγκατάσταση XAMPP

http://xoops.gr/modules/publisher/item.php?itemid=12

Ξεκινώντας με την PHP – Τι θα μάθουμε;

Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts

Τι χρειάζεται για να ξεκινήσουμε με την PHP

Να δημιουργήσουμε και να τρέξουμε ένα απλό script

HTML – PHP

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

Η PHP είναι μια γλώσσα προγραμματισμού η οποία επεκτείνει τις δυνατότητες της HTML δίνοντας τη δυνατότητα να δημιουργήσουμε δυναμικές ιστοσελίδες.

Πλεονεκτήματα της PHP

Ευκολία στη χρήση Ανοιχτού κώδικα (Open Source) Υποστήριξη πολλαπλών πλατφόρμων Απόδοση Υποστήριξη Βάσεων Δεδομένων

Προσπέλαση PHP σελίδων

Ξεκινώντας με την PHP

Για να δημιουργήσουμε και να δημοσιεύσουμε ένα PHP script χρειαζόμαστε:Ένα web server με υποστήριξη PHPΈνα υπολογιστή/πελάτη με ένα απλό text

editor και σύνδεση στο InternetΛογισμικό FTP

Βασικά Βήματα

Τα βασικά βήματα για τη δημιουργία και την δημοσίευση PHP σελίδων είναι τα εξής: Δημιουργία του PHP script και αποθήκευση στον

τοπικό δίσκο Χρήση λογισμικού FTP για την αποθήκευση του

αρχείου στον server Πρόσβαση στο αρχείο μέσω ενός web browser.

Δημιουργία PHP script

Μπορούμε να χρησιμοποιήσουμε διάφορους editors για τη δημιουργία PHP scripts Τα PHP script ξεκινάνε με <?php και τελειώνουν με ?> Μεταξύ των δυο tags υπάρχει μια απλή εντολή

Αν υπάρχει συντακτικό λάθος

Έστω ότι κάνουμε το ακόλουθο συντακτικό λάθος:

<?phpprint ( “A simple initial script);

?>

Σχόλια στην PHP

Τα σχόλια μας βοηθούν σε μελλοντική επεξεργασία.

Οι γραμμές των σχολίων αγνοούνται όταν εκτελούνται τα script και δεν επιβραδύνουν την ταχύτητα εκτέλεσης.

Τα σχόλια έχουν δυο βασικούς σκοπούς: Περιγράφουν την λειτουργία και το σκοπό του script Περιγράφουν συγκεκριμένα σημεία του κώδικα που είναι

περίπλοκα

Χρήση σχολίων

Χρήση //<?php// This is a comment?>

Μπορεί επίσης να τοποθετηθεί στην ίδια γραμμή με μια έκφραση:<?phpprint ("A simple initial script"); //Output a line?>

Εναλλακτικοί τρόποι σχολίων

Η PHP παρέχει και δυο εναλλακτικούς τρόπους σχολιασμού.<?phpphpinfo(); # This is a built-in function?>

Σχολιασμός πολλαπλών γραμμών. <?php/*A script that gets information about thePHP version being used.*/phpinfo(); ?>

Χρήση PHP Μεταβλητών

Οι Μεταβλητές χρησιμοποιούνται για να αποθηκεύονται και να προσπελάζονται δεδομένα στη μνήμη του υπολογιστή.

Το όνομα τις μεταβλητής χρησιμοποιείται μέσα στο script για να αναφερόμαστε στα δεδομένα του.

$cost = 4.25; $months = 12;

Name of variable Variables new value

Θέτουμε τιμές στις Μεταβλητές

Θέτουμε τιμές στις μεταβλητές:$days = 3;

$newdays = 100;

$days = $newdays;

Στο τέλος αυτών των τριών γραμμών η $days και $newdays έχουν και οι δύο την τιμή 100.

Επιλογή Ονομάτων Μεταβλητών

Μπορούμε να επιλέξουμε οποιονδήποτε χαρακτήρα για το όνομα των μεταβλητών στην PHP, αλλά πρέπει να ισχύουν τα εξής: Χρήση του δολαρίου ($) ως πρώτο χαρακτήρα Χρήση γράμματος ή underscore (_) ως δεύτερο

χαρακτήρα Σημείωση: Προσπαθήστε να διαλέγετε ονόματα

που να περιγράφουν τη δουλειά που κάνει η μεταβλητή. Π.χ. η χρήση της $counter είναι πιο περιγραφική από την $c ή $ctr.

Χρήση μεταβλητών με την print

Για να εμφανίσουμε τα περιεχόμενα της μεταβλητής $x, γράφουμε την ακόλουθη εντολή:echo ("$x");

Το παρακάτω θα εμφανίσει “Ο Νίκος είναι 6 ετών”.$age=6;

echo ("Ο Νίκος είναι $age ετών.");

ή

print ("Ο Νίκος είναι $age ετών.");

Ένα παράδειγμα…

1. <html>2. <head> <title>Variable Example </title> </head>3. <body>4. <?php5. $first_num = 12;6. $second_num = 356;7. $temp = $first_num;8. $first_num = $second_num;9. $second_num = $temp;10. echo ("first_num= $first_num <br> second_num=$second_num");11. ?> </body> </html>

Αριθμητικοί τελεστές

Μπορούμε να χρησιμοποιήσουμε αριθμητικούς τελεστές όπως το (+) και το (-) για να κάνουμε αριθμητικές πράξεις.

Παράδειγμα<?php$x = 12;$y = 14;$z = $x + $y;echo ("The total number of fruit is $z");?>

Άσκηση 1

Βρείτε τα λάθη στο παρακάτω PHP πρόγραμμα:

<? php

print ‘How are you?’;

print ‘I’m fine.’;

??>

Λύση Άσκησης 1

Η ετικέτα για την δήλωση της αρχής του προγράμματος PHP θα έπρεπε να είναι <?php, χωρίς κανένα κενό διάστημα (όπως συμβαίνει εδώ).

Όσον αφορά τα αλφαριθμητικά στις print εντολές θα πρέπει να περικλείονται σε διπλά εισαγωγικά και παρενθέσεις.

Η ετικέτα για τη δήλωση του τέλους του προγράμματος PHP θα έπρεπε να είναι ?> και όχι ??>.

Άσκηση 2

Γράψτε ένα πρόγραμμα που θα υπολογίζει το συνολικό κόστος του παρακάτω γεύματος: 2 γύροι σε λαδόπιτα (2,5€ έκαστος), μια μερίδα πατάτες (2€) και δύο αναψυκτικά (1€ το καθένα). Ο ΦΠΑ είναι 19%, ενώ το ποσοστό του φιλοδωρήματος είναι 16%.

Λύση Άσκησης 2

<?php$pites=2*2.5;$patates=2;$pota=2*1;$sum=$pites+$patates+$pota;$fpa=$sum*19/100;$tip=$sum*16/100;$total=$sum+$fpa+$tip;print ("Total cost of the meal is: $total euros");

?>

Άσκηση 3

Μεταβάλλεται κατάλληλα το προηγούμενο πρόγραμμα έτσι ώστε να εκτυπώνεται ένας συνολικός λογαριασμός. Για κάθε αντικείμενο του γεύματος θα εκτυπώνεται η τιμή τεμαχίου, η ποσότητα και το συνολικό κόστος (χωρίς καμιά προσαύξηση, με τον ΦΠΑ και με το φιλοδώρημα).

Λύση Άσκησης 3<html><?php

$pites=2*2.5;$patates=1*2;$pota=2*1;$sum=$pites+$patates+$pota;$fpa=$sum*19/100;$tip=$sum*16/100;$total=$sum+$fpa+$tip;print ("2 μερίδες πίτα γύρο, ανά 2.5 euros το τεμάχιο: σύνολο $pites euros");echo("<br>");print ("1 μερίδα πατάτες, ανά 1 euros το τεμάχιο: σύνολο $patates euros"); echo("<br>");print ("2 αναψυκτικά, ανά 1 euros το τεμάχιο: σύνολο $pota euros"); echo("<br>");print("Food and Drink Total: $sum euros");echo("<br>");print("Total with Tax: $fpa euros");echo("<br>");print("Total with Tip: $tip euros");

?></html>

Άσκηση 4

Γράψτε ένα πρόγραμμα που θα αποθηκεύει το όνομά σας στην μεταβλητή $first_name και το επίθετό σας στην μεταβλητή $last_name. Αμέσως μετά, το πρόγραμμα θα εκτυπώνει το πλήρες ονοματεπώνυμο, με το μήκος του.

Λύση Άσκησης 4

<html><?php

$first_name='Dora';$last_name="Magoulioti";$total_name = $first_name . " " . $last_name; print ("My name is '$total_name' with length: ");print (strlen($total_name));print (" characters.");

?></html>

Άσκηση 5

Γράψτε ένα πρόγραμμα που θα χρησιμοποιεί τον τελεστή αύξησης ++ (π.χ. i++, αυξάνεται το i κατά 1) και τον τελεστή ανάθεσης *= (π.χ. i*=3, πολλαπλασιάζεται το i επί 3, οπότε η νέα τιμή του i είναι η παλιά του επί 3) για την εκτύπωση των αριθμών από το 1 ως το 5 και των αντίστοιχων δυνάμεων του 2 (από 21 ως και 25).

Λύση Άσκησης 5

<html><?php

$i=1; $j=2;print ("$i $j");echo("<br>");$i++; $j*=2;print ("$i $j");echo("<br>");$i++; $j*=2;print ("$i $j");echo("<br>");$i++; $j*=2;print ("$i $j");echo("<br>");$i++; $j*=2;print ("$i $j");

?></html>

Συνθήκες Ελέγχου

Οι συνθήκες ελέγχου ορίζονται όπως ακριβώς στη C. Παραδείγματα:

<html><body>

<?php $k = 143; if (fmod($k,2)==0) echo $k." is even"; else echo $k." is odd";?>

</body></html>

<html><body>

<?php $i=0; while($i<=5) { echo "Number: ".$i."<br>"; $i++; }?>

</body></html>

<html><body>

<?php for ($i=1; $i<=5; $i++) { echo "Hello World!<br>"; }?>

</body></html>

Άσκηση 6

Bρείτε αν οι παρακάτω εκφράσεις είναι false ή true: 100.000 – 100 (false) “zero” (true) “false” (true) 0 + “true” (false) 0.000 (false) «0.0» (true) Strcmp(«false», «False») (true)

Άσκηση 7 Bρείτε το αποτέλεσμα του παρακάτω προγράμματος:

$age=12; $shoe_size=13; if ($age>$shoe_size) { print ("message 1. <BR>"); } elseif ( ($shoe_size++) && ($age>20) ) { print ("message 2. <BR>"); } else { print ("message 3. <BR>"); } print ("Age: $age, Shoe size: $shoe_size <BR>");

Συζητείστε τη διαφορά να χρησιμοποιηθεί η elseif ( ($age>20) && ($shoe_size++) )

αντί της elseif ( ($shoe_size++) && ($age>20) )

Άσκηση 8

Χρησιμοποιήστε την εντολή while() για να εμφανίσετε τις θερμοκρασίες σε βαθμούς Celcius και Fahrenheit από τους -50 ως και τους 50 βαθμούς Fahrenheit (ανά 5). Σημείωση: Για την μετατροπή από βαθμούς Fahrenheit θα πρέπει να αφαιρέσουμε το 32 από την αρχική μας θερμοκρασία, να πολλαπλασιάσουμε με το 5 και να διαιρέσουμε με το 9.

Λύση Άσκησης 8

<html><?php

$fahr=-50;$stop_fahr=50;print ("<table>");print ("<tr><th>Fahrenheit</th><th>Celcius</th></tr>");while ($fahr <= $stop_fahr){

$celcius = ($fahr - 32) * 5 / 9;print ("<tr><th>$fahr</th><th>$celcius</th></tr>");$fahr += 5;

}print ("<table>");

?></html>

Άσκηση 9

Ξαναγράψτε τη λύση της άσκησης 7, χρησιμοποιώντας όμως την εντολή for().

Λύση Άσκησης 9

<html><?php

print ("<table>");print ("<tr><th>Fahrenheit</th><th>Celcius</th></tr>");for ($fahr = -50; $fahr <= 50; $fahr+=5){

$celcius = ($fahr - 32) * 5 / 9;print ("<tr><th>$fahr</th><th>$celcius</th></tr>");

}print ("<table>");

?></html>

Πίνακες – Arrays (1)

//Πίνακας με όνομα $vegetables και με αλφαριθμητικά κλειδιά$vegetables[‘corn’] = ‘yellow’;$vegetables[‘beet’] = ‘red’;$vegetables[‘carrot’] = ‘orange’;//Πίνακας με όνομα $dinner και με αριθμητικά κλειδιά$dinner[0] = ‘Sweet corn and Asparagus’;$dinner[1] = ‘Lemon Chicken’;$dinner[2] = ‘Braised Bamboo Fungus’;//Πίνακας με όνομα $computers και με αλφαριθμητικά και αριθμητικά

κλειδιά$computers[‘trs-80’] = ‘Radio Shack’;$computers[2600] = ‘Atari’;$computers[‘Adam’] = ‘Coleco’;

Πίνακες – Arrays (2)

Εναλλακτικά, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση array

$vegetables = array(“corn” => “yellow”, “beet” => “red”, “carrot” => “orange”);

$dinner = array(0 => “Sweet corn and Asparagus”, 1 => “Lemon Chicken”, 2 => “Braised Bamboo Fungus”);

$computers = array(“trs-80” => “Radio Shack”, 2600 = “Atari”, “Adam” = “Coleco”);

Λύση Άσκησης 10 (1)Σύμφωνα με τις τελευταίες στατιστικές (απογραφή του 2000), οι 10 μεγαλύτερες σε πληθυσμό πόλεις των Η.Π.Α. είναι οι παρακάτω:

Πόλη Πολιτεία (αρχικά, στα αγγλικά) Πληθυσμός

Νέα Υόρκη (New York) Νέα Υόρκη (NY) 8.008.278

Λος Άντζελες (Los Angeles) Καλιφόρνια (CA) 3.694.820

Σικάγο (Chicago) Ιλινόϊς (IL) 2.896.016

Χιούστον (Houston) Τέξας (TX) 1.953.631

Φιλαδέλφεια (Philadelphia) Πενσιλβάνια (PA) 1.517.550

Φοίνιξ (Phoenix) Αριζόνα (AZ) 1.321.045

Σαν Ντιέγκο (San Diego) Καλιφόρνια (CA) 1.223.400

Ντάλας (Dallas) Τέξας (TX) 1.188.580

Σαν Αντόνιο (San Antonio) Τέξας (TX) 1.144.646

Ντιτρόιτ (Detroit) Μισιγκαν (MI) 951.270

Λύση Άσκησης 10 (2)Γράψτε ένα πρόγραμμα σε PHP που θα ορίζει έναν πίνακα που θα περιέχει αυτά τα στοιχεία και θα τον εκτυπώνει σε μορφή HTML, μαζί με το συνολικό πληθυσμό των 10 πόλεων.

<html><?php

$population = array(“New York, NY” => 8008278, “Los Angeles, CA” => 3694820, “Chicago, IL” => 2896016, “Houston, TX” => 1953631, “Philadelphia, PA” => 1517550, “Phoenix, AZ” => 1321045, “San Diego, CA” => 1223400, “Dallas, TX” => 1188580, “San Antonio, TX” => 1144646, “Detroit, MI” => 951270);

$total_population = 0;print “<table><tr><th>City</th><th>Population</th></tr>\n”;foreach ($population as $city => $people){

$ total_population += $people;print “<tr><td>$city</td><td>$people</td></tr>\n”;

} print “<tr><td>Total</td><td>$total_population</td></tr>\n”;print “</table>\n”

?></html>

Συναρτήσεις ή Μέθοδοι (1)Είναι ένα μικρό σύνολο εντολών που μπορούμε να τις χρησιμοποιήσουμε ως μία μόνο εντολή, σε ένα ή και περισσότερα σημεία του προγράμματός μας. Οι συναρτήσεις είναι: οι built-in, δηλαδή έχουν κατασκευαστεί από τους ανθρώπους που έχουν αναπτύξει την php, δικές μας συναρτήσεις.

ΠΑΡΑΔΕΙΓΜΑ (1)

<?php

page_header();

print "Καλωσόρισες χρήστη Δώρα!";

page_footer();

function page_header()

{

print '<html><head><title>Καλωσόρισες στο site μου</title></head>';

print '<body bgcolor=rgb(0,0,0)>';

}

function page_footer()

{

print '<hr>Σ\' ευχαριστώ για την επίσκεψή σου... Σε περιμένω ξανά...';

print '</body></html>';

}?>

Συνάρτηση χρήστη χωρίς ορίσματα

Συνάρτηση χρήστη χωρίς ορίσματα

built-in συνάρτηση

με 3 ορίσματα

Συναρτήσεις ή Μέθοδοι (2)ΠΑΡΑΔΕΙΓΜΑ (2)

<?php

page_header(0, 0, 255);

print "Καλωσόρισες χρήστη Δώρα!";

page_footer();

function page_header($r, $g, $b)

{

print '<html><head><title>Καλωσόρισες στο site μου</title></head>';

print '<body bgcolor=rgb($r,$g,$b)>';

}

function page_footer()

{

print '<hr>Σ\' ευχαριστώ για την επίσκεψή σου... Σε περιμένω ξανά...';

print '</body></html>';

}

?>

Συνάρτηση χρήστη με 3 ορίσματα (ή παραμέτρους)

Συνάρτηση χρήστη χωρίς

ορίσματα

built-in συνάρτηση με 3 ορίσματα

Συναρτήσεις ή Μέθοδοι (3)ΠΑΡΑΔΕΙΓΜΑ (3)

<?php

page_header('Καλωσόρισες στο υπέροχο site μου!!!‘,0, 0, 255);

print "Καλωσόρισες χρήστη Δώρα!";

page_footer();

function page_header($ht,$r, $g, $b)

{

print '<html><head><title>’.$ht.’</title></head>';

print '<body bgcolor=rgb($r,$g,$b)>';

}

function page_footer()

{

print '<hr>Σ\' ευχαριστώ για την επίσκεψή σου... Σε περιμένω ξανά...';

print '</body></html>';

}

?>

Συνάρτηση χρήστη με 4 ορίσματα (ή παραμέτρους)

Συνάρτηση χρήστη χωρίς

ορίσματα

built-in συνάρτηση με 3 ορίσματα

Συναρτήσεις ή Μέθοδοι (4)ΠΑΡΑΔΕΙΓΜΑ (4)

<?php

$total = restaurant_check(15.22, 8.25, 15);

print 'Έχω 20 ευρώ, οφείλω για το γεύμα μου ' . round($total,2) . ' ευρώ, οπότε θα πληρώσω με ... ';

if ($total > 20)

print "κάρτα.";

else

print "μετρητά.";

function restaurant_check($meal, $tax, $tip)

{

$tax_amount = $meal * ($tax/100);

$tip_amount = $meal * ($tip/100);

$total_amount = $meal + $tax_amount + $tip_amount;

return $total_amount;

}

?>

Συνάρτηση που επιστρέφει 1 τιμή

Συναρτήσεις ή Μέθοδοι (5)ΠΑΡΑΔΕΙΓΜΑ (5)

<?php

$totals = restaurant_check(15.22, 8.25, 15);

print 'Έχω 20 ευρώ, οφείλω για το γεύμα μου ' . round($totals[1],2) . ' ευρώ, οπότε θα πληρώσω με ... ';

if ($totals[1] > 20)

print "κάρτα.<br>";

else

print "μετρητά.<br>";

print "Το φιλοδώρημα μου κοστίζει " . ($totals[1]-$totals[0]);

function restaurant_check($meal, $tax, $tip)

{

$tax_amount = $meal * ($tax/100);

$tip_amount = $meal * ($tip/100);

$total_notip = $meal + $tax_amount;

$total_tip = $meal + $tax_amount + $tip_amount;

return array($total_notip, $total_tip);

}

?>

Συνάρτηση που επιστρέφει 2

τιμές

Κατασκευάζοντας Φόρμες Ιστοχώρου (1)ΠΑΡΑΔΕΙΓΜΑ (1)

<form method="post" action="

<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);

#$_SERVER: Ο πίνακας αυτός περιέχει μια σειρά πληροφοριών σχετικά με τον server και

# την αίτηση που είναι τη διαδεδομένη στιγμή υπό επεξεργασία.

#PHP_SELF: Περιέχει την πλήρη τοποθεσία του προγράμματος.

?>

">

Name: <input type= "text" name= "my_name">

<input type= "submit" name= "submit">

</form>

<?php

print "<br>";

print "$_SERVER[SERVER_NAME]";

#SERVER_NAME: Το όνομα του site στο οποίο εκτελείται ο interpreter της PHP.

print "<br>";

print "$_SERVER[DOCUMENT_ROOT]";

#DOCUMENT_ROOT: Ο φάκελος (στον υπολογισή του server) στον οποίο βρίσκονται

# όλα τα αρχεία του site στα οποία έχουμε πρόσβαση.

print "<br>";

Κατασκευάζοντας Φόρμες Ιστοχώρου (1) … συνέχεια

ΠΑΡΑΔΕΙΓΜΑ (1 … συνέχεια)

print "$_SERVER[REMOTE_ADDR]";

#REMOTE_ADDR: Η διεύθυνση IP του χρήστη που κάνει την αίτηση στον web server.

print "<br>";

print "$_SERVER[HTTP_USER_AGENT]";

#HTTP_USER_AGENT: Ο web browser στον οποίο εμφανίζεται η ιστοσελίδα που περιέχει τη φόρμα.

print "<br>";

print "<br>";

print "<br>";

print "Υου are entered: ";

if (array_key_exists('my_name', $_POST))

echo $_POST['my_name'];

?>

Κατασκευάζοντας Φόρμες Ιστοχώρου (2)ΠΑΡΑΔΕΙΓΜΑ (2)

<?php

if (array_key_exists('name', $_POST))

$name=$_POST['name'];

else

$name = "";

?>

<h2>PHP Form Validation Example</h2>

<p>* required field.</p>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Name: <input type="text" name="name" value="<?php echo $name; ?>">

<input type="submit" name="submit" value="Submit">

</form>

<?php

echo "<h2>Your Input:</h2>";

if (array_key_exists('name', $_POST))

{

echo $_POST['name'];

$name=$_POST['name'];

}

?>

Κατασκευάζοντας Φόρμες Ιστοχώρου (3)

Άσκηση 11

Επεκτείνετε το παράδειγμα (2) ώστε εκτός από το name, επιπλέον απαιτούμενα στοιχεία να είναι το Last_name, το email, το address και το phone_number.

Άσκηση 12

Επεκτείνετε την άσκηση 11 ώστε το phone_number να δέχεται αποκλειστικά 10 ψηφία.

Κατασκευάζοντας Φόρμες Ιστοχώρου με ΛΙΣΤΕΣ – μονή επιλογή (1)

<?php if (array_key_exists('category', $_POST))

$category=$_POST['category'];else

$category = "";?>

<h2>PHP Form Example - Lists</h2><form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

<select name="category" value="<?php echo $category; ?>"><option>Διάλεξε κατηγορία...</option><option>Ορεκτικά</option><option>Σούπες</option><option>Της ώρας</option></select><input type="submit" name="submit"> </form>

<?php

echo "<h2>Έχεις εισάγει:</h2>";if (array_key_exists('category', $_POST)){

echo $_POST['category'];$category=$_POST['category'];

}?>

Κατασκευάζοντας Φόρμες Ιστοχώρου με ΛΙΣΤΕΣ – πολλαπλή επιλογή (2)

<?phpif(isset($_POST['category'])){

$choices = $_POST['category'];if (isset($choices))

$nchoices = count($choices);

}$es = 0;

?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Διάλεξε τις κατηγορίες που θέλεις (κράτα το Cntrl για πολλαπλές επιλογές):<br><select multiple="multiple" name="category[]"><?php

print "<option>Ορεκτικά</option>";print "<option>Σούπες</option>";print "<option>Της ώρας</option>";print "<option>Μαγειρευτά</option>";print "<option>Ζυμαρικά</option>";

?></select><input type="submit" name="submit"> </form>

<?php

If (isset($_POST['category'])){ $choices = $_POST['category']; if (isset($choices)) { $nchoices = count($choices); print "Έχεις επιλέξει $nchoices κατηγορίες, ως εξής:"; echo("</p>"); for($i=0; $i < $nchoices-1; $i++) { echo($choices[$i] . ", "); } echo($choices[$i] . "."); echo("</p>");}Else echo("Δεν έχεις επιλέξει καμία κατηγορία...");?>

The isset () function is used to check whether a variable is set or not.

Κατασκευάζοντας Φόρμες Ιστοχώρου με ΛΙΣΤΕΣ – πολλαπλές επιλογές (3)

<?php if (isset($_POST['category'])) { $choices = $_POST['category']; if (isset($choices)) $nchoices = count($choices); } $es = 0; ?><form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Διάλεξε τις κατηγορίες που θέλεις (κράτα το Cntrl για πολλαπλές επιλογές):<br><table><tr><td><select multiple="multiple" name="category[]"> <?php $apa = 0; for ($i=0; $i < $nchoices; $i++) if ($choices[$i]=="Ορεκτικά") $apa = 1; if ($apa==1) { print "<option selected>Ορεκτικά</option>"; $eo = 1; } else { print "<option>Ορεκτικά</option>"; $eo = 0; } $apa = 0; for ($i=0; $i < $nchoices; $i++) if ($choices[$i]=="Σούπες") $apa = 1; if ($apa==1) { print "<option selected>Σούπες</option>"; $es = 1; } else { print "<option>Σούπες</option>"; $es = 0; } $apa = 0; for($i=0; $i < $nchoices; $i++) if ($choices[$i]=="Της ώρας") $apa = 1;

if ($apa==1) print "<option selected>Της ώρας</option>";else print "<option>Της ώρας</option>"; $apa = 0;for($i=0; $i < $nchoices; $i++)

if ($choices[$i]=="Μαγειρευτά") $apa = 1; if ($apa==1) print "<option selected>Μαγειρευτά</option>"; else print "<option>Μαγειρευτά</option>"; $apa = 0;for($i=0; $i < $nchoices; $i++)

if ($choices[$i]=="Ζυμαρικά") $apa = 1; if ($apa==1) print "<option selected>Ζυμαρικά</option>"; else print "<option>Ζυμαρικά</option>"; ?> </select>

<input type="submit" name="submit"> </td> <?php if ($eo == 1) print "<td>Ορεκτικά <br> <select multiple=\"multiple\" name = \"or[]\">

<option>Κολοκυθοκεφτέδες</option><option>Μανιτάρια Αλά Κρεμ</option><option>Μελιντζάνες στο φούρνο με

τυριά</option> </select> </td>"; ?><?php

if ($es == 1) print "<td>Σούπες <br> <select multiple=\"multiple\" name = \"so[]\"> <option>Μανιταρόσουπα</option> <option>Κολοκυθόσουπα</option> <option>Ντοματόσουπα</option> </select> </td>";?></tr></table></form><?php if(isset($_POST['category'])) { $choices = $_POST['category']; if (isset($choices)) { $nchoices = count($choices); print "Έχεις επιλέξει $nchoices κατγηγορίες, ως εξής:"; echo("</p>"); for($i=0; $i < $nchoices; $i++) { echo($choices[$i] . " "); } echo("</p>"); } else echo("Δεν έχεις επιλέξει καμία κατηγορία..."); }?>

Κατασκευάζοντας Φόρμες Ιστοχώρου με ΛΙΣΤΕΣ – radio buttons (1)

Κατασκευάζοντας Φόρμες Ιστοχώρου με ΛΙΣΤΕΣ – radio buttons (2)

<?php if (array_key_exists('name', $_POST))

$name=$_POST['name'];else

$name = "";if (array_key_exists('gender', $_POST))

$gender=$_POST['gender'];else

$gender = "";?><h1><font size = 6 color=#DD0055>PHP Form Validation Example</font></h1><font size = 4 color=#DD0055>*required field.</font><br>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Name: <input type="text" name="name" value="<?php echo $name;?>"> <font size = 4 color=#DD0055>*</font><br><br>

E-mail: <input type="text" name="email"> <font size = 4 color=#DD0055>*</font><br> <br> Website: <input type="text" name="website"> <br> <br>

Comment: <textarea name="comment" rows="5" cols="40"></textarea> <br><br>

Gender:<input type="radio" name="gender" <?php if ($gender=="female") echo "checked";?> value="female">Female<input type="radio" name="gender" <?php if ($gender=="male") echo "checked";?> value="male">Male<font size = 4 color=#DD0055>*</font><br><br><input type="submit" name="submit"> <br><h1><font size = 6 color=#DD0055>Your Input:</font></h1></form><?php

if (array_key_exists('name', $_POST) and strlen($_POST['name'])<>0)

{echo "Name: ".$_POST['name']."<br>";$name=$_POST['name'];}if (array_key_exists('gender', $_POST)){$gender=$_POST['gender'];print "Gender: $gender<br>";}print "<br><br>Η είσοδος στα πλαίσια

με τον <font size = 4 color=#DD0055>*</font> είναι απαραίτητη!";?>

Σύνδεση PHP με MySQL (1)

Για να δημιουργήσετε μία βάση δεδομένων, πρέπει πρώτα να συνδεθείτε με το διακομιστή της MySQL. Αυτό γίνεται με την ακόλουθη εντολή:

mysqli_connect(servername,username,password);

όπου servername αντιστοιχεί στη διεύθυνση του διακομιστή, username το όνομα του χρήστη που έχει δικαίωμα πρόσβασης σε αυτόνκαι password ο μυστικός κωδικός του χρήστη.

Π.χ, αν η MySQL έχει εγκατασταθεί τοπικά στον υπολογιστή σας και ο administrator της MySQL σας έχει ανοίξει λογαριασμό με username "username" και password "password" τότε ο ακόλουθος κώδικας PHP σας συνδέει με την MySQL. Στην περίπτωση που η σύνδεση αποτύχει, τότε η PHP μέσω της εντολής εντολής mysqli_error() επιστρέφει ένα μήνυμα λάθους.

Σύνδεση PHP με MySQL (2)

<html><body>

<?php$con = mysqli_connect("localhost","root");if (!$con){

die('Could not connect: ' . mysql_error());}

?>

</body></html>

The die() function prints a message and

exits the current script.

This function is an alias of the exit()

function.

Δημιουργία Βάσης Δεδομένων

Αφού έχετε συνδεθεί με το διακομιστή της βάσης μπορείτε να δημιουργήσετε μία νέα βάση δεδομένων με την εντολή: mysqli_query("CREATE DATABASE my_db",$con); Έτσι ο κώδικας σύνδεσης και δημιουργίας νέας βάσης γίνεται:<html><body><?php

$con = mysqli_connect("localhost","root");if (!$con){

die('Could not connect: ' . mysql_error());}

if (mysqli_query("CREATE DATABASE my_db",$con)){

echo "Database created";}else{

echo "Error creating database: ".mysql_error();}

mysqli_close($con); //Τερματισμός σύνδεσης με τη ΒΔ

?></body></html>

Η εντολή mysql_query() της php είναι η πιο σημαντική από τις εντολές που αφορούν στην

επικοινωνία με τη MySQL και χρησιμοποιείται όποτε θέλουμε να κάνουμε μία ερώτηση στη βάση. Ως είσοδο δέχεται ένα SQL query και στην έξοδο είτε επιστρέφει το

αποτέλεσμα του query σε ένα πίνακα, είτε επιστρέφει ότι

εκτελέστηκε επιτυχώς.

Δημιουργία Πίνακα

// sql to create table$sql = "CREATE TABLE phone_book (

id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, lastname VARCHAR(30) NOT NULL,firstname VARCHAR(30) NOT NULL,address VARCHAR(50),phone VARCHAR(10) NOT NULL

)";

if (mysqli_query($conn, $sql)) { echo "Table phone_book created successfully";} else { echo "Error creating table: " . mysqli_error($conn);}

Εισαγωγή Δεδομένων Η εισαγωγή δεδομένων σε έναν πίνακα που έχουμε ήδη δημιουργήσει γίνεται με το ακόλουθο query της SQL:

INSERT INTO table_name (column1, column2, ..., columnN) VALUES (value1, value2,... ,valueN )

// insert data in table$sql = "INSERT INTO phone_book (lastName, firstName, adress, phone)VALUES ('Παναγιώτου', 'Κώστας', 'Κ. Παλαμά 34, Καβάλα', '26510 11111')";if (mysql_query($conn, $sql)) {

echo "Insert Data in table phone_book has done successfully";} else {

echo "Error inserting data: " . mysqli_error($conn);}

Εισάγετε 5 διαφορετικές εγγραφές.

Εξαγωγή Δεδομένων

// select data from table$sql = "SELECT * FROM phone_book";$result = $conn->query($sql);if ($result->num_rows > 0) {

echo "<table><tr><th>ID</th><th>Name</th></tr>"; // output data of each row while($row = $result->fetch_assoc())

{ echo<tr><td>".$row["id"]."</td><td>".$row["firstname"]."".$row["lastname"]."</td></tr>"; } echo "</table>";} else {

echo "0 results";}

Δημιουργία Νέας ΒΔ με το όνομα menu_db

<html><body>

<?php$con = mysql_connect("localhost","root");if (!$con){

die('Could not connect: ' . mysql_error());}

if (mysql_query("CREATE DATABASE menu_db",$con)){

echo "Database created";}else{

echo "Error creating database: ".mysql_error();}mysql_close($con);

?>

</body></html>

Δημιουργία Πίνακα με το όνομα Dishes και πεδία: dish_id, dish_name, price, is_spicy

<?php$servername = "localhost";$username = "root";$password = "";$dbname = "menu_db";// Create connection$conn = mysqli_connect($servername, $username,

$password, $dbname);// Check connectionif (!$conn) {

die("Connection failed: " . mysqli_connect_error());

}// sql to create table$sql = "CREATE TABLE DISHES (

dish_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,

dish_name VARCHAR(50) NOT NULL,price DECIMAL(4,2) NOT NULL,is_spicy INT NOT NULL

)";

if (mysqli_query($conn, $sql)) {

echo "Table DISHES created successfully";

} else {

echo "Error creating table: " . mysqli_error($conn);

}mysqli_close($conn);

?>

Εισαγωγή Τιμών (1)<?php

$servername = "localhost";$username = "root";$password = "";$dbname = "menu_db";// Create connection$conn = mysqli_connect($servername, $username,

$password, $dbname);// Check connectionif (!$conn) {

die("Connection failed: " . mysqli_connect_error());

}// insert data 1 in table

$sql = "INSERT INTO DISHES (dish_name, price, is_spicy)

VALUES ('Σπαγγέτι Καρμπονάρα', '4.56', '0')";if (mysqli_query($conn, $sql)) {

echo "Insert Data 1 in table DISHES has done successfully";

} else {

echo "Error inserting data 1: " . mysqli_error($conn);

}

// insert data 2 in table$sql = "INSERT INTO DISHES

(dish_name, price, is_spicy) VALUES ('Σπαγγέτι Amarticiana',

'5.60', '1')";if (mysqli_query($conn, $sql)) {

echo "Insert Data 2 in table DISHES has done successfully";

} else {

echo "Error inserting data 2: " . mysqli_error($conn);

}// insert data 3 in table

$sql = "INSERT INTO DISHES (dish_name, price, is_spicy)

VALUES ('Ψητό Κοτόπουλο με Μπαχαρικά', '5.95', '1')";

if (mysqli_query($conn, $sql)) {

echo "Insert Data 3 in table DISHES has done successfully";

} else {

echo "Error inserting data 3: " . mysqli_error($conn);

}

Εισαγωγή Τιμών (2)// insert data 4 in table$sql = "INSERT INTO DISHES (dish_name, price, is_spicy) VALUES ('Πατσίτσιο', '3.70', '0')";if (mysqli_query($conn, $sql)) {

echo "Insert Data 4 in table DISHES has done successfully";} else {

echo "Error inserting data 4: " . mysqli_error($conn);}// insert data 5 in table$sql = "INSERT INTO DISHES (dish_name, price, is_spicy) VALUES ('Γιαουρτλού', '6.50', '1')";if (mysqli_query($conn, $sql)) {

echo "Insert Data 5 in table DISHES has done successfully";} else {

echo "Error inserting data 5: " . mysqli_error($conn);}// insert data 6 in table$sql = "INSERT INTO DISHES (dish_name, price, is_spicy) VALUES ('Πίτσα Μαργαρίτα', '3.50', '0')";if (mysqli_query($conn, $sql)) {

echo "Insert Data 6 in table DISHES has done successfully";} else {

echo "Error inserting data 6: " . mysqli_error($conn);}mysqli_close($conn);

?>

Εξαγωγή Τιμών<?php

$servername = "localhost";$username = "root";$password = "";$dbname = "menu_db";

// Create connection$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (!$conn) {

die("Connection failed: " . mysqli_connect_error());}

// select data from table$sql = "SELECT * FROM DISHES ORDER BY price";$result = $conn->query($sql);if ($result->num_rows > 0) {

echo "<table><tr><th>ID</th><th>Dish Name</th><th>Price</th><th>Is Spicy</th></tr>"; // output data of each row while($row = $result->fetch_assoc())

{ echo "<tr><td>".$row["dish_id"]."</td><td>".$row["dish_name"]."</td><td>".$row["price"]."</td><td>".$row["is_spicy"]."</td></tr>"; } echo "</table>";

} else {

echo "0 results";}

mysqli_close($conn);

?>

κι άλλη Εξαγωγή Τιμών (1)

Γράψτε ένα πρόγραμμα σε PHP που θα εμφανίζει μια φόρμα στην οποία θα πρέπει να εισάγουμε την τιμή ενός φαγητού. Όταν ο χρήστης αποστείλει τα δεδομένα της φόρμας, θα εμφανίζονται όλα τα φαγητά (όνομα και τιμή) των οποίων η τιμή είναι μικρότερη από την τιμή που είσάγαμε στην φόρμα.

κι άλλη Εξαγωγή Τιμών (2)<?php

Static $pri;

if (array_key_exists('pr', $_POST)) {

$pri=$_POST['pr'];}else $pri = "";

?><HTML><HEAD><TITLE>Φόρμα </TITLE></HEAD><BODY><form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> <P><STRONG>Τιμή Aνω Ορίου:</STRONG><BR><INPUT TYPE="NUMBER" NAME="pr" STEP="ANY" VALUE = "<?php echo htmlspecialchars($pri); ?>" </P><P><INPUT TYPE="SUBMIT" VALUE="SEND"></P></FORM><?php

if ( array_key_exists('pr', $_POST) ){

$pri=$_POST['pr'];//echo "<p>Your price is:<br><b>$pri</b></p>";

$servername = "localhost";$username = "root";$password = "";$dbname = "menu_db";

κι άλλη Εξαγωγή Τιμών (3)// Create connection$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (!$conn) {

die("Connection failed: " . mysqli_connect_error());}// select data from table$sql = "SELECT * FROM DISHES WHERE price < ".$pri;$result = $conn->query($sql);if ($result->num_rows > 0) {

echo "<table><tr><th>ID</th><th>Dish Name</th><th>Price</th><th>Is Spicy</th></tr>"; // output data of each row while($row = $result->fetch_assoc())

{ echo "<tr><td>".$row["dish_id"]."</td><td>".$row["dish_name"]."</td><td>".$row["price"]."</td><td>".$row["is_spicy"]."</td></tr>"; } echo "</table>";

} else {

echo "0 results";}mysqli_close($conn);

}?></BODY></HTML>

κι άλλη, κι άλλη Εξαγωγή Τιμών (1)

Γράψτε ένα πρόγραμμα που θα εμφανίζει μια φόρμα με ένα combo box που θα περιέχει τα ονόματα των φαγητών (τα ονόματα θα προέρχονται από τη ΔΒ). Όταν ο χρήστης αποστείλει τα δεδομένα της φόρμας, θα πρέπει να εμφανίζονται όλες οι πληροφορίες που αφορούν το συγκεκριμένο φαγητό (όλα τα πεδία του πίνακα dishes).

κι άλλη, κι άλλη Εξαγωγή Τιμών (2)<?php

Static $dishn;

if (array_key_exists('dishname', $_POST)) $dishn=$_POST['dishname'];else $dishn = "";$servername = "localhost";$username = "root";$password = "";$dbname = "menu_db";// Create connection$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (!$conn) {

die("Connection failed: " . mysqli_connect_error());}// select data from table$sql = "SELECT * FROM DISHES";$result = $conn->query($sql);if ($result->num_rows > 0) {

// output data of each row while($row = $result->fetch_assoc())

{ $dish_names[] = $row["dish_name"]; } echo "</table>";

} else { echo "0 results";

}/*foreach ($dish_names as $d){

print ("$d<br>");}*/

?>

κι άλλη, κι άλλη Εξαγωγή Τιμών (3)<h2>PHP Form Example - Lists vs DB Content</h2><form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> <select name="dishname" VALUE = "<?php echo $dishn; ?>">

<option>Διάλεξε κατηγορία...</option><?phpforeach ($dish_names as $d){

if ($dishn == $d)print "<option selected>".$d."</option>";

elseprint "<option>".$d."</option>";

}?>

</select><input type="submit" name="submit"> </form>

<?php

echo "<h2>Έχεις επιλέξει:</h2>";if (array_key_exists('dishname', $_POST)){

$dishn=$_POST['dishname'];// echo $dishn;

$sql = "SELECT * FROM DISHES where dish_name LIKE '".$dishn."'";$result = $conn->query($sql);if ($result->num_rows > 0) {

echo "<table><tr><th>ID</th><th>Dish Name</th><th>Price</th><th>Is Spicy</th></tr>";

κι άλλη, κι άλλη Εξαγωγή Τιμών (4)

// output data of each row while($row = $result->fetch_assoc())

{ echo "<tr><td>".$row["dish_id"]."</td><td>".$row["dish_name"]."</td><td>".$row["price"]."</td><td>".$row["is_spicy"]."</td></tr>"; } echo "</table>";

}}mysqli_close($conn);

?>