Php φόρμα - επιλογή πεδίων inputs προς αποστολή

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

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

Απάντηση
Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από felipsemassa » 02 Αύγ 2009 15:57

Έχω μια φόρμα όπου πρόκειται να προσθέτω μέσα από 3 inputs διευθύνσεις οδών για δεδομένα

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

<?

if &#40;$_POST&#91;"forma"&#93;&#41; 
&#123;
$street1 = "$_POST&#91;"street1forma"&#93;" ;
$street2 = "$_POST&#91;"street2forma"&#93;";
$street3 = "$_POST&#91;"street3forma"&#93;";
&#125;

?>

<form action="send.php" method="post">
<input  type="text" name="street1forma" id="street1forma" >
<input  type="text" name="street2forma" id="street2forma" >
<input  type="text" name="street3forma" id="street3forma" >
<input  type="submit" name="forma" value="Send">
</form>
όταν πατήσω Send θα σταλούν τα στοιχεία που έχω βάλει στα 3 inputs, τι γίνεται όμως αν θέλω να επιλέξω να σταλούν 2 ή 1 μόνο από τα 3 inputs ;

κάτι που σκέφτηκα είναι να βάλω ένα τέτοιο κουτάκι http://www.echoecho.com/htmlforms09.htm check box πλάι από κάθε input και να τσεκάρω πόσα από τα 3 inputs θέλω να αποστέλονται κάθε φορά !

μπορείτε να δώσετε κάποιο παράδειγμα που να κάνει αυτό που μόλις εξήγησα με php τα 3 inputs και 3 check box κουτάκια ;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από dva_dev » 02 Αύγ 2009 20:26

Ισως αν έχεις όρεξη να παίξεις με javascript, μπορείς να παίξεις με ajax post request.
Το μόνο που έχεις να κάνεις είναι να μαζέψεις με κάποιο τρόπο τα πεδία που αλλάζουν και να κάνεις post με το χέρι μόνο αυτά.

Ενδεικτικά:
http://stackoverflow.com/questions/1099 ... in-firefox
http://viralpatel.net/blogs/2008/12/aja ... query.html
http://docs.jquery.com/Ajax/jQuery.post

[edit]
Για το ποιά πεδία έχουν αλλάξει μπορείς να βάλεις checkboxes, ή να πιάσεις κάποιο onkeypress event και να ανάβεις κάποιο flag, ή να συγκρίνεις τις τιμές που έχουν τα πεδία όταν φορτώνει η φόρμα με τις τιμές που έχουν κατά το post.
[/edit]

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από ThyClub » 02 Αύγ 2009 23:31

Μπορείς επίσης να κάνεις κάτι σαν αυτό:

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

<INPUT NAME="pedia&#91;&#93;" TYPE="CHECKBOX" VALUE="thlefwno">
<INPUT NAME="pedia&#91;&#93;" TYPE="CHECKBOX" VALUE="odos">
<INPUT NAME="pedia&#91;&#93;" TYPE="CHECKBOX" VALUE="polh">
Στην PHP αυτό θα μεταφραστεί σε ένα πολύ όμορφο array του στύλ:

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

pedia&#40;thlefwno,odos&#41;
Έτσι μπορείς μετά να τσεκάρεις ποιά πεδία έχει επιλέξει ο χρήστης με php. Αν κολλήσεις κάπου εδώ είμαστε για ερωτήσεις.

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από felipsemassa » 03 Αύγ 2009 07:02

