#7934 [Csd]: HTTP_POST_VARS unable to handle same key multiple times
| From: | hholzgra@php.net | Date: | Tue, 30 Jul 2002 15:52:21 +0000 |
| Subject: | #7934 [Csd]: HTTP_POST_VARS unable to handle same key multiple times | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-15597@lists.php.net to get a copy of this message | ||
ID: 7934
Updated by: hholzgra@php.net
Reported By: bzeeb+php@zabbadoz.net
Status: Closed
Bug Type: Variables related
Operating System: FreeBSD
PHP Version: 4.0.3
New Comment:
to chrisrivera@chrisrivera.com:
by giving the [] you specify that you *want*
an array while creating one auto-magicaly
whenever multiple values exists may confuse
form processing code as input variables may
be string or array depending on number of
selections made
to olivierdsm@hotmail.com:
this will do the trick for you:
"... IN (".join(",",$inmailtoupdate).") "
(but make sure $inmailtoupdate is not empty() before you do so)
please direct further questions to the php-general mailing list as we
are no longer talking about bugs here
Previous Comments:
------------------------------------------------------------------------
[2002-07-30 09:31:51] olivierdsm@hotmail.com
This is what i codded :
<input type="checkbox" name="inmailtoupdate[]" value="<? echo
$row['admins_id']; ?>">
then :
$SQL = "update admins set admins_inmail='yes' where admins_id in
($inmailtoupdate)";
--> this is what i get as error message : "Unknown column 'Array' in
'where clause'
so, ok i can write something like echo inmailtoupdate[1], but how do i
get the complette list???
------------------------------------------------------------------------
[2002-07-18 09:52:34] chrisrivera@chrisrivera.com
Why is it that the '[]' is needed in the name attribute? Isn't this
considered a bug then? Looping through the vars should return that it
is an Array by default without the need of adding '[]' to the name
attribute. This seems to be more of a hack than a solution.
------------------------------------------------------------------------
[2000-11-23 05:25:33] sniper@php.net
Just add [] to the name. i.e.
<input type="checkbox" name="FORM_key[]" value="2">
--Jani
------------------------------------------------------------------------
[2000-11-22 17:03:47] bzeeb+php@zabbadoz.net
Using p.ex. function from FAQ 7.1 to read HTTP_POST_VARS one
is unable to handle/see all key-value-pairs when key is the same for
multiple values. I did not find any way to see all pairs (well one
might define an array as name but that is not what CGI standard expects
I think).
p.ex. having something like this in a HTML form:
<input type=checkbox name="FORM_key" value="2">
<input type=checkbox name="FORM_key" value="8">
<input type=checkbox name="FORM_key" value="19">
would only result in:
FORM_key -> 19
sizeof($HTTP_POST_VRS) = 1
instead of
FORM_key -> 2
FORM_key -> 8
FORM_key -> 19
where sizeof would return 3.
This is most likely caused by using some kind of associative array
instead
of using indexes. I did not manage to solve this by using other array
f()s.
I do not have time to look at the source code - sorry.
A simple dirty quick hack perl-script shows you that one does get all
the
three values:
--- snipp ---
#!/usr/bin/perl
printf("Content-Type: text/html\n\n");
if ($ENV{'CONTENT_LENGTH'} > 0) {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
printf("\nPOST-Buffer (raw):<br>\n");
printf("%s\n", $buffer);
printf("\nPOST-Buffer (split up):<br>\n");
foreach $pair (@pairs) {
printf("%s<br>\n", $pair);
}
} else {
printf("NO HTTP_POST_VARs -> nothing to do here<br>\n");
}
# End;
--- snipp ---
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=7934&edit=1