#7934 [Csd]: HTTP_POST_VARS unable to handle same key multiple times

From: 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

« previous php.bugs (#15597) next »