Χειρισμός submit φόμας με δύο διαφορετικούς τρόπους

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
zekia
Δημοσιεύσεις: 146
Εγγραφή: 04 Μάιος 2004 16:38
Τοποθεσία: thessaloniki

Χειρισμός submit φόμας με δύο διαφορετικούς τρόπους

Δημοσίευση από zekia » 17 Αύγ 2009 13:41

Γειά σας,
έχω φτιάξει μια φόρμα η οποία περιέχει διάφορα στοιχεία, μεταξύ των οποίων και ένα select box (για επιλογή μιας κατηγορίας). Όταν ο χρήστης αλλάξει την τιμή του select box, η σελίδα ανανεώνεται και ανάλογα με την επιλογή που έκανε, καθορίζονται τα περιεχόμενα ενός δεύτερου select box (υποκατηγορίας).

Ο κώδικας είναι ο εξής:

Κώδικας: Επιλογή όλων

<form method="POST" name="add_form" action="<?php echo $editFormAction; ?>">

<select name="category" class="contact_fields" action="$_SERVER&#91;PHP_SELF&#93;" onchange="form.submit&#40;&#41;">
<?php
$sql="select * from category";

$category="";
$category.="<option value='-1'>Επιλέξτε Κατηγορία</option>";
$query=" select * from category";
$result = mysql_query&#40;$query&#41;;
if&#40;mysql_num_rows&#40;$result&#41;>0&#41; &#123;
      while&#40;$row=mysql_fetch_assoc&#40;$result&#41;&#41;&#123;
      $category.="<option value=$row&#91;id&#93;";
      if&#40;!empty&#40;$_POST&#91;'category'&#93;&#41; and $_POST&#91;'category'&#93;==$row&#91;'id'&#93;&#41; &#123;$category.=" selected";&#125;
      $category.=">$row&#91;name_el&#93;</option>";
      &#125;
&#125;
$category.="</select>";
echo $category;
?>
</select> 

<select name="subcategory" class="contact_fields">
<?php 
$sql="select id, cat_id, name_el from subcategory where cat_id = ".$_POST&#91;'category'&#93;;

$subcategory="";
$subcategory.="<option>Επιλέξτε Υποκατηγορία</option>";
if&#40;$_POST&#91;'category'&#93;&#41;
&#123;
	$query="select id, cat_id, name_el from subcategory where cat_id = ".$_POST&#91;'category'&#93;;
	$result = mysql_query&#40;$query&#41;;
	if&#40;mysql_num_rows&#40;$result&#41;>0&#41; &#123;
		  while&#40;$row=mysql_fetch_assoc&#40;$result&#41;&#41;&#123;
		  $subcategory.="<option value=$row&#91;id&#93;>$row&#91;name_el&#93;</option>";
		  &#125;
	&#125;
&#125;
$subcategory.="</select>";
echo $subcategory;
?>                                 
</select>

 </form>
Τον κώδικα αυτόν το είχα δοκιμάσει χωρίς να έχω τοποθετήσει submit button στη φόρμα μου και δούλευε μια χαρα. Όταν προσπάθησα να βάλω και submit button, σταμάτησαν να δουλεύουν τα select boxes. Δεν γίνεται απλά τίποτα στο onchange event και έχω μπερδευτεί.
Επίσης, θα ήθελα να βρω κάποιο τρόπο ωστε να εντοπίζω εάν η φόρμα έχει γίνει submited επειδή ο χρήστης άλλαξε το select box ή επειδή έκανε κλικ στο submit button, και να εκτελούνται διαφορετικές ενέργειες, ανάλογα με την περίπτωση.

Μπορείτε να βοηθήσετε γιατί έχω χαθεί τελείως;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Χειρισμός submit φόμας με δύο διαφορετικούς τρόπους

Δημοσίευση από korgr » 17 Αύγ 2009 13:50

Για δες αλλαζοντας τις δυο πρωτες γραμμες σε:

Κώδικας: Επιλογή όλων

<form method="POST" id="add_form" action="<?php echo $editFormAction; ?>">
<select name="category" class="contact_fields" action="$_SERVER&#91;PHP_SELF&#93;" onchange="document.getElementById&#40;'add_form'&#41;.submit&#40;&#41;"> 

Άβαταρ μέλους
zekia
Δημοσιεύσεις: 146
Εγγραφή: 04 Μάιος 2004 16:38
Τοποθεσία: thessaloniki

Χειρισμός submit φόμας με δύο διαφορετικούς τρόπους

Δημοσίευση από zekia » 17 Αύγ 2009 14:00

το έχω δοκιμάσει αυτό όμως δεν είναι σωστό απο άποψη λογικής, γιατί όπως είπα προσπαθώ να διαχωρίσω με κάποιο τρόπο τις ενέργειες που θα εκτελούνται όταν γίνεται αλλαγή στο select box και τις ενέργειες που θα εκτελούνται όταν θα γίνεται κλικ στο submit button.

Για να καταλάβεις, θέλω όταν ο χρήστης επιλέγει μα κατηγορία απο το πρώτο selectbox να γίνεται ανανέωση της σελίδας ωστε να φορτώνονται τα περιεχόμενα του δεύτερου selectbox (για επιλογή υποκατηγορίας).

Στην περίπτωση που η φόρμα έχει συμπληρωθεί ολοκληρωμένα και ο χρήστης κάνει κλικ στο submit button, θέλω τα περιεχόμενα της φόρμας να χρησιμοποιούνται ωστε να εισαχθεί μια νέα εγγραφή σε ένα πίνακα της βάσης.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Χειρισμός submit φόμας με δύο διαφορετικούς τρόπους

Δημοσίευση από korgr » 17 Αύγ 2009 14:01

zekia έγραψε: Επίσης, θα ήθελα να βρω κάποιο τρόπο ωστε να εντοπίζω εάν η φόρμα έχει γίνει submited επειδή ο χρήστης άλλαξε το select box ή επειδή έκανε κλικ στο submit button, και να εκτελούνται διαφορετικές ενέργειες, ανάλογα με την περίπτωση.
Οσο γιαυτο, μια λυση ειναι να προσθεσεις ενα hidden field που θα σου κραταει το action πχ:

Κώδικας: Επιλογή όλων

<input type="hidden" name="formEvent" id="formEvent" value="click" />
και να αλλαξεις το onchange σε:

Κώδικας: Επιλογή όλων

onchange="document.getElementById&#40;'formEvent'&#41;.value='change'; document.getElementById&#40;'add_form'&#41;.submit&#40;&#41;"
Μετα το submit θα εχεις μια μεταβλητη $_POST['formEvent'] που θα εχει τιμή=click αν πατήθηκε το submit button ή τιμή=change αν εγινε submit με το onchange event του select

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Χειρισμός submit φόμας με δύο διαφορετικούς τρόπους

Δημοσίευση από korgr » 17 Αύγ 2009 14:04

Πιο σωστο βεβαια θα ηταν να ελεγχεις αν εχει ερθει τιμη κατηγοριας απο το προηγουμενο submit και αναλογα να εμφανιζεις το submit button ή οχι

Άβαταρ μέλους
zekia
Δημοσιεύσεις: 146
Εγγραφή: 04 Μάιος 2004 16:38
Τοποθεσία: thessaloniki

Χειρισμός submit φόμας με δύο διαφορετικούς τρόπους

Δημοσίευση από zekia » 18 Αύγ 2009 11:43

Τελικά βρήκα τη λύση η οποία είναι η εξής:
α) αλλαξα το όνομα του submit button
2) όρισα έναν έλεγχο με if τύπου:

Κώδικας: Επιλογή όλων

if &#40;!empty&#40;$_POST&#91;'submit'&#93;&#41;&#41;&#123;
//υποβολή ολοκληρωμένης φόρμας
&#125;elseif&#40;!empty&#40;$_POST&#41;&#41;&#123;
//ενέργειες μετά απο αλλαγή του select box
&#125;
ευχαριστώ για τη βοήθεια

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης