Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

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

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

Απάντηση
Άβαταρ μέλους
iffor
Δημοσιεύσεις: 778
Εγγραφή: 14 Μάιος 2005 01:19
Τοποθεσία: Παράδεισος
Επικοινωνία:

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από iffor » 16 Ιούλ 2005 18:29

Hello στη κοινότητα...!!!
Μέχρι στιγμής αυτό που μου χρειάστηκε όταν στέλνω τα δεδομένα μιας φόρμας είναι τα value των διάφορων tags input που είχε η φόρμα...
Τώρα όμως, έχοντας σε μία φόρμα ένα tag input του οποίου το name δίνεται από μία μεταβλητή πχ $name, πώς θα μπορούσα να διαβάσω την μεταβλητή αυτή αφού σταλθεί η φόρμα?
Δηλ. έχω το tag
<input type=text name=$name value=$value>
Αφού σταλθεί αυτό μέσω κάποιας φόρμας, μετά πώς θα μπορούσα να διαβάσω το name, μιας και μου χρειάζεται για να μπορέσω μετά με $_POST[$name] να διαβάσω και το value που το ακολουθεί???
Εννοείτε ότι δεν θα ξέρω πια είναι η τιμή που θα πέρνει το $name στο input tag...
Ως παρατήρηση έχω register_globals = Off
Χίλια ευχαριστώ εκ των προτέρω...!!!!
μια νέα αρχή ξεκίνησε...
ένας καινούριος δρόμος άνοιξε...
redpanda.gr

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από soteres2002 » 16 Ιούλ 2005 18:46

an exete ena tag px <input type="text" name="foo"> tote an i forma stelnete me POST i GET method antistoixa tote tha boreite na tin prospelasete os eksis: $_POST["foo"] i $_GET["foo"] antistoixa. auto me to onoma einai praktika axristo efoson aplos boreite na elegsete an iparxei i metabliti...

an aplos thelete na kanete extract ta pedia pou stelnontai tote auta boreite na ta prospelasete os eksis:

<?php
foreach($_POST as $name => $value) {
print $name."=".$value; //perenete to name kai meta to value
}
?>

Άβαταρ μέλους
iffor
Δημοσιεύσεις: 778
Εγγραφή: 14 Μάιος 2005 01:19
Τοποθεσία: Παράδεισος
Επικοινωνία:

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από iffor » 16 Ιούλ 2005 18:55

soteres2002 έγραψε:an exete ena tag px <input type="text" name="foo"> tote an i forma stelnete me POST i GET method antistoixa tote tha boreite na tin prospelasete os eksis: $_POST["foo"] i $_GET["foo"] antistoixa. auto me to onoma einai praktika axristo efoson aplos boreite na elegsete an iparxei i metabliti...
Thanx για την γρήγορη απάντηση...!!!
Δεν διαφωνώ, απλός το πάω λίγο πιο μακριά...
Και αν δεν ξέρω ότι name=foo πως θα μπορώ να ελέγξω αν υπάρχει η μεταβλητή $_POST['foo']...???!!!
Για αυτό το πρόβλημα μιλάω ακριβώς
Στο πρόβλημα που έχω σπίτι γίνεται το εξής
Στο input, στο name έχω το id ενός προιόντος και στο value την ποσότητά του!
Για αυτό και δεν έχω σταθερό name στο input...
Και έτσι θα ήθελα να ξέρω κάθε φορά ποιό προιόν στάλθηκε κάθε φορά μέσω της φορμας...!!!
Αν δεν έγινα κατανοητός, πείτε μου που για να το αναλήσω καλύτερα...!!!
Thanx...!!! :D
μια νέα αρχή ξεκίνησε...
ένας καινούριος δρόμος άνοιξε...
redpanda.gr

Άβαταρ μέλους
iffor
Δημοσιεύσεις: 778
Εγγραφή: 14 Μάιος 2005 01:19
Τοποθεσία: Παράδεισος
Επικοινωνία:

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από iffor » 16 Ιούλ 2005 18:58

:D :D :D
Άλλαξες το post πριν ολοκληρώσω την απάντησή μου!!!! :D :D :D
μια νέα αρχή ξεκίνησε...
ένας καινούριος δρόμος άνοιξε...
redpanda.gr

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από soteres2002 » 16 Ιούλ 2005 19:38

boreis poli apla na kaneis ena if-block me isset os eksis:

<?php
if(isset($_POST["foo"])) {
//if exists, do something
}
?>

an thes na elegseis an exei stalei mia parametros me tin POST etisi. an auto telika zitate, elpizo pos exo boithisei, allios boroume na milisoume meso IRC gia na liso tin aporia sas...

Άβαταρ μέλους
iffor
Δημοσιεύσεις: 778
Εγγραφή: 14 Μάιος 2005 01:19
Τοποθεσία: Παράδεισος
Επικοινωνία:

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από iffor » 16 Ιούλ 2005 20:32

soteres2002 έγραψε:boreis poli apla na kaneis ena if-block me isset os eksis:

<?php
if(isset($_POST["foo"])) {
//if exists, do something
}
?>

an thes na elegseis an exei stalei mia parametros me tin POST etisi. an auto telika zitate, elpizo pos exo boithisei, allios boroume na milisoume meso IRC gia na liso tin aporia sas...
:P
Δυστυχώς δεν χρησιμοποιώ messagers...!!!
Χμμμ... Μαλλον δεν έχω εξηγήσει κατι καλα...
Έστω ότι παω να χρησιμοποιήσω το script-άκι που δίνεις μέσα στα quote
Στη θέση του foo τί θα βάλω...Αφού δεν ξέρω το name...!!!! Το οποίο όπως είπαμε πέρνει τα ονόματά του από την μεταβλητή $name...!!!
Αν και δεν το έχω κοιτάξει καλά, ποιο σωστή δουλειά πρέπει να κάνει το πρώτο script-ακι που έδωσες δηλ. το
<?php
foreach($_POST as $name => $value) {
print $name."=".$value; //perenete to name kai meta to value
}
?>
πάντως δεν ήξερα ότι τα στοιχεία ενός input φεύγουν ως ένα array με όνομα πεδίου $name και τιμές τις τιμές του $value...!!!!
μια νέα αρχή ξεκίνησε...
ένας καινούριος δρόμος άνοιξε...
redpanda.gr

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από soteres2002 » 16 Ιούλ 2005 20:48

pantos na elegsete ena stixeio pou iparxei mesa ston pinaka den boro na katalabo se ti tha ofelouse... afou iparxei... mipos telika thelete aplos na parete ta dedomena pou stelnontai meso tis POSt?

ilikrina den boro na katalabo kai fisika den exei logiki to na elegxei kapoios kati pou den kserei kai sigekrimena mia metabliti.

telos panton, me to scriptaki pio pano mesa ston foreach brogxo boreite na kanete oti elegxo thelete gia tis metablites pou fisika exei kai oxi tpt allo.

Άβαταρ μέλους
iffor
Δημοσιεύσεις: 778
Εγγραφή: 14 Μάιος 2005 01:19
Τοποθεσία: Παράδεισος
Επικοινωνία:

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από iffor » 16 Ιούλ 2005 21:17

:D
Έχει την λογική του, εξαρτάται με το τί θέλεις να κάνεις :D
Απλός σου φένεται έτσι επιδή δεν έχω δώσει όλο το αρχειάκι ώστε να δείς που χρειάζεται...
Μόλις το τελειώσω θα σου το στείλω όλο για να το ελέγξεις και εσύ λίγο :wink:
Έχει να κάνει με καλάθι αγορών και sessions...
μια νέα αρχή ξεκίνησε...
ένας καινούριος δρόμος άνοιξε...
redpanda.gr

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από soteres2002 » 16 Ιούλ 2005 23:45

pes etsi... :) :)

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από skeftomilos » 17 Ιούλ 2005 04:38

Εμένα με προβληματίζει αυτή η αρχιτεκτονική. Νομίζω ότι το name πρέπει να περιέχει όνομα και όχι data. Θα προτιμούσα να βάλω το id του προιόντος σε ένα διαφορετικό input (hidden). Κάπως έτσι:

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

<input type="hidden" name="product-id" value="12345">
<input type="text" name="product-quantity" value="1">
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
iffor
Δημοσιεύσεις: 778
Εγγραφή: 14 Μάιος 2005 01:19
Τοποθεσία: Παράδεισος
Επικοινωνία:

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από iffor » 17 Ιούλ 2005 16:49

skeftomilos έγραψε:Εμένα με προβληματίζει αυτή η αρχιτεκτονική. Νομίζω ότι το name πρέπει να περιέχει όνομα και όχι data. Θα προτιμούσα να βάλω το id του προιόντος σε ένα διαφορετικό input (hidden). Κάπως έτσι:

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

<input type="hidden" name="product-id" value="12345">
<input type="text" name="product-quantity" value="1">
:D :D :D
Όλα εξαρτούνται από τον τρόπο χρήσης τους!
Αν δουλεύει κάτι σωστά και προπάντως λογικά, μην σε προβληματίζει τίποτα!

Και εγώ έτσι πέρναγα τα δεδομένα μου, με hidden tags!
Απλός τώρα δοκιμάζω και ένα καινούριο τρόπο που είδα σε κάποια παραδείγματα script, για να δώ και την άλλη πλευρά!
Για αυτό και ο λόγος που έχω και κάποιες απορίες :lol: :lol: :lol:
Αρχή είναι ακόμη :lol: :lol: :lol:
μια νέα αρχή ξεκίνησε...
ένας καινούριος δρόμος άνοιξε...
redpanda.gr

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από soteres2002 » 17 Ιούλ 2005 22:27

sigoura iparxei kapoia logiki, aplos den mas tin analieis pliros oste na milisoume ki emeis sta isia kai na lisoume to problima apo ti riza... kai oxi na zitoume plirofories post-se-post.

Άβαταρ μέλους
iffor
Δημοσιεύσεις: 778
Εγγραφή: 14 Μάιος 2005 01:19
Τοποθεσία: Παράδεισος
Επικοινωνία:

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από iffor » 17 Ιούλ 2005 23:04

soteres2002 έγραψε:sigoura iparxei kapoia logiki, aplos den mas tin analieis pliros oste na milisoume ki emeis sta isia kai na lisoume to problima apo ti riza... kai oxi na zitoume plirofories post-se-post.
Μα δεν υπάρχει κάποιο πρόβλημα στη ρίζα...!!!
Το project βγαίνει, απλός δεν ήξερα πως μεταφέρεται το name από ένα input tag...!!! Και πολύ ευγενικά μου το ανέλυσες με ένα παραπάνω script...!!!

Για να δώ λιγάκι πως να αναλύσω την παραπάνω λογική...
Πές ότι δημιουργείς μία form δυναμικά, ας πάρουμε την form που έδωσε ο skeftomilos.
Θα δούμε ότι θα έχουμε μια διάταξη του τύπου
<form>

<input type=text name=product_id1 value=123>
<input type=hidden name=product_quantity1 value=5>

<input type=text name=product_id2 value=234>
<input type=hidden name=product_quantity2 value=15>

<input type=text name=product_id3 value=345>
<input type=hidden name=product_quantity3 value=7>

...
</form>
Παραπάνω αναγκαστικά άλλαζα τα name ώστε στην αποστολή της φόρμας να ξέρω σε ποιο product_quantity αντιστοιχεί το ανάλογο product_id...

Ενώ αν έχω στο name το product_id και στο value το product_quantity, θα γνωρίζω τι παίζει!

Δεν ξέρω αν γίνομαι κατανοητός... :(
μια νέα αρχή ξεκίνησε...
ένας καινούριος δρόμος άνοιξε...
redpanda.gr

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από skeftomilos » 18 Ιούλ 2005 19:09

Το όλο ζήτημα νομίζω προκύπτει γιατί η HTML δεν επιτρέπει την αποστολή σύνθετων αντικειμένων με το submit. Στέλνει μόνο απλές τιμές χωρίς να διατηρεί τη λογική σχέση που τις συνδέει. Γι αυτό και προσπαθείς να χρησιμοποιήσεις το name του input ώστε να συσχετίσεις με σιγουριά το id του προϊόντος με την ποσότητα. Είναι ένα workaround που λογικά λειτουργεί σωστά, αλλά κατά τη γνώμη μου είναι κάπως "στραβό". Γούστα είναι αυτά βεβαια. :P

Μια άλλη πιθανή λύση είναι να υπάρχουν πολλά στοιχεία input με το ίδιο όνομα:

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

<input type="hidden" name="id" value="1111">
<input type="text" name="quantity" value="10">

<input type="hidden" name="id" value="2222">
<input type="text" name="quantity" value="20">

<input type="hidden" name="id" value="3333">
<input type="text" name="quantity" value="30">
Δεν ξέρω πώς μπορούν να διαβαστούν οι τιμές με PHP (και πολύ θέλω να μάθω! :)), αλλά με ASP (VBScript) είναι αρκετά εύκολο:

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

<%
  Dim i
  For i = 1 To Request.Form&#40;"id"&#41;.Count   
    Response.Write Request.Form&#40;"id"&#41;&#40;i&#41; & "<br>"
    Response.Write Request.Form&#40;"quantity"&#41;&#40;i&#41; & "<br>"
  Next
%>
Αυτό δουλεύει με την προϋπόθεση ότι υπάρχει ίδιος αριθμός από στοιχεία input με name="id" και name="quantity" αντίστοιχα, και επίσης ότι είναι τοποθετημένα στη φόρμα με τη σωστή σειρά (εναλλάξ). Θεωρητικά δεν είναι απόλυτα αξιόπιστο καθώς ένας browser θα μπορούσε να στείλει τις τιμές με τυχαία σειρά. Πάντως στην πράξη οι browsers στέλνουν τις τιμές με τη σειρά που βρίσκονται στη φόρμα. Το δοκίμασα με IE, Firefox και Opera, και δουλεύει καλά. Μάλιστα δοκίμασα και με δυναμική προσθήκη επιπλέον στοιχείων input (με JavaScript), και πάλι δεν υπήρξε κάποιο πρόβλημα.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
iffor
Δημοσιεύσεις: 778
Εγγραφή: 14 Μάιος 2005 01:19
Τοποθεσία: Παράδεισος
Επικοινωνία:

Πως πέρνουμε το όνομα της μεταβλητής μέσω $_post;

Δημοσίευση από iffor » 18 Ιούλ 2005 23:08

skeftomilos έγραψε:Το όλο ζήτημα νομίζω προκύπτει γιατί η HTML δεν επιτρέπει την αποστολή σύνθετων αντικειμένων με το submit. Στέλνει μόνο απλές τιμές χωρίς να διατηρεί τη λογική σχέση που τις συνδέει. Γι αυτό και προσπαθείς να χρησιμοποιήσεις το name του input ώστε να συσχετίσεις με σιγουριά το id του προϊόντος με την ποσότητα. Είναι ένα workaround που λογικά λειτουργεί σωστά, αλλά κατά τη γνώμη μου είναι κάπως "στραβό". Γούστα είναι αυτά βεβαια. :P

Μια άλλη πιθανή λύση είναι να υπάρχουν πολλά στοιχεία input με το ίδιο όνομα:

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

<input type="hidden" name="id" value="1111">
<input type="text" name="quantity" value="10">

<input type="hidden" name="id" value="2222">
<input type="text" name="quantity" value="20">

<input type="hidden" name="id" value="3333">
<input type="text" name="quantity" value="30">
Δεν ξέρω πώς μπορούν να διαβαστούν οι τιμές με PHP (και πολύ θέλω να μάθω! :)), αλλά με ASP (VBScript) είναι αρκετά εύκολο:

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

<%
  Dim i
  For i = 1 To Request.Form&#40;"id"&#41;.Count   
    Response.Write Request.Form&#40;"id"&#41;&#40;i&#41; & "<br>"
    Response.Write Request.Form&#40;"quantity"&#41;&#40;i&#41; & "<br>"
  Next
%>
Αυτό δουλεύει με την προϋπόθεση ότι υπάρχει ίδιος αριθμός από στοιχεία input με name="id" και name="quantity" αντίστοιχα, και επίσης ότι είναι τοποθετημένα στη φόρμα με τη σωστή σειρά (εναλλάξ). Θεωρητικά δεν είναι απόλυτα αξιόπιστο καθώς ένας browser θα μπορούσε να στείλει τις τιμές με τυχαία σειρά. Πάντως στην πράξη οι browsers στέλνουν τις τιμές με τη σειρά που βρίσκονται στη φόρμα. Το δοκίμασα με IE, Firefox και Opera, και δουλεύει καλά. Μάλιστα δοκίμασα και με δυναμική προσθήκη επιπλέον στοιχείων input (με JavaScript), και πάλι δεν υπήρξε κάποιο πρόβλημα.
Και πάλι σωστός ο skeftomilos...!!! :pint:
Δυστυχώς εκεί είναι η δυσκολία...

Το τρόπο χρήσης τέτοιας μορφής form την πήρα από ένα παράδειγμα από το "Ανάπτηξη Web Εφαρμογών με PhP και MySQL" των Luke Welling και Laura Thomson, δεν ξέρω αν ξέρετε :roll:

Χμμμ... δεν ήξερα ότι θα μπορούσα να στείλω από μία φόρμα, tags με το ίδιο name...!!! Φοβόμουν ότι θα χτύπαγε μπιέλες το μηχάνημα...!!!
Και όσο για js και vbs είναι ακόμη νωρίς για μένα :)
μια νέα αρχή ξεκίνησε...
ένας καινούριος δρόμος άνοιξε...
redpanda.gr

Απάντηση

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

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

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