καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελιδων

...IDE, compilers, κλπ

Συντονιστής: konnn

καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελιδων

Δημοσίευσηαπό koslibpro » 18 Ιούλ 2012, 12:40

καλημερα σε ολους,

αν εχω ενα ερωτηματολογιο που η δομη του ειναι page1.php , page2.php κτλπ , ο χρηστης θα πηγαινει απο την μια ερωτηση στην αλλη πατωντας ενα κουμπακι που θα λεει Next ή κατι σχετικο τελος παντων.

θελω απο καθε χρηστη,να δημιουργειται στην MySQL βαση μου μια καινουρια εγγραφη.
εγω,οπως γνωριζω μεχρι τωρα,δημιουργω ενα ερωτηματολογιο με <form> σε HTML και μολις πατησει "αποστολη" ο χρηστης,δημιουργειται μια εγγραφη.
τωρα ομως,που ειναι πολλων σελιδων το ερωτηματλογιο,πως θα δημιουργειται μονο μια εγγραφη στην βαση??με ποιον τροπο μπορω να το κανω αυτο?

δηλαδη,ετσι οπως το εχω στο μιαλο μου,αν ο χρηστης στο τελος καθε σελιδας παταει next,θα καταχωρειται στην βαση μια εγγραφη που θα περιεχει μονο τα στοιχεια που εβαλε ο χρηστης σε εκεινη την σελιδα..και οταν πατησει next και παει στην επομενη,θα καταχωρηθουν στην βαση σε διαφορετικη εγγραφη μονο τα στοιχεια που εισηγαγε στην επομενη σελιδα..

οποιος μπορει ας με βοηθισει..

ευχαριστωωωω
Spoiler: show
1 Γνώσεις → Linux: Χαμηλό>Μεσαίο┃ Προγραμματισμός: PHP,C ┃ Αγγλικά: Proficiency
2 Λειτουργικό → Ubuntu 13.04 precise 32-bit (en_US.UTF-8)
3 Προδιαγραφές → CPU: i3-2310M 2.1Ghz ‖ RAM 4Gb
4 Κάρτες γραφικών: NVidia GeForce GT 540M 1Gb

Personal blog - website
Άβαταρ μέλους
koslibpro
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 356
Εγγραφή: 12 Μάιος 2011, 16:37
Τοποθεσία: Piraeus
Εκτύπωση

Re: καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελ

Δημοσίευσηαπό Qdata » 18 Ιούλ 2012, 15:01

Οπότε για να γίνει πιο απλό το πρόβλημα, θέλεις να μπορείς να "πάρεις" τις εγγραφές στην βάση που έγιναν από την 1η σελίδα και από την 2η, από ένα συγκεκριμένο χρήση. Σωστά; Μπορείς να προσθέσεις σε αυτές τις εγγραφές λοιπόν ένα επιπλέον στοιχείο που θα σε βοηθήσει να τις επιλέξεις. Πχ, μπορείς στον κάθε χρήστη να δίνεις μια συγκεκριμένη αριθμητική τιμή μέσω cookies. Θα χρησιμοποιείς αυτή την τιμή ως ένα πεδίο/στήλη της εκχώρησης και στο τέλος θα επιλέγεις με:
Κώδικας: Επιλογή όλων
SELECT * FROM table WHERE userValue=1


Έτσι θα επιλέγεις όλες τις εκχωρήσεις που έγιναν στην βάση από τον χρήστη με την αριθμητική τιμή 1. Πλήρες παράδειγμα:

Δύο χρήστες ξεκινούν να απαντούν το ερωτηματολόγιο. Ο πρώτος παίρνει ένα cookie με μια μεταβλητή userValue=1, και ο δεύτερος με userValue=2. Ο πρώτος απαντάει στην ερώτηση 1(σχετικά με την προτίμησή του σε κάποια φαγώσιμα) και στη 2, και δημιουργούνται 2 εγγραφές στην βάση(μόλις πατήσει το next). Ο δεύτερος απαντάει στην ερώτηση 4(σχετικά με την προτίμησή του στα μεταφορικά μέσα) και μόλις πατήσει το next δημιουργείτε μια εγγραφή στην βάση. Οπότε μέχρι τώρα η βάση θα είναι:

Κώδικας: Επιλογή όλων
Βάση:
table με όνομα "table"
        `-"ερώτηση", "απάντηση", "userValue"
                |"1", "πίτσα", "1"
                |"2", "κάτι", "1"
                `"4", "ποδήλατο", "2"


Έτσι τώρα όταν ο χρήστης 1 πατήσει το next μπορείς με βάση τις εγγραφές στην βάση με το πεδίο userValue=1 να δεις τι απάντησε ο χρήστης και αναλόγως να συνεχίσεις. Οπότε βγάζεις στον χρήστη 1 τις επόμενες ερωτήσεις, ανάλογα με τι απάντησε στις προηγούμενες.
Το ίδιο ισχύει και για τον χρήστη 2. Μπορείς να κάνεις ακριβώς το ίδιο.

Αυτό τουλάχιστον ήταν μια λύση που σκέφτηκα τώρα. Φυσικά με αυτό τον τρόπο δημιουργούνται τόσες εγγραφές όσες και οι ερωτήσεις, αλλά αυτό στο οποίο θα πρέπει να δώσεις προσοχή είναι η στήλη userValue. Αν χρησιμοποιήσεις μια τέτοια στήλη τότε θα μπορείς να συνεχίσεις με τον τρόπο που δουλεύεις και τώρα. :)
Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση

Re: καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελ

Δημοσίευσηαπό koslibpro » 18 Ιούλ 2012, 15:47

Οντως ισχυει πρακτικα αυτη η λυση,ομως δημιουργουνται "ασκοπες" εγγραφες στην βαση.οντως αφου συμπληρωθει το ερωτηματολογιο μπορω να βρω τι απαντησε ο καθε χρηστης,"παιζοντας" με το userValue.
ομως,δεν υπαρχει καποιος "επισημος" ας πουμε τροπος να γινεται αυτο σωστα?γιατι αυτος ναι μεν βγαινει πρακτικα,αλλα μου φαινεται πατεντα..
Spoiler: show
1 Γνώσεις → Linux: Χαμηλό>Μεσαίο┃ Προγραμματισμός: PHP,C ┃ Αγγλικά: Proficiency
2 Λειτουργικό → Ubuntu 13.04 precise 32-bit (en_US.UTF-8)
3 Προδιαγραφές → CPU: i3-2310M 2.1Ghz ‖ RAM 4Gb
4 Κάρτες γραφικών: NVidia GeForce GT 540M 1Gb

Personal blog - website
Άβαταρ μέλους
koslibpro
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 356
Εγγραφή: 12 Μάιος 2011, 16:37
Τοποθεσία: Piraeus
Εκτύπωση

Re: καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελ

Δημοσίευσηαπό Qdata » 18 Ιούλ 2012, 15:57

koslibpro έγραψε:ομως,δεν υπαρχει καποιος "επισημος" ας πουμε τροπος να γινεται αυτο σωστα?γιατι αυτος ναι μεν βγαινει πρακτικα,αλλα μου φαινεται πατεντα..


Χμ, δεν ξέρω. Όντως αυτός είναι "πατέντα", μιας και είναι η πιθανή λύση που μου ήρθε στο μυαλό.
Κάτι άλλο που θα μπορούσες να κάνεις για να μην δημιουργούνται πολλές άχρηστες εγγραφές είναι να δίνεις ένα χρονικό όριο στο πόσο θα κρατήσουν στην βάση οι εγγραφές του χρήστη 1 ή απλώς να τις διαγράφεις μόλις τελειώνει το ερωτηματολόγιο. ;)

Δεν γνωρίζω κάποια πιο επίσημη λύση δυστυχώς. :problem:
Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση

Re: καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελ

Δημοσίευσηαπό koslibpro » 18 Ιούλ 2012, 16:03

Qdata έγραψε:
koslibpro έγραψε:ομως,δεν υπαρχει καποιος "επισημος" ας πουμε τροπος να γινεται αυτο σωστα?γιατι αυτος ναι μεν βγαινει πρακτικα,αλλα μου φαινεται πατεντα..

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

αν ομως θελω να βγαλω επειτα στατιστικα στοιχεια αποοολους τους χρηστες,δεν βοηθαει αυτος ο τροπος..

οπως και αν εχει,θα περιμενω μηπως κανενας αλλος συμφορουμιτης εχει καποια διαφορετικη αποψη/ιδεα..
σ'ευχαριστω:)
Spoiler: show
1 Γνώσεις → Linux: Χαμηλό>Μεσαίο┃ Προγραμματισμός: PHP,C ┃ Αγγλικά: Proficiency
2 Λειτουργικό → Ubuntu 13.04 precise 32-bit (en_US.UTF-8)
3 Προδιαγραφές → CPU: i3-2310M 2.1Ghz ‖ RAM 4Gb
4 Κάρτες γραφικών: NVidia GeForce GT 540M 1Gb

Personal blog - website
Άβαταρ μέλους
koslibpro
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 356
Εγγραφή: 12 Μάιος 2011, 16:37
Τοποθεσία: Piraeus
Εκτύπωση

Re: καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελ

Δημοσίευσηαπό Qdata » 18 Ιούλ 2012, 16:19

Σωστά! Τέλος σου προτείνω να βρεις πχ ένα αντίστοιχο wordpress plugin που κάνει το ίδιο πράγμα με αυτό που θέλεις και να διαβάσεις τον κώδικα του. ;) Αυτά από εμένα. Για να δούμε αν κάποιος άλλος έχει την λύση! :)
Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση

Re: καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελ

Δημοσίευσηαπό vasster » 19 Ιούλ 2012, 10:04

Διάβασε λίγο για την html και συγκεκριμένα για το Tag form. Θα διαπιστώσεις ότι σε κάθε form μπορείς να έχεις πεδία κρυφά (hidden). Άρα κάθε σελίδα θα διαβάζει το αντικείμενο request, θα βρίσκει τα πεδία της προηγούμενης και θα τα γράφεις σαν hidden values στην νέα. Στο τέλος όλες τις τιμές θα τις αποθηκεύσεις σε μία εγγραφή.

Ενας άλλος τρόπος είναι σε όλες τις επόμενες σελίδες να κάνεις update (ενημέρωση) αν υπάρχει η εγγραφή του χρήστη ή να εισάγεις μια νέα.
Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
Ubuntu 17.04 (Zesty Zapus) 4.10.0-19-generic 64bit (en_US.UTF-8, Unity ubuntu)
Intel Core i5-6500 CPU @ 3.20GHz ‖ RAM 15915 MiB ‖ MSI H170M PRO-VDH (MS-7982) - MSI MS-7982
Intel Sky Lake Integrated Graphics [8086:1912] {i915_bpo}
enp1s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15) ⋮ wlx784476b5edea: 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
vasster
punkTUX
punkTUX
 
Δημοσιεύσεις: 253
Εγγραφή: 23 Μάιος 2010, 09:51
Εκτύπωση

Re: καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελ

Δημοσίευσηαπό Αποστόλης » 19 Ιούλ 2012, 13:33

Ο "σωστός" τρόπος είναι αυτός που προτείνει ο vasster με τα hidden fields, γιατί έτσι δεν καταπονείς τη βάση με άσκοπα queries και γλιτώνεις από τυχόν λάθη που μπορεί να δημιουργηθούν είτε από εσφαλμένα queries, είτε από αδυναμία σύνδεσης με τη βάση για κάποιο λόγο.
Το μόνο που θα πρέπει να προσέξεις είναι να έχουν όλες οι form την ίδια method. Η post ή get. Οχι τη μία έτσι και την άλλη αλλιώς.
Αν για κάποιο λόγο πρέπει να γυρίσεις από τη μια στην άλλη, η φόρμα δεν θα δουλέψει. Οπότε καλύτερα να χρησιμοποιήσεις την request. Μόνο όμως αν δεν γίνεται αλλιώς
.

Υπάρχει κι ένας άλλος τρόπος,ελαφρώς καλύτερος αλλά πιο μπερδεμένος στην υλοποίηση.
Φτιάχνεις μια φόρμα που περιέχει όλες τις ερωτήσεις.
Σε κάθε input type βάζεις onClick submit και τσεκάρεις με μια συνθήκη if αν ο χρήστης έχει απαντήσει.
Αν ναι εμφανίζεις την επόμενη ερώτηση, αν όχι εμφανίζεις μήνυμα ή ξανά την ερώτηση ή ότι θέλεις να κάνεις.
κ.ο.κ.

Το καλό με αυτόν τον τρόπο είναι οτι στην ουσία έχεις μια σελίδα με όλα τα στοιχεία, την οποία απλώς εμφανίζεις σταδιακά και δεν χρειάζεται να έχεις πολλές σελίδες για μια μόνο λειτουργία και φυσικά δεν τρέχεις πολλά queries.
Το θέμα είνα να μην μπερδευτείς με τον τρόπο λειτουργίας και ξεχάσεις επιλογές ή δώσεις το ίδιο name σε πάνω από ένα input type.
Γνώσεις ⇛ Linux:Μέτριο┃ Προγραμματισμός:Ναι ┃ Αγγλικά: Αρκετά Καλά
Λειτουργικό ⇛ Arch Linux 64bit ┃ Ubuntu Studio 10.4 64bit
Προδιαγραφές ⇛ HP Pavillion dv7 1199ev ┃ Intel 2 Core Duo T 9400, 2.53 Ghz ┃ 4GB ┃ NVIDIA GeForce 9600M GT ┃ Intel 82801I (ICH9 Family) HD Audio ┃ TFT 17" 1440x900
Αποστόλης
punkTUX
punkTUX
 
Δημοσιεύσεις: 170
Εγγραφή: 24 Ιουν 2009, 13:09
Εκτύπωση

Re: καταχωρηση στοιχειων σε DB απο ερωτηματολογιο πολλων σελ

Δημοσίευσηαπό koslibpro » 20 Ιούλ 2012, 18:01

μαλιστα,σας ευχαριστω ολους για τις απαντησεις σας!

θα τις ψαξω κι εγω περισσοτερο,και θα ενημερωσω..

υγ:το πρασινο τικ δεν το βαζω ακομα καθως νομιζω οτι δεν χρειαζεται..αν διαφωνειτε,μου λετε και το βαζω ενδεικτικα σε μια απαντηση
Spoiler: show
1 Γνώσεις → Linux: Χαμηλό>Μεσαίο┃ Προγραμματισμός: PHP,C ┃ Αγγλικά: Proficiency
2 Λειτουργικό → Ubuntu 13.04 precise 32-bit (en_US.UTF-8)
3 Προδιαγραφές → CPU: i3-2310M 2.1Ghz ‖ RAM 4Gb
4 Κάρτες γραφικών: NVidia GeForce GT 540M 1Gb

Personal blog - website
Άβαταρ μέλους
koslibpro
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 356
Εγγραφή: 12 Μάιος 2011, 16:37
Τοποθεσία: Piraeus
Εκτύπωση


Επιστροφή στο Εφαρμογές για Ανάπτυξη Λογισμικού

cron