dva_dev δεν έχω κοιτάξει ajax ως τώρα :(

thyclub έφτιαξα αυτό που είπες με array

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

 
<?php
if &#40;isset&#40;$_POST&#91;"forma"&#93;&#41; && !empty&#40;$_POST&#91;"forma"&#93;&#41;&#41;
&#123;
$pedia = $_POST&#91;'pedio'&#93;;

for &#40;$i=0;$i<=3;$i++&#41;&#123;
echo " $pedia&#91;$i&#93;";
&#125;

&#125;
?>

<form action="index.php" method="post"> 

<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="thlefwno">
<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="odos">
<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="polh"> 

<input  type="submit" name="forma" value="Send">

</form> 
και δουλεύει άψογα, πως όμως μπορώ να το συνδυάσω με τα άλλα 3 inputs που για type παίρνουν TEXT ;

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

<input  type="text" name="street1forma" id="street1forma" >
<input  type="text" name="street2forma" id="street2forma" >
<input  type="text" name="street3forma" id="street3forma" > 
να πως το σκέφτηκα Εικόνα

πατώντας το Send-submit της φόρμας, άσχετα αν έχω συμπληρώσει και τα 3 inputs, να αποστέλλεται ή αποστέλλονται μόνο το input εκείνο που το κουτάκι δίπλα του είναι τσεκαρισμένο, τα υπόλοιπα όχι . Κάποιο παράδειγμα, πως θα τα ενώσουμε ;

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από ThyClub » 03 Αύγ 2009 10:26

Μα απο την στιγμή που ξέρεις ποιά πεδία στελνονται τότε είναι εύκολο.

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

<input type="text" name="odos1">
<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="odos"> 
Ξέρεις ότι αφού είναι τσεκαρισμένο το odos τότε θα διαβάσεις το πεδίο odos1 και κανένα άλλο

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από felipsemassa » 03 Αύγ 2009 12:54

ναι εύκολο μπορεί να είναι αλλά όχι ακόμα για εμένα να φανταστείς χτες δοκίμασα πρώτη φορά να κάνω κάτι με το array , απλά ακόμα δεν καταλαβαίνω πως να τα συνδέσω, ως τώρα έχουμε

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

<?php
if &#40;isset&#40;$_POST&#91;"forma"&#93;&#41; && !empty&#40;$_POST&#91;"forma"&#93;&#41;&#41;
&#123;
$pedia = $_POST&#91;'pedio'&#93;;

$phone = $_POST&#91;"thlefwno"&#93; ;
$street = $_POST&#91;"odos"&#93;;
$city = $_POST&#91;"polh"&#93;;

for &#40;$i=0;$i<=3;$i++&#41;&#123;
echo " $pedia&#91;$i&#93;";
&#125;

&#125;
?>

<form action="index.php" method="post"> 

<input type="text" name="thlefwno"> 
<input type="text" name="odos"> 
<input type="text" name="polh"> 

<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="thlefwno">
<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="odos">
<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="polh"> 

<input  type="submit" name="forma" value="Send">

</form>
από τη στιγμή που έχουμε το

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

echo " $pedia&#91;$i&#93;";
να μας γράφει το αποτέλεσμα ναι καταλαβαίνω πως μας γράφει την τιμή μόνο του κουτιού που επιλέξαμε όμως πως θα συνδέσω το $pedia[$i] με το περιεχόμενο του input <input type="text" name="odos"> ; ώστε να σταλεί μόνο το κείμενο εκείνου και όχι τα άλλα δύο αφού τα κουτάκια δίπλα τους δεν έχουν τσεκαριστεί ;

ομολογώ πως θέλω λίγη παραπάνω βοήθεια :)

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από ThyClub » 03 Αύγ 2009 13:24

Φαντάσου ότι κάποιος επιλέγει να στείλει τα πεδία :
Οδός
Πόλη
Έτσι το array μας θα γίνει:

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

$pedia&#91;odos&#93;
$pedia&#91;polh&#93;
Τότε μπορούμε να πάρουμε την τιμή αυτών που πόσταρε κάπως έτσι:

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

for &#40;$i=0;$i<=3;$i++&#41;&#123;
echo $_POST&#91;$pedia&#91;$i&#93;&#93;;
&#125; 

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από felipsemassa » 03 Αύγ 2009 17:29

μάλιστα ThyClub τώρα το κατάλαβα :)

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

<?php
if &#40;isset&#40;$_POST&#91;"forma"&#93;&#41; && !empty&#40;$_POST&#91;"forma"&#93;&#41;&#41;
&#123;
$pedia = $_POST&#91;'pedio'&#93;;

$phone = mysql_real_escape_string&#40;$_POST&#91;"thlefwno"&#93;&#41; ;
$street = mysql_real_escape_string&#40;$_POST&#91;"odos"&#93;&#41;;
$city = mysql_real_escape_string&#40;$_POST&#91;"polh"&#93;&#41;;

for &#40;$i=0;$i<=3;$i++&#41;&#123;
echo $_POST&#91;$pedia&#91;$i&#93;&#93;; 
&#125;

&#125;
?>

<form action="index.php" method="post">

<input type="text" name="thlefwno">
<input type="text" name="odos">
<input type="text" name="polh">

<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="thlefwno">
<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="odos">
<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="polh">

<input  type="submit" name="forma" value="Send">

</form>
πρόσθεσα και mysql_real_escape_string() καλύπτει ή είναι καλύτερο να χρησιμοποιούμε mysql_real_escape_string(trim()) μαζί, αν ναι γιατί ;

παίρνω και ένα ενοχλητικό notice ( 13 : echo $_POST[$pedia[$i]]; )
Notice: Undefined index: on line 13
για να μην το πετάει μήπως πρέπει να κάνω κάτι όπως με το isset που βάζοντας το, τα notice διορθώνονται ;

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

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από korgr » 03 Αύγ 2009 19:00

felipsemassa έγραψε: για να μην το πετάει μήπως πρέπει να κάνω κάτι όπως με το isset που βάζοντας το, τα notice διορθώνονται ;
Αφαιρεσε το = απο το

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

for &#40;$i=0;$i<=3;$i++&#41;&#123; 

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από Banavas » 03 Αύγ 2009 20:17

Προς τι όλος αυτός καϋμός με τα arrays;

Δεν είναι απλό και τίμιο ο χρήστης να συμπληρώσει όσα πεδία θέλει και να στείλει τη φόρμα; που είναι το πρόβλημα;
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από ThyClub » 03 Αύγ 2009 20:20

Καλύτερα κάνε αυτό:

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

<?php
if &#40;isset&#40;$_POST&#91;"forma"&#93;&#41; && !empty&#40;$_POST&#91;"forma"&#93;&#41;&#41;
&#123;
$pedia = $_POST&#91;'pedio'&#93;;

$phone = mysql_real_escape_string&#40;$_POST&#91;"thlefwno"&#93;&#41; ;
$street = mysql_real_escape_string&#40;$_POST&#91;"odos"&#93;&#41;;
$city = mysql_real_escape_string&#40;$_POST&#91;"polh"&#93;&#41;;

for &#40;$i=0;$i<=count&#40;$pedia&#41;;$i++&#41;&#123;
echo $_POST&#91;$pedia&#91;$i&#93;&#93;;
&#125;

&#125;
?>

<form action="index.php" method="post">

<input type="text" name="thlefwno">
<input type="text" name="odos">
<input type="text" name="polh">

<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="thlefwno">
<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="odos">
<INPUT NAME="pedio&#91;&#93;" TYPE="CHECKBOX" VALUE="polh">

<input  type="submit" name="forma" value="Send">

</form>
@banavas
Προφανώς θέλει να ελέγχει πόσα απο τα πεδία επέλεξε ο χρήστης. Προσωπικά τίμιο το βρίσκω :wink:

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από Banavas » 03 Αύγ 2009 20:25

ThyClub έγραψε:
@banavas
Προφανώς θέλει να ελέγχει πόσα απο τα πεδία επέλεξε ο χρήστης. Προσωπικά τίμιο το βρίσκω :wink:
Δεν είναι πιο απλό με ένα if (isset($pedio)) σε κάθε πεδίο που θέλει να ελέγξει;
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από ThyClub » 03 Αύγ 2009 21:33

Ναι αλλά στην περίπτωση που ο χρήστης επιλέξει να μην στείλει πχ ενα πεδίο αλλά για κάποιο λόγο το έχει συμπληρώσει τότε το πεδίο θα σταλεί.

