Bug #13718 Updated: form elements with same name problem
| From: | jone1941 at yahoo dot com | Date: | Thu, 18 Oct 2001 15:38:37 +0000 |
| Subject: | Bug #13718 Updated: form elements with same name problem | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-68251@lists.php.net to get a copy of this message | ||
ID: 13718
User updated by: jone1941@yahoo.com
Reported By: jone1941@yahoo.com
Status: Bogus
Bug Type: Feature/Change Request
Operating System: All
PHP Version: 4.0.6
New Comment:
Oh, I'm sorry, I missunderstood you. I understand what you are getting at, ambiguity can be a
problem. I guess I'll just deal with using the suggestion of indexing on a string in
javascript. Thank you for all your help.
Previous Comments:
------------------------------------------------------------------------
[2001-10-18 11:33:49] hholzgra@php.net
no, i didn't ;)
i just tried to describe what would happen
*if* we would follow your suggestion
and that it is a not so good idea after all
(although we definetly should have a look
at the [] syntax regarding standard conformance)
------------------------------------------------------------------------
[2001-10-18 10:57:57] jone1941@yahoo.com
wow, I just noticed that you are suggesting that php actually generate an array! I posted two
example html files, that clearly show that you are wrong. PHP always treats them as a single
variable, no matter how many are actually set.
------------------------------------------------------------------------
[2001-10-18 10:54:37] jone1941@yahoo.com
sorry, I refreshed the page, and it reposted. Thank you for your help, I hope that you will
consider my suggestion for future releases.
------------------------------------------------------------------------
[2001-10-18 10:53:44] jone1941@yahoo.com
I do understand that if you were in the middle of a php script, this would be a simple reassigning
of the variable. However, this is a preprocessor command, and thus should be handled a little
differently.
Adding a "[]" at the tail of a variable and having it come out as an array on the other
end seems a like a trick. It has its uses I'll give you that, but if you look at my suggestion
you will realize that it would be a nice feature. You guys seem to have take the time to make sure
that elements with "[]" get properly shoved into arrays, so why not this.
This is a fairly common situation in html forms. Especially if you are dynamically generating them.
What this really comes down to is, are you willing to overlook the fact that something like this
does sort of already exist, in favor of another form of functionality?
There is one other issue. If you use the variable names that you suggest, it breaks javascript. ie:
<html>
<body>
<form name="form1" action="" method="post">
Baseball:
<input type="checkbox" name="interest[]" value="baseball">
<br>
Teams:
<input type="text" name="teams[]" size="30"
onFocus="form1.interest[0].checked=1">
<br>
<input type="submit" value="submit">
</form>
</body>
</html>
will cause an error, because you don't define arrays in javascript this way. I realize that
this seems like a bug in javascript, but actually it isn't. The html 4.01 specification
clearly states that:
"ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of
letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons
(":"), and periods (".")."
Note: this does not suggest that you can add "[" or "]". So, in essence you are
violating the html specification.
If you still do not agree that this would only improve php, I will stop bothering you.
------------------------------------------------------------------------
[2001-10-18 10:46:31] hholzgra@php.net
the simple problem with auto-generating arrays is:
form fields without input do not generate output
so if you have a form like
<form>
<input type="text" name="foo">
<input type="text" name="foo">
<input type="submit">
</form>
you will get an array $foo[] with two elements
in PHP if both input fields are used but a plain
string variable if only one (either the first or
the second) is used
for the javascript naming problem
form.elements['foo[]'] should work find
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/?id=13718
Edit this bug report at http://bugs.php.net/?id=13718&edit=1