PHP Coding Challenge

Όνομα: Γιώργος Ανδρίτσος

Ημερομηνία: 8 May 2026

Παραδοτέα:

Σχόλια:

Kαλησπέρα σας,

Για το challenge αυτό χρειάστηκε να διαβάσω κάποια πράγματα σχετικά με το διάβασμα, την επεξεργασία και το γράψιμο των XML αρχείων με PHP.

Χρειάστηκε επίσης να ψάξω πώς να εμφανίζω τα success και error messages από την μία σελίδα στην άλλη.

Μου άρεσε πολύ το challenge και αφήνει πολύ χώρο για να κάνω αρκετά πράγματα. Θα μου άρεσε να ασχοληθώ και πιο πολύ με το styling αλλά θεώρησα ότι δεν είναι του παρόντος

Εδώ είστε στην index.php. Κράτησα την products.php και έφτιαξα και την add-product.php. Όλες οι σελίδες δυνδέονται μεταξύ τους

Επειδή είχα διαθέσιμο hosting και ένα domain παρκαρισμένο έκανα εκεί τον Web Server.

Μπορείτε λοιπόν να δείτε το περιχόμενο και στο anayia.com

Σχετικά με το Task1:

Εδώ είχα την σκέψη να περάσω τα headings του PRODUCT σε ένα array και να δημιουργήσω από αυτό το <thead>.

Επειδή όμως η βάση για το challenge ήταν το xml αρχείο αποφάσισα να χρησιμοποιήσω το 1ο προϊόν για να πάρω τα values.

Το var_dump($prod) το χρησιμοποίησα για να δω το formal του XML και να δω πώς ήταν περασμένα τα fields.

Σχετικά με το Task2:

Δημιούργησα το add-product.php.

Και εδώ είχα στο νου μου να κάνω κάποια παραπάνω πράγματα αλλά δεν μου φάνηκαν σχετικά με το challenge

Έφτιαξα ένα βασικό validation script που απλά ελέγχει για το NAME και αν υπάρχει PRICE να είναι θετικό

Αν περάσει το validation τότε καλείται η add_new_product_to_xml($_POST) που διαχειρίζεται όλα τα δεδομένα της φόρμας.

Στην add_new_product_to_xml($postData) έβαλα Success και Error μηνύματα που θα εμφανίζονται στην products.php όπου γίνεται το redirect.

Με την αποθήκευση του αρχείου αλλάζει και το LAST UPDATE του xml.

Θα μου άρεσε την διαδικασία εισαγωγής να την έκανα με κάποια μορφής επανάληψη αλλά το απέφυγα.

Αν είχα να κάνω το project από την αρχή, θα έφτιαχνα και ένα product class το οποίο θα είχε όλες τις απαραίτητες μεταβλητές και ονομασίες για να μην χρειάζεται ούτε να διαβάζω το αρχείο, ούτε να κάνω hard code τις ονομασίες.

Τέλος, σε ένα πραγματικό περιβάλλον, θα διάβαζα λίγο παραπάνω και θα έφτιαχνα και test functions για να υπήρχε η δυνατότητα να επαληθευθεί και να συντηρείτε η add_new_product_to_xml($postData)