Δεν ξέρω για ποιό λόγο το θέλει έτσι αλλά..

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από Banavas » 03 Αύγ 2009 21:41

ThyClub έγραψε:Ναι αλλά στην περίπτωση που ο χρήστης επιλέξει να μην στείλει πχ ενα πεδίο αλλά για κάποιο λόγο το έχει συμπληρώσει τότε το πεδίο θα σταλεί.

Δεν ξέρω για ποιό λόγο το θέλει έτσι αλλά..
Φυσικά και θα σταλεί. Και πολύ σωστά. Ετσι συμβαίνει σε όλες τις φόρμες. Αν δεν θέλει να στείλει ένα πεδίο δεν το συμπληρώνει (απλά και τίμια).

Τώρα αν το θέμα καταλήγει στο αφού έτσι το θέλει... Περί ορέξεως κολοκυθόπιτα. :pint: (με μπύρα)
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Php φόρμα - επιλογή πεδίων inputs προς αποστολή

Δημοσίευση από felipsemassa » 03 Αύγ 2009 22:55

ThyClub έγραψε:Ναι αλλά στην περίπτωση που ο χρήστης επιλέξει να μην στείλει πχ ενα πεδίο αλλά για κάποιο λόγο το έχει συμπληρώσει τότε το πεδίο θα σταλεί.

Δεν ξέρω για ποιό λόγο το θέλει έτσι αλλά..
Thyclub ο μόνος τρόπος στη περίπτωση που ο χρήστης επιλέξει να μην στείλει ένα πεδίο αλλα το έχει συμπληρώσει να και αυτό θα σταλεί, είναι απλά να μην βάλω απο την αρχή καθόλου αυτό το πεδίο όπως υποστηρίζει ο Banavas ;

Banavas έγραψε:Προς τι όλος αυτός καϋμός με τα arrays;
Δεν είναι απλό και τίμιο ο χρήστης να συμπληρώσει όσα πεδία θέλει και να στείλει τη φόρμα; που είναι το πρόβλημα;
Banavas απλές και τίμιες είναι οι ερωτήσεις, απλά θέλω να λύσω απορίες που μου γεννιούνται, μη ξεχνάς πως μαθαίνω οπότε μιλάμε πάντα για απορίες δεν ξέρω εσένα τώρα που σου φαίνονται :)

Στη συγκεκριμένη ερώτηση περισσότερο θέλω να καταλάβω πως μπορούμε να ελέγξουμε τα πεδία μιας φόρμας με php .

Σκέψου την περίπτωση όπου διατηρούμε μια φόρμα (όχι απαραίτητα επικοινωνίας - email) αλλά μια φόρμα όπου ο χρήστης μπορεί να τη χρησιμοποιήσει παραπάνω από 1 φορά , έτσι αν υποθέσουμε πως ότι έχουμε γράψει ως τώρα συνδέεται με κάποια βάση στη mysql και αποθηκεύει τα δεδομένα που δίνει ο χρήστης στα inputs type="text", σκέφτηκα τι θα έκανα στη περίπτωση όπου ο χρήστης θα επέστρεφε για δεύτερη φορά και θα ήθελε να τροποποιήσει τα στοιχεία του αλλάζονται όμως ένα ή μερικά από αυτά έτσι που όσα είχε δώσει την πρώτη φορά και δεν θέλει να αλλάξουν τώρα να παραμείνουν ανέπαφα (κάτι σαν ενημέρωση ΜΟΝΟ των πεδίων που εκείνος επιλέγει ) .

Με αυτό το σκεπτικό, επινόησα την εισαγωγή πλάι στα input type="text" των input type="checkbox", όμως τώρα βλέπω πως ακόμα και αν ο χρήστης τσεκάρει ένα η παραπάνω πεδία για να μην αποσταλούν ακόμα και αν τα έχει συπληρώσει, τότε αυτά θα αποσταλούν οπότε δεν κάνει ακριβώς αυτό που θέλω :(

Τι μπορούμε να κάνουμε ;

Απάντηση

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

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

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