varemarious Δημοσ. 1 Δεκεμβρίου 2010 Δημοσ. 1 Δεκεμβρίου 2010 Καλησπέρα θέλω να φτιάξω μία φόρμα η οποία να συμπεριλαμβάνει βήματα.. επόμενο -> επόμενο -> επόμενο ->υποβολή σκέφτηκα να το κάνω σε κομμάτια δηλ. να φτιάξω 3 σελίδες διαφορετικές *.php και στο action της φόρμας να δώσω link την επόμενη σελίδα οπότε με το submit να με μεταφέρει... μετά όμως πως θα μπορέσω να τραβάω τα στοιχεία στο sendmail.php για να μου έρθει στο τέλος ένα mail με όλα τα στοιχεία που έχουν καταχωρηθεί..(σκέφτηκα ότι μπορεί να τα τραβάω από φόρμα σε φόρμα με hidden) είναι σωστός αυτός ο τρόπος ; υπάρχει κάποιος καλύτερος ; (σίγουρα ναι) επίσης πως θα λύσω το θέμα ότι αν κάποιος κάνει λάθος σε ένα πεδίο και πατήσει πίσω να πάει στο προηγούμενο βήμα να μην χάνονται οι καταχωρήσεις.. αυτά τα ολίγα .. ευχαριστώ προκαταβολικά.
Uberalles_gr Δημοσ. 1 Δεκεμβρίου 2010 Δημοσ. 1 Δεκεμβρίου 2010 Μπορείς να βάλεις τα δεδομένα από κάθε φόρμα σου σε έναν πίνακα και να κάνεις post κάθε φορά αυτόν τον πίνακα(σε hidden πεδίο). Μπορείς να χρησιμοποιήσεις και δισδιάστατο και θα είναι της μορφής > array[first_form][name] = "Γιώργος" array[second_form][name] = "Πέτρος"
orotoi Δημοσ. 1 Δεκεμβρίου 2010 Δημοσ. 1 Δεκεμβρίου 2010 μπορείς να το κάνεις σε μία σελίδα, χρησιμοποιώντας μια κρυφή μεταβλητή στη φόρμα σου, που θα κρατάει σε ποια "σελίδα" της φόρμας είσαι. Στον κώδικα που θα έχεις να εμφανίζει τη φόρμα θα βάλεις ενα if (ή case οτι σε βολεύει) που θα ελέγχει σε ποια "σελίδα" είσαι οπότε θα εμφανίζεις ανάλογα και το κομμάτι της φόρμας που θέλεις.
lion2486 Δημοσ. 1 Δεκεμβρίου 2010 Δημοσ. 1 Δεκεμβρίου 2010 Όπως το σκέφτομαι με το φτωχό μου μυαλό βλέπω μερικές επιλογές... η μία είναι ότι όπως θα πηγαίνεις από φόρμα σε φόρμα, θα έχεις > foreach($_POST as $key => $value) echo "<input type=\"hidden\" name=\"$key\" value=\"$value\" />"; και εδώ τίθεται το ερώτημα για πίσω, εκεί θα μπορείς να κάνεις κάτι αντίστοιχο, και απλά να ελέγχει αν έχει γίνει ήδη $_POST το input που έχεις κάπως έτσι: > <form name="form1" method="post" action="next.php"> <?php if(!isset($_POST['username'])){ ?><input type="text" name="username" /> <?php } else { ?><input type="text" name="username" value="<?php echo $_POST['username']; ?>" /> /* Αν θέλεις το κάνεις και disabled */ <?php } ?> <input type="submit" value="next" /></form> Επειδή ίσως αυτό γίνει κουραστικό, μπορείς να κάνεις μια συνάρτηση για συντομία... > function field($name, $type = "text", $disabled = false){ if(!isset($_POST[$name])){ ?><input type="text" name="<?php echo $name; ?>" /> <?php } else { ?><input type="text" name="<?php echo $name; ?>" value="<?php echo $_POST[$name]; ?>" <?php if($disabled) echo "DISABLED"; ?>/> <?php } } Και θα την καλείς: > field("username"); field("password", "password"); field("recommended", "text", true); Η άλλη ιδέα μου είναι κατά τη διαδικασία να τα γράφεις όλα σε μεταβλητές $_SESSION, ώστε να έχεις πιο εύκολη τη μετάβαση από τη μια φόρμα στην άλλη, θα μπορούσες να έχεις ένα αναγνωριστικό για κάθε φόρμα, να υπάρχει ένα αρχείο που θα καταγράφει της μεταβλητές στη συνεδρία, και να τον επιστρέφει στην επόμενη φόρμα και πάλι θα ελέγχεις αν έχει οριστεί η μεταβλητή και αν έχει κάποιο λάθος απλά θα διαγράφεις αυτή τη μεταβλητή. Πιστεύω να βοήθησα σε αυτό που θες να κάνεις...
varemarious Δημοσ. 1 Δεκεμβρίου 2010 Μέλος Δημοσ. 1 Δεκεμβρίου 2010 ευχαριστώ για τις απόψεις σας .. θα τις δοκιμάσω και όπου κολλήσω θα επανέλθω..
el02154 Δημοσ. 2 Δεκεμβρίου 2010 Δημοσ. 2 Δεκεμβρίου 2010 Εγώ κάπου που χρειάστηκε αυτό χρησιμοποίησα hidden fields και έπαιξε μια χαρά...
ΠάρηςΓ Δημοσ. 2 Δεκεμβρίου 2010 Δημοσ. 2 Δεκεμβρίου 2010 Εγω αποθηκευω στο SESSION. Πιστευω πως ειναι καλος τροπος διοτι δεν εχεις να ξερνας τα δεδομένα καθε φορα στη φορμα.. ως Hidden Θα μπορουσες να τα κανεις serialize βεβαια αλλα δεν ξερω αν ειναι καλη πρακτικη κατι που θα ηταν προβλημα αν ειναι παρα πολλα.. Επισης σκεψου και το πατερναλιστή http://en.wikipedia.org/wiki/Post/Redirect/Get Δηλαδη κανεις post γραφεις τα data και κανεις redirect.. ετσι οταν πας να κανεις refresh δεν υπαρχει θεμα με τη βαση... Τελος χρειαζεται καμια ασφαλεια τυπου token για να μην γινουν διπλο εγγραφες στη βαση
x_maras Δημοσ. 5 Δεκεμβρίου 2010 Δημοσ. 5 Δεκεμβρίου 2010 Εγώ σε ένα ερωτηματολόγιο που το έκανα αυτό χρησιμοποίησα Sessions. Επίσης είχα session και στη σελιδοποίηση γιατί δεν ήθελα να κάνουν skip κάποια σελίδα αλλάζοντας αριθμό σελίδας στο url
dewn735 Δημοσ. 5 Δεκεμβρίου 2010 Δημοσ. 5 Δεκεμβρίου 2010 Επίσης είχα session και στη σελιδοποίηση γιατί δεν ήθελα να κάνουν skip κάποια σελίδα αλλάζοντας αριθμό σελίδας στο url Θα μπορούσες πολύ πιο απλά να χρησιμοποιήσεις την post αντί της get
x_maras Δημοσ. 8 Δεκεμβρίου 2010 Δημοσ. 8 Δεκεμβρίου 2010 Το έβαζα σε session γιατί εκτός του ότι είχα back button (μπορούσες να πας πίσω αλλά αν δεν είχε πλήρη τη φόρμα τη φόρμα της σελίδας δε μπορούσες να πας μπροστά), το ερωτηματολόγιο δεν ήταν standard μεγέθους, αλλά οι σελίδες άλλαζαν δυναμικά. Πάντως δε σκέφτηκα καθόλου αν θα μπορούσα να το κάνω αυτό με post
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.