background image

Χριστοφορίδης Ιωάννης Ραφαήλ 

Σχεδιασμός πληροφοριακού συστήματος διαχείρισης μητρώου 

υλικών 

 

 

46 

 

Επίσης χρειάζεται να αναλυθεί και η μορφή και χρησιμότητα του πίνακα globals

 

Ο πίνακας globals έχει παρόμοια δομή, μόνο που αυτός έχει 2 παραπάνω πεδία, το cat 

(category)  και  το  length.  Φυσικά,  το  length  κάθε  κατηγορίας  φαίνεται  χάρη  στην  εντολή 
describe.  Όπως  έχει  αναφερθεί  παραπάνω,  ο  πίνακας  αυτός  είναι  χρήσιμος  στην  εύκολη 
δημιουργία πινάκων νέων υποκατηγωριών, αλλά και στην δημιουργία νέων στοιχείων πίνακα 
σε  πίνακες  πολλαπλών  υποκατηγωριών.  Έτσι  οι  2  λειτουργίες  της  global  εκτελούνται  με 
διαφορετικό  τρόπο.  Η  πρώτη  γίνεται  αυτόματα  με  την  δημιουργία  νέας  κατηγορίας  και  η 
δεύτερη  γίνεται  από  τον  χρήστη  με  την  επιλογή  “εφαρμογή”.  Ο  κώδικας  της  εφαρμογής 
υπάρχει στην γραμμή 273 και μετά. Γενικά στον κώδικα παρατηρούμε πως συλλέγει το id των 
υποκατηγοριών (τα ονομάζει dogs) ανάλογα με την κατηγορία (cat) και όλα τα στοιχεία για την 
δημιουργία του τοποθετούνται σε μεταβλητές. Αξίζει να σημειωθεί μέρος του κώδικα: 

if($mahflag){$mahproxx="AFTER `".$r['name']."`";} 

 

Υπήρξε ένα πρόβλημα με τα global στοιχεία πίνακα, όταν αυτά έμπαιναν εκπρόθεσμα 

στους  πίνακες  μέσω  της  εντολής  “εφαρμογή”.  Αναλυτικότερα,  τα  νέα  στοιχεία  πίνακα 
εισχωρούνταν στο τέλος κάθε πίνακα, έχοντας ως αποτέλεσμα την μη σωστή ταξινόμηση των 
στοιχείων  κάθε  πίνακα.  Στο  συγκεκριμένο  κομμάτι  (μετά  τον  απαραίτητο  έλεγχο)  το  νέο 
στοιχείο  πίνακα  τοποθετείτε  μετά  το  τελευταίο  global,  ώστε  να  υπάρχει  μια  καλύτερη 
κατανομή.  Βέβαια  ο  πίνακας  subn  είναι  μια  τελείως  διαφορετική  ιστορία  γιατί  ουσιαστικά 
γίνεται sort σύμφωνα με το id. Για τον λόγο αυτό παρατηρούμε σε πολλά σημεία εντολών της 
MySQL την παράμετρο: 

ORDER BY  `name` ASC  

Η τελική μορφή του πίνακα σχηματίζεται από την παρακάτω εντολή (όχι πάντα): 

$sql="ALTER  TABLE  ".MYSQLPREF."sub".$dogs[$x]."  ADD  `$globalat`  $type(  $length  ) 
NULL$default $mahproxx"; 

 

Παρατηρείται  πως  δεν  έχει  κάποια  άλλη  ιδιότητα  (όπως  NOT  NULL  [mandatory]  ή 

Unique).  Αυτό  γίνεται  για  διάφορους  λόγους,  κυρίως    ο  έλεγχος  των  τιμών  γίνεται  από  το 
σύστημα μέσω κώδικα. 

 

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

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