• Nenhum resultado encontrado

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

4.11. Καταστάσεις

Η εφαρμογή παρέχει την δυνατότητα στον χρήστη να εμφανίζει λίστες με διάφορες πληροφορίες για τους καθηγητές της σχολής. Έτσι ο χρήστης μπορεί να εμφανίσει πληροφορίες για όλους τους ενεργούς καθηγητές ή για όλους τους πρώην συνεργάτες ή τους μη επιλεχθέντες ή τέλος για όλους μαζί. Όλα αυτά μπορεί να τα κάνει με την σελίδα katastaseis.tcl επιλέγοντας μία από τις τέσσερεις επιλογές. Από κάτω βλέπουμε την σελίδα katastaseis.tcl.

Σχήμα 8. Καταστάσεις

Ο κώδικας που εμφανίζει την σελίδα του σχήματος 8 έχει ως εξής:

1 #!/usr/local/ActiveTcl/bin/tclsh 2 #

3 puts "Content-type: text/html\n\n"

4 source script.tcl 5 load ./fbsql

6 sql connect localhost teachman 97208 7 sql "use teachman"

8 puts <html>

9 puts <head>

10 puts <title>ΚΑΤΑΣΤΑΣΕΙΣ\ ΚΑΘΗΓΗΤΩΝ</title>

11 puts </head>

12 puts <body\ bgcolor="#D9F2FF">

13 puts <form\ action="katastaseis1.tcl"\ method="post">

14 puts <table\ align="center">

15 puts <tr>

16 puts <td>&nbsp</td>

17 puts </tr>

18 puts <tr>

19 puts <td>&nbsp</td>

20 puts </tr>

21 puts <tr>

22 puts <td>&nbsp</td>

23 puts </tr>

24 puts <tr>

25 puts <td><input\ type="radio"\ name="a"\ value="1">Πρώην\

Συνεργάτες</td>

26 puts <td><input\ type="radio"\ name="a"\ value="2">Ενεργοί</td>

27 puts <td><input\ type="radio"\ name="a"\ value="3">Μη\

επιλεχθέντες</td>

28 puts <td><input\ type="radio"\ name="a"\ value="4">Εμφάνιση\

όλων</td>

28 puts </tr>

29 puts <tr>

30 puts <td\ colspan="4"\ align="center"><input\ type="submit"\

value="ΕΜΦΑΝΙΣΗ"></td>

31 puts </tr>

32 puts </table>

33 puts </form>

34 puts <form\ name="v"\ action="/index.html"\ method="post">

35 puts <table\ align="center">

36 puts <tr>

37 puts <td\ align="center"><input\ type="submit"\ value="\

ΕΠΙΣΤΡΟΦΗ\ ΣΤΗΝ\ ΑΡΧΙΚΗ\ ΣΕΛΙΔΑ"></td>

38 puts </tr>

39 puts </table>

40 puts </form>

41 puts </body>

42 puts </html>

Και εδώ όπως και στα χορηγούμενα κομμάτια κώδικα που ανέλυσα οι επτά πρώτες γραμμές κώδικα είναι ίδιες και έχουν αναλυθεί. Εδώ βλέπουμε μια διαφορετική σελίδα από τις προηγούμενες που ανέλυσα. Εδώ δεν υπάρχουν πλαίσια κειμένου και λίστες κειμένου, αλλά τέσσερα ραδιοπλήκτρα. Η σύνταξή τους αρχίζει από την γραμμή 25 έως τη 28 και συντάσσονται με την ετικέτα input η οποία είναι τύπου radio. Όπως παρατηρούμε και τα τέσσερα ραδιοπλήκτρα έχουν το ίδιο όνομα name, αυτό γίνεται για να μην μπορεί να επιλέξει ο χρήστης πάνω από ένα ραδιοπλήκτρο την φορά. Αντίθετα η τιμή που παίρνει το κάθε ραδιοπληκτρο είναι διαφορετική.

Αυτό γίνεται για να ξεχωρίζει για να ξεχωρίζει την λειτουργία που θα κάνει η κάθε

επιλογή

Κάθε φορά που ο χρήστης επιλέγει μία από τις τέσσερεις επιλογές και πατάει το πλήκτρο εμφάνιση οδηγείται στην σελίδα katastaseis1.tcl η οποία του εμφανίζει όλους του καθηγητές με κάποια προσωπικά τους στοιχεία ένα παράδειγμα της λίστας που εμφανίζεται βλέπουμε στο σχήμα 11.

Σχήμα 11. Κατάσταση καθηγητών

Ο κώδικας ο οποίος εμφανίζει την σελίδα του σχήματος 11 έχει ως εξής:

1 #!/usr/local/ActiveTcl/bin/tclsh 2 #

3 puts "Content-type: text/html\n\n"

4 source script.tcl 5 load ./fbsql

6 sql connect localhost teachman 97208 7 sql "use teachman"

8 set f1 [sql "select id, f_name, l_name, mail, phone1, phone2, mobilephone, primaryjob from teacher where katastasi=1"]

9 set f2 [sql "select id, f_name, l_name, mail, phone1, phone2, mobilephone, primaryjob from teacher where katastasi=2"]

10 set f3 [sql "select id, f_name, l_name, mail, phone1, phone2, mobilephone, primaryjob from teacher where katastasi=3"]

11 foreach ro $f2 {

12 set roo [sql "select id from mathima where id_teacher=[lindex $ro 0]"]

13 }

14 if {$a == 1} { 15 puts <html>

16 puts <head>

17 foreach j $f1 {

18 puts <table\ border="1"\ align="center"\ width=1000>

19 puts <tr>

20 puts <td\ align="center"\ width=700>ΟΝΟΜΑΤΕΠΩΝΥΜΟ\ (ΠΡΟΗΝ\

ΣΥΝΕΡΓΑΤΩΝ)</td>

21 puts <td\ align="center"\ width=100>Σπίτι</td>

22 puts <td\ align="center"\ width=100>Εργασία</td>

23 puts <td\ align="center"\ width=100>Κινητό</td>

24 puts </tr>

25 puts <tr>

26 puts <td\ align="left">A.M:\ ([lindex $j 0]),\ [lindex $j 2]\

[lindex $j 1]</td>

27 puts <td>[lindex $j 4]</td>

28 puts <td>[lindex $j 5]</td>

29 puts <td>[lindex $j 6]</td>

30 puts </tr>

31 puts <tr>

32 puts <td\ align="left">[lindex $j 7]\ </td>

33 puts <td>&nbsp</td>

34 puts <td>&nbsp</td>

35 puts <td>&nbsp</td>

36 puts </tr>

37 puts <tr>

38 puts <td\ align="left">[lindex $j 3]\ </td>

39 puts <td>&nbsp</td>

40 puts <td>&nbsp</td>

41 puts <td>&nbsp</td>

42 puts </tr>

43 puts </table>

44 }

45 puts </body>

46 puts </html>

47 } elseif {$a == 2} { 48 puts <html>

49 puts <head>

50 puts <title>ΚΑΤΑΣΤΑΣΗ\ ΕΝΕΡΓΩΝ\ ΣΥΝΕΡΓΑΤΩΝ</title>

51 puts </head>

52 puts <body>

53 foreach k $f2 {

54 puts <table\ border="1"\ align="center"\ width=1000>

55 puts <tr>

56 puts <td\ align="center"\ width=700>ΟΝΟΜΑΤΕΠΩΝΥΜΟ\ (ΕΝΕΡΓΟΙ)</td>

57 puts <td\ align="center"\ width=100>Σπίτι</td>

58 puts <td\ align="center"\ width=100>Εργασία</td>

59 puts <td\ align="center"\ width=100>Κινητό</td>

60 puts </tr>

61 puts <tr>

62 puts <td\ align="left">A.M:\ ([lindex $k 0]),\ [lindex $k 2]\

[lindex $k 1]</td>

63 puts <td>[lindex $k 4]</td>

64 puts <td>[lindex $k 5]</td>

65 puts <td>[lindex $k 6]</td>

66 puts </tr>

67 puts <tr>

68 puts <td\ align="left">[lindex $k 7]\ </td>

69 puts <td>&nbsp</td>

70 puts <td>&nbsp</td>

71 puts <td>&nbsp</td>

72 puts </tr>

73 puts <tr>

74 puts <td\ align="left">[lindex $k 3]\ </td>

75 puts <td>&nbsp</td>

76 puts <td>&nbsp</td>

77 puts <td>&nbsp</td>

78 puts </tr>

79 puts <tr>

80 puts <td\ align="left">[lindex [lindex $er 0] 0]</td>

81 puts <td>&nbsp</td>

82 puts <td>&nbsp</td>

83 puts <td>&nbsp</td>

84 puts </tr>

85 foreach rao $roo {

86 set or [sql "select name, type from course where id=[lindex $rao 0]"]

87 puts <tr>

88 puts <td\ align="left">[lindex $or 0]</td>

89 puts <td>&nbsp</td>

90 puts <td>&nbsp</td>

91 puts <td>&nbsp</td>

92 puts </tr>

93 }

94 puts </table>

95 }

96 puts </body>

97 puts </html>

98 } elseif {$a == 3} { 99 foreach l $f3 {

100 puts <table\ border="1"\ align="center"\ width=1000>

101 puts <tr>

102 puts <td\ align="center"\ width=700>ΟΝΟΜΑΤΕΠΩΝΥΜΟ\ (ΜΗ\

ΕΠΙΛΕΧΘΕΝΤΩΝ)</td>

103 puts <td\ align="center"\ width=100>Σπίτι</td>

104 puts <td\ align="center"\ width=100>Εργασία</td>

105 puts <td\ align="center"\ width=100>Κινητό</td>

106 puts </tr>

107 puts <tr>

108 puts <td\ align="left">A.M:\ ([lindex $l 0]),\ [lindex $l 2]\

[lindex $l 1]</td>

109 puts <td>[lindex $l 4]</td>

110 puts <td>[lindex $l 5]</td>

111 puts <td>[lindex $l 6]</td>

112 puts </tr>

113 puts <tr>

114 puts <td\ align="left">[lindex $l 7]\ </td>

115 puts <td>&nbsp</td>

116 puts <td>&nbsp</td>

117 puts <td>&nbsp</td>

118 puts </tr>

119 puts <tr>

120 puts <td\ align="left">[lindex $l 3]\ </td>

121 puts <td>&nbsp</td>

122 puts <td>&nbsp</td>

123 puts <td>&nbsp</td>

124 puts </tr>

125 puts </table>

126 }

127 puts </body>

128 puts </html>

129 } elseif {$a == 4} { 130 puts <html>

131 puts <head>

132 puts <title>ΚΑΤΑΣΤΑΣΕΙΣ\ ΣΥΝΕΡΓΑΤΩΝ</title>

133 puts </head>

134 puts <body>

135 foreach k $f2 {

136 puts <table\ border="1"\ align="center"\ width=1000>

137 puts <tr>

138 puts <td\ align="center"\ width=700>ΟΝΟΜΑΤΕΠΩΝΥΜΟ\ (ΕΝΕΡΓΟΙ)</td>

139 puts <td\ align="center"\ width=100>Σπίτι</td>

130 puts <td\ align="center"\ width=100>Εργασία</td>

141 puts <td\ align="center"\ width=100>Κινητό</td>

142 puts </tr>

143 puts <tr>

144 puts <td\ align="left">A.M:\ ([lindex $k 0]),\ [lindex $k 2]\

[lindex $k 1]</td>

145 puts <td>[lindex $k 4]</td>

146 puts <td>[lindex $k 5]</td>

147 puts <td>[lindex $k 6]</td>

148 puts </tr>

149 puts <tr>

150 puts <td\ align="left">[lindex $k 7]\ </td>

151 puts <td>&nbsp</td>

152 puts <td>&nbsp</td>

153 puts <td>&nbsp</td>

154 puts </tr>

155 puts <tr>

156 puts <td\ align="left">[lindex $k 3]\ </td>

157 puts <td>&nbsp</td>

158 puts <td>&nbsp</td>

159 puts <td>&nbsp</td>

160 puts </tr>

161 foreach ra $roo {

162 set er [sql "select name, type from course where id=[lindex $ra 0]"]

163 puts <tr>

164 puts <td\ align="left">[lindex $er 0]</td>

165 puts <td>&nbsp</td>

166 puts <td>&nbsp</td>

167 puts <td>&nbsp</td>

168 puts </tr>

169 }

170 puts </table>

171 }

172 foreach j $f1 {

173 puts <table\ border="1"\ align="center"\ width=1000>

174 puts <tr>

175 puts <td\ align="center"\ width=700>ΟΝΟΜΑΤΕΠΩΝΥΜΟ\ (ΠΡΟΗΝ\

ΣΥΝΕΡΓΑΤΩΝ)</td>

176 puts <td\ align="center"\ width=100>Σπίτι</td>

177 puts <td\ align="center"\ width=100>Εργασία</td>

178 puts <td\ align="center"\ width=100>Κινητό</td>

179 puts </tr>

180 puts <tr>

181 puts <td\ align="left">A.M:\ ([lindex $j 0]),\ [lindex $j 2]\

[lindex $j 1]</td>

182 puts <td>[lindex $j 4]</td>

183 puts <td>[lindex $j 5]</td>

184 puts <td>[lindex $j 6]</td>

185 puts </tr>

186 puts <tr>

187 puts <td\ align="left">[lindex $j 7]\ </td>

188 puts <td>&nbsp</td>

189 puts <td>&nbsp</td>

190 puts <td>&nbsp</td>

191 puts </tr>

192 puts <tr>

193 puts <td\ align="left">[lindex $j 3]\ </td>

194 puts <td>&nbsp</td>

195 puts <td>&nbsp</td>

196 puts <td>&nbsp</td>

197 puts </tr>

198 puts </table>

199 }

200 foreach l $f3 {

201 puts <table\ border="1"\ align="center"\ width=1000>

202 puts <tr>

203 puts <td\ align="center"\ width=700>ΟΝΟΜΑΤΕΠΩΝΥΜΟ\ (ΜΗ\

ΕΠΙΛΕΧΘΕΝΤΩΝ)</td>

204 puts <td\ align="center"\ width=100>Σπίτι</td>

205 puts <td\ align="center"\ width=100>Εργασία</td>

206 puts <td\ align="center"\ width=100>Κινητό</td>

207 puts </tr>

208 puts <tr>

209 puts <td\ align="left">A.M:\ ([lindex $l 0]),\ [lindex $l 2]\

[lindex $l 1]</td>

210 puts <td>[lindex $l 4]</td>

211 puts <td>[lindex $l 5]</td>

212 puts <td>[lindex $l 6]</td>

213 puts </tr>

214 puts <tr>

215 puts <td\ align="left">[lindex $l 7]\ </td>

216 puts <td>&nbsp</td>

217 puts <td>&nbsp</td>

218 puts <td>&nbsp</td>

219 puts </tr>

220 puts <tr>

221 puts <td\ align="left">[lindex $l 3]\ </td>

222 puts <td>&nbsp</td>

223 puts <td>&nbsp</td>

224 puts <td>&nbsp</td>

225 puts </tr>

226 puts </table>

227 }

228 puts </body>

229 puts </html>

230 }

231 puts </body>

232 puts </html>

Με αυτόν τον κώδικα μπορούν να εμφανιστούν αποτελέσματα από τέσσερεις διαφορετικές επιλογές που κάνει ο χρήστης. Τα αποτελέσματα χωρίζονται σύμφωνα με το αν ο καθηγητής είναι ενεργός, πρόην συνεργάτης ή μη επιλεχθέντες. Έτσι η σελίδα κάνει την αναζήτησή με την εντολή SELECT της SQL στις γραμμές 8, 9 και 10 από τον πίνακα teacher. Παρατηρώντας πιο προσεχτικά τις γραμμές 8, 9 και 10 βλέπουμε ότι επιλέγουν ακριβός τα ίδια στοιχεία από τον ίδιο πίνακα αλλά με διαφορετικούς όρους με αποτέλεσμα η κάθε γραμμή να εμφανίζει διαφορετικά αποτελέσματα. Ο όρος με τον οποίο επιλέγει η κάθε γραμμή είναι σύμφωνα με το πεδίο katastasi στο οποίο έιναι καταγεγραμμένη η επιλογή του αν έχει την τιμή 1 που σημαίνει ότι ο καθηγητής είναι πρώην συνεργάτης, την τιμή 2 που σημαίνει ότι ο καθηγητής είναι ενεργός και την τιμή 3 που σημαίνει ότι ο καθηγητής είναι μη επιλεχθέν .

Στην γραμμή 11 βλέπουμε την εντολή FOREACH η οποία παίρνει τα στοιχεία

της εντολής αναζήτησης της γραμμής 9, με σκοπό να πάρει το id μαθήματος του

μαθήματος που διδάσκει ο καθηγητής του οποίου τα στοιχεία αναζητούνται στην

γραμμή 9. Χρησιμοποιώ την Foreach για να μπορώ να επαναλάβω τη εντολή select

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

ανατεθεί στον καθηγητή. Στην συνέχεια σύμφωνα με το id μαθήματος επιλέγεται και

εμφανίζεται το όνομα του μαθήματος μέσα στον πίνακα με τους καθηγητές, αυτό μπορούμε να το δούμε στις γραμμές 86 όπου επιλέγεται το όνομα και ο τύπος του μαθήματος από τον πίνακα course που έχει id ίδιο με το id που επιλέχθηκε από τον πίνακα mathima στην γραμμή 11. Τέλος εμφανίζεται στην γραμμή 88 του κώδικα.

Γενικότερα ο κώδικας χωρίζεται σε τέσσερα μέρη με τέσσερεις εντολές if οι οποίες ελέγχουν τις τιμές που πήραν από την σελίδα katastaseis.tcl . Βλέποντας την γραμμή 14, με την πρώτη if ο κώδικας ελέγχει αν η τιμή που πείρε από την προηγούμενη σελίδα έχει τιμή 1 τότε εμφανίζει έναν πίνακα ο οποίος στα κελιά του περιέχει τις τιμές της αναζήτησης που έγινε στην γραμμή 8 δηλαδή των πρώην συνεργατών, εάν η προηγούμενη σελίδα δεν έχει στείλει την τιμή 1 αλλά την 2 τότε αυτό ελέγχεται από την εντολή elseif στην γραμμή 47, έτσι από κάτω δημιουργείται ένας πανομοιότυπος πίνακας στον οποίο εμφανίζονται τα αποτελέσματα της αναζήτησης της γραμμής 9 δηλαδή των ενεργών καθηγητών. Εάν η τιμή που στέλνει η προηγούμενη σελίδα είναι 3 τότε αυτό ελέγχεται από την γραμμή 98 με τη εντολή elseif και δημιουργείται από κάτω ένας πίνακας που περιέχει τα αποτελέσματα της αναζήτησης στην γραμμή 10. Τέλος αν η τιμή που στέλνει η σελίδα katastaseis.tcl είναι 4 εμφανίζονται όλοι οι πίνακες με τα στοιχεία και των τριών αναζητήσεων.

Όπως παρατηρούμε μετά από κάθε εντολή if και elseif υπάρχει μία εντολή

foreach όπως μπορούμε να διακρίνουμε στις γραμμές 17, 53, 99 και 135, αυτό γίνεται

γιατί θέλουμε α εμφανίζονται τα στοιχεία όλων των καθηγητών που βρίσκονται στην

βάση και ανήκουν σε μία από τις τρεις κατηγορίες.

Documentos relacionados