TalkPHP
 
 
Account Login
Latest Articles
» The basic usage of PHPTAL, a XML/XHTML template library for PHP
» Vulnerable methods and the areas they are commonly trusted in.
» Simple way to protect a form from bot
» The Basics On: How Session Stealing Works
» How to keep your forms from double posting data
IRC Channel
IRC Speech Bubble Join the friendly bunch on IRC...
(#TalkPHP on Freenode)

...Also available via a web interface.

See this thread for information on the TalkPHP Free Hugs Initiative™. Subject to availability.
Associates
Associates
CSS Tutorials
Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old 08-19-2009, 09:28 AM   #1 (permalink)
The Visitor
 
Join Date: Aug 2009
Posts: 2
Thanks: 1
niconiko is on a distinguished road
Default optgroup and $_POST

I cannot retrieve all the values of an optgroup set to multiple.

When I use the following PHP script, I get only one of the multiply-selected optgroup values:
PHP Code:
<?php
foreach (array_keys($_POST) as $key) {
$
$key $_POST[$key];
print 
"$key is ${$key}<br />";
}
?>
The html form script is:
html Code:
<form name="myform" action="process.php" method="POST">
<div align="center">
<select name="Vote101" multiple="multiple" size="5">
  <optgroup label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select>
</div>
<br><input type="submit" value="Send"><br>
</form>

What I expect to happen is that, if someone selects "Volvo" and "Audi", then, when rerieving $_POST, I should see both "Volvo" and "Audi". As it is now, the PHP print command is only returning "Audi".

Thank you.

ModNote: read, Prettifying Pasted Code on TalkPHP Thank you

Last edited by codefreek : 08-20-2009 at 08:02 AM. Reason: php tags added - please read, http://www.talkphp.com/lounge/4563-prettifying-pasted-code-talkphp.html
niconiko is offline  
Reply With Quote
Old 08-19-2009, 10:02 AM   #2 (permalink)
The Prestige
Advanced Programmer Top Contributor Good Samaritan 
 
sketchMedia's Avatar
 
Join Date: Oct 2007
Location: Manchester, UK
Posts: 854
Thanks: 32
sketchMedia is on a distinguished road
Default

change the name of the select to Vote101[], this will make PHP process it as an array.

also
PHP Code:
foreach (array_keys($_POST) as $key) {
$
$key $_POST[$key];
print 
"$key is ${$key}<br />";

can be done like so:
PHP Code:
foreach($_POST as $key => $val)
{
     echo 
$key .' is: ' $val  '<br />';

But now you will have arrays in each of the opts so:
PHP Code:
    echo 'Vote101 is: <br />';
    foreach(
$_POST['Vote101'] as $opt)
    {
        echo 
$opt '<br />';
    } 
should do it.
__________________
mysql> SELECT * FROM `users` WHERE `users`.`clue` > 0;
Empty set (0.00 sec)
sketchMedia is offline  
Reply With Quote
The Following User Says Thank You to sketchMedia For This Useful Post:
niconiko (08-19-2009)
Old 08-19-2009, 11:05 AM   #3 (permalink)
The Visitor
 
Join Date: Aug 2009
Posts: 2
Thanks: 1
niconiko is on a distinguished road
Default

Thank you sketchMedia.

If I can impose a bit more...

I tried combining the two foreach structures thus:

PHP Code:
<?php
foreach($_POST as $key => $val)
{
if (
$val == "Array")
  {
    foreach(
$_POST['Vote101'] as $opt)
    {
    echo 
$opt '<br />';
    }
  } else {
   echo 
$key .' is: ' $val  '<br />';
       }
}
?>
Probably obvious to you, this resulted not in what I expected but in:

Vote100 is: Milk
Vote101 is: Array

I'll try to figure this out on my own, but...

Last edited by codefreek : 08-20-2009 at 08:03 AM.
niconiko is offline  
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


All times are GMT. The time now is 12:14 PM.

 
     

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0
Inactive Reminders By Icora Web Design