Uberalles_gr Δημοσ. 15 Φεβρουαρίου 2017 Δημοσ. 15 Φεβρουαρίου 2017 Καλημέρα σε όλους, το ξέρω ο τίτλος δεν είναι καθόλου κατατοπιστικός για το πρόβλημα που έχω αλλά δεν ήξερα τι να γράψω. Λοιπόν, στην εφαρμογή που φτιάχνω υπάρχουν 2 είδη χρηστών, οι supervisors και οι απλοί χρήστες. Οι supervisors αναθέτουν "εργασίες" στους χρήστες και αυτοί συμπληρώνουν ουσιαστικά μια φόρμα με πάρα πολλά στοιχεία. Το πρόβλημα μου είναι ότι, στην φόρμα αυτή οι χρήστες έχουν 2 επιλογές. Η 1η επιλογή είναι η "Αποθήκευση" (που αποθηκεύει τα δεδομένα στην βάση) και η 2η είναι η "Αποθήκευση και Αποστολή" (εδώ είναι το πρόβλημα) όπου ΜΟΝΟ όταν πατήσουν αυτό το κουμπί θα μπορούν να βλέπουν οι supervisors το τι έχει αποθηκεύσει ο άλλος μέχρι και εκείνο το σημείο. Δηλαδή, εάν μετά ο χρήστης συνεχίσει να αλλάζει τα πεδία, τότε δεν θα τα βλέπει ο διαχειριστής αλλά θα βλέπει μέχρι την τελευταία φορά που έχει πατήσει αποθήκευση και αποστολή. Τα δεδομένα αποθηκεύονται σε πολλούς πίνακες. Ότι προτάσεις/ιδέες έχετε είναι καλοδεχούμενες.
bahamut_zero Δημοσ. 15 Φεβρουαρίου 2017 Δημοσ. 15 Φεβρουαρίου 2017 εσυ δλδ θες τα δεδομενα να περνανε στην βαση σε πραγματικο χρονο; Κι όχι οταν τα αποθηκευει το χρηστης;
dominotrix Δημοσ. 15 Φεβρουαρίου 2017 Δημοσ. 15 Φεβρουαρίου 2017 Το προβλημα ομως τι ειναι; Πως να το κανεις αυτο; Μπορεις απλα καθε φορα που ο χρηστης κανει focus out απο ενα input, να γινεται αυτοματη αποθηκευση των δεδομενων στη βαση. Ετσι, ακομα και.. διακοπη ρευματος να γινει, να μην χασει κανενα δεδομενο.
flienky Δημοσ. 15 Φεβρουαρίου 2017 Δημοσ. 15 Φεβρουαρίου 2017 Αφου αποθηκέυονται σε πολλα tables υπαρχει ενα θέμα. Αλλα λύνεται με τον εξης τρόπο. Σε κάθε τραπέζι βάζεις ενα column με το ονομα "committed". Τα values που αποθηκεύει με με το κουμπί "ΑΠΟΘΗΚΕΥΣΗ ΚΑΙ ΑΠΟΣΤΟΛΗ" θα αποθηκεύονται με το committed = 1. Αν θέλει να αλλάξει την φόρμα πατάει "ΑΠΟΘΗΚΕΥΣΗ" μόνο και τότε, αποθηκεύονται όλα τα στοιχεία στους πίνακες, ξανά, αλλά με committed=0. Άρα στον supervisor δείχνεις τα committed = 1. Στον χρήστη, στην φόρμα δείχνεις με σειρά προταιρεότητας τα committed = 0, αν δεν υπάρχουν, δείχνεις τα committed =1. Αν πατήσει 2ρη φορα το κουμπί αποθηκευση, εννοείται πως κάνεις απλά update τα rows με committed =0. 2
Uberalles_gr Δημοσ. 15 Φεβρουαρίου 2017 Μέλος Δημοσ. 15 Φεβρουαρίου 2017 @bahamut_zero & @dominotrix δεν καταλάβατε αυτό που θέλω. Δεν θέλω ούτε να αποθηκεύονται live τα δεδομένα ούτε να μην χαθούν δεδομένα. Θέλω να μπορεί να βλέπει ο supervisor τα Χ δεδομένα μέχρι τότε που ο χρήστης είχε πατήσει "Αποθήκευση και Αποστολή" Δηλαδή, έχω πατήσει εγώ "Αποθήκευση και Αποστολή", τα έχει σώσει τα δεδομένα στην βάση, τα βλέπει ο supervisor αλλά εγώ στην συνέχεια συνεχίζω και δουλεύω χωρίς να βλέπει τα "καινούρια" ο supervisor έως ότου του το επιτρέψω εγώ με την επιλογή "Αποθήκευση και Αποστολή". Ελπίζω να έγινα πιο κατανοητός τώρα. @flienky, ουσιαστικά προτείνεις να έχω για κάθε φόρμα 2 εγγραφές στην βάση. Η μία με committed = 0, όπου θα την βλέπει ΜΟΝΟ ο χρήστης και μία με committed = 1, όπου θα βλέπει ο Supervisor τα δεδομένα που είχε αποθηκεύσει τότε ο χρήστης. Σωστά; Κάτι τέτοιο είχα σκεφτεί και εγώ αλλά έψαχνα για κάτι καλύτερο
flienky Δημοσ. 15 Φεβρουαρίου 2017 Δημοσ. 15 Φεβρουαρίου 2017 Ναι αυτο ακριβως, αλλα δεν ειναι αναγκαιο να υπάρχουν και τα rows με committed = 0 με το που ο χρηστης πατησει αποθηκευση και αποστολη. Στον supervisor δείχνεις τα committed = 1. Στον χρήστη, στην φόρμα δείχνεις με σειρά προταιρεότητας τα committed = 0, αν δεν υπάρχουν, δείχνεις τα committed =1. Τα committed = 0 υπαρχουν μονο οταν ο χρηστης εχει πατησει το σκετο κουμπι αποθηκευση. Δεν τα εχει μαρκάρει δηλαδή σαν valid ή πως αλλιως να το πω Ελπιζω να βοηθησα Πραγματικα και εγω θα ηθελα αν καποιος εχει κατι πιο εξυπνο να το πει 1
mad-proffessor Δημοσ. 15 Φεβρουαρίου 2017 Δημοσ. 15 Φεβρουαρίου 2017 Τι τεχνολογίες χρησιμοποιείς σε front/backend? Υπάρχουν grid που κάνουν autosave όπως ειπώθηκε, θα στέλνεις τα δεδομένα θα τα εισάγεις στη βάση και όταν πατάει το κουμπι με ένα handler θα κάνεις το commit στη βάση (του transaction).
egoeimai1 Δημοσ. 15 Φεβρουαρίου 2017 Δημοσ. 15 Φεβρουαρίου 2017 προσθέτεις timestamps πεδία στο πίνακα σου (created_at-updated_at) και σε έναν άλλο πίνακα ή αρχείο ρυθμίσεων ή μεταβλητή ή οτιδήποτε, κρατάς την datetime αναφορά σου. Οπότε με sql θα βρίσκεις όλες τις καταχωρήσεις απο αυτή την datetime και πριν.
Uberalles_gr Δημοσ. 16 Φεβρουαρίου 2017 Μέλος Δημοσ. 16 Φεβρουαρίου 2017 Προφανώς παιδιά δεν έχετε καταλάβει τι ζητάω. Ξανά διαβάστε το #5 post. Δεν μπορώ να το εξηγήσω καλύτερα. Δεν είναι θέμα τεχνολογιών που χρησιμοποιώ (δεν θέλω να μου πείτε τι κώδικα να γράψω) αλλά είναι καθαρά θέμα σχεδιασμού το πως θα γίνει. Ευχαριστώ για τον χρόνο σας.
mad-proffessor Δημοσ. 16 Φεβρουαρίου 2017 Δημοσ. 16 Φεβρουαρίου 2017 Παίζουν ρόλο οι τεχνολογίες, είτε φόρμες είτε datagrid αν κάνουν autosave μετα απο επεξεργασία σε γλυτώνουν απο διπλό κόπο εσένα και το χρήστη(αντι για διπλοεγγραφές ή αλλες στήλες που ακούστηκαν). Αντι για δυο κουμπια θα έχεις ένα(προφανώς το αποθ κ αποστολή). Μπορεις με το δικό μου τρόπο να έχεις άλλη μια βάση που όταν κάνεις commit το transaction, γίνεται replicate ο πίνακας στην άλλη βάση και ο supervisor θα έχει δικαιώματα να βλέπει μόνο τη slave db. Έτσι έχεις και replication (backup της βάσης).
Uberalles_gr Δημοσ. 16 Φεβρουαρίου 2017 Μέλος Δημοσ. 16 Φεβρουαρίου 2017 Επομένως, μου λες να έχω 2 βάσεις και ο καθένας θα βλέπει την δικιά του; Και γιατί να μην το κάνω με πίνακα και να έχω 2 πίνακες; Οι τεχνολογίες όμως δεν καταλαβαίνω ακόμα τι ρόλο παίζουν. Χρησιμοποιώ php,mysql.
mad-proffessor Δημοσ. 16 Φεβρουαρίου 2017 Δημοσ. 16 Φεβρουαρίου 2017 Και αυτό γίνεται που λες αλλά εφόσον είναι κρίσιμα δεδομένα εργασίας δεν είναι σωστότερο/προτιμότερο να υπάρχει backup της βάσης σε ένα σερβερ στο λάν της εταιρείας; Έτσι αποφευγεται το corruption σε πίνακα(σε μια κακια στιγμή) όταν υπάρχει μια και μοναδική βαση. Θα μπορούσες να δεις στα grids/forms του dojo framework (χωρίς να σε περιορίζω σε αυτα λογικά το ίδιο θα γίνεται και με jquery/angular κ.α) για τα autosave και πως να χρησιμοποιήσεις rest με ajax async javascript και json/jsonp τεχνολογίες.
Uberalles_gr Δημοσ. 16 Φεβρουαρίου 2017 Μέλος Δημοσ. 16 Φεβρουαρίου 2017 Άρα έχουμε καταλήξει είτε να έχω "διπλές" εγγραφές είτε "διπλούς" πίνακες είτε "διπλές" βάσεις. Δεν θέλω όμως ούτε autosave ούτε reset. Δεν ξέρω γιατί το λες και σε προηγούμενά σου posts.
mad-proffessor Δημοσ. 16 Φεβρουαρίου 2017 Δημοσ. 16 Φεβρουαρίου 2017 Άρα έχουμε καταλήξει είτε να έχω "διπλές" εγγραφές είτε "διπλούς" πίνακες είτε "διπλές" βάσεις. Δεν θέλω όμως ούτε autosave ούτε reset. Δεν ξέρω γιατί το λες και σε προηγούμενά σου posts. Αν εσυ θεωρείς οτι δεν αξιζει να έχεις db replication και data backup σε εταιρικά δεδομένα τότε δε μπορώ εγω να κάνω κάτι παραπάνω. Η λογική είναι να είναι το software όσο πιο απλό γίνεται για τον αδαή χρήστη ή αυτόν που ασχολείται με τα data entries αλλα παράλληλα να υπάρχει και data disaster recovery plan. Θεωρείς το να υπάρχουν διπλά κουμπια για save σωστό και μη ενοχλητικό και συννάμα παραγωγικο για το χρήστη, είναι μια άποψη και αυτό, δε μπορώ να στην αλλάξω.
Uberalles_gr Δημοσ. 16 Φεβρουαρίου 2017 Μέλος Δημοσ. 16 Φεβρουαρίου 2017 Κάτσε ρε φίλε, είπα εγώ ότι δεν παίρνουμε backup της βάσης; Είπα εγώ ότι δεν αξίζει κάτι από αυτά που πρότεινες; Γιατί λες πράγματα που δεν έχουν ειπωθεί; Αυτό που δεν καταλαβαίνεις είναι ότι ο πελάτης ζήτησε αυτή την διαδικασία. Να λειτουργεί έτσι η εφαρμογή.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα