Solved

Radio button and array (name=grade[])

Posted on 2007-12-01
10
1,956 Views
Last Modified: 2013-12-12
In php when I want to pass variables as arrays we append square bracket [] to the name of the input like so

echo '<input type=hidden name=year[] value="' . $datarow['date'] . '">';
echo '<input type=hidden name=mint_mark[] value="' . $datarow['mint_mark'] . '">';
echo '<input type=hidden name=denomination[] value=" ' . $datarow['denomination'] . '">';

on the receiving end we go thru the arrays like this

$id = $_POST['Record_id'];

                      for ($i = 0; $i < sizeof($id); $i++) {
                       

$year = $_POST['year'][$i];
$mint_mark = $_POST['mint_mark'][$i];
$denomination = $_POST['denomination'][$i];

This work well except with radio button, I have

echo "   <td><input type=radio name=grade[] value=G_4 size=2></td>";
echo "   <td><input type=radio name=grade[] value=VG_8 size=2></td>";
echo "   <td><input type=radio name=grade[] value=F_12 size=2></td>";
echo "   <td><input type=radio name=grade[] value=VF_20 size=2></td>";
echo '   <td><input type=radio name=grade[] value="EF 40" size=2></td>';
echo "   <td><input type=radio name=grade[] value=AU_50 size=2></td>";
echo "   <td><input type=radio name=grade[] value=MS_60 size=2></td>";
echo "   <td><input type=radio name=grade[] value=MS_63 size=2></td>";
echo "   <td><input type=radio name=grade[] value=MS_65 size=2></td>";
echo "   <td><input type=radio name=grade[] value=MS_67 size=2></td>";
echo "   <td><input type=radio name=grade[] value=PL_65 size=2></td>";
echo "   <td><input type=radio name=grade[] value=PRF_65 size=2></td></tr>";

and on the receiving end I have

$grade = $_POST['grade'][$i];

which give me a notice error and I get only the last selection entered in the db

Notice: Undefined offset: 1

What is wrong with this.
0
Comment
Question by:gamebits
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 5
10 Comments
 
LVL 36

Expert Comment

by:Zyloch
ID: 20388370
You shouldn't be passing values as arrays unless you have a need to pass multiple values, as in a multiple select list. Radio buttons with the same name are designed to only submit a single value out of all the ones chosen. If you need multiple selections, consider switching to input type checkbox.
0
 
LVL 28

Author Comment

by:gamebits
ID: 20388406
I see your point, my problem is I need to pass multiple values, let me explain

I have a form where the user select a certain number of coins to add to his database, this bring another page where he can add some details to the coins he previously selected (like date purchased, price, grade etc.) so basically the same form is displayed n number of time.

So let say the form is displayed 5 times I need the user to select a grade (and only one grade) for each coin, hence the use of radio button if I use checkboxes than the user would be able to select more than one grade for each coin (I know it wouldn't make sense to do that but I'm trying to build the application fool proof) a lot of coin collectors are older people and getting them to use computer is a challenge by itself.
0
 
LVL 36

Accepted Solution

by:
Zyloch earned 500 total points
ID: 20388428
I do not know if there is a simple HTML workaround. Instead, you can use a counter to give each set of radio buttons a name along the lines of grade##

Then, in parsing the form, use a while loop to check the existence of $_POST['grade' . $i] where $i is your counter. You may want to use this convention with other fields associated with each set of radio buttons as well.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 28

Author Comment

by:gamebits
ID: 20388437
May I ask how you would set a counter to do that?
0
 
LVL 36

Expert Comment

by:Zyloch
ID: 20388452
How are you printing out your form?
0
 
LVL 28

Author Comment

by:gamebits
ID: 20388488
I use

$id = $_POST['Record_id'];

                      for ($i = 0; $i < sizeof($id); $i++) {

                                                    //the form

                                }

so depending of Record_id I know how many time to display the form this information come from the previous page where the user select from a table (using checkbox) which coins he wants to add
0
 
LVL 36

Expert Comment

by:Zyloch
ID: 20388495
If I understand correctly, each iteration of the for loop is a self-contained unit. If that's the case, you can just use $i as the counter. (Is $_POST['Record_id'][$i] the number of radio buttons to display?) Sorry, I'm a little confused.
0
 
LVL 28

Author Comment

by:gamebits
ID: 20388550
May be a quick look at the website will help

http://www.worldcoinsdatabase.com/NEW_WCDB/topmenuswitcher.php

From the left menu click Search Database -> Canada -> Circulation Coins (1870 - present)

Choose a denomination than Query Database

Tick a few checkboxes and click the Add It button.
0
 
LVL 36

Expert Comment

by:Zyloch
ID: 20388569
I think I understand. Use $i as the counter and append it to the name of each form element as you echo it out.
0
 
LVL 28

Author Comment

by:gamebits
ID: 20388664
Thank You.

Gamebits
0

Featured Post

Three Reasons Why Backup is Strategic

Backup is strategic to your business because your data is strategic to your business. Without backup, your business will fail. This white paper explains why it is vital for you to design and immediately execute a backup strategy to protect 100 percent of your data.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Does the idea of dealing with bits scare or confuse you? Does it seem like a waste of time in an age where we all have terabytes of storage? If so, you're missing out on one of the core tools in every professional programmer's toolbox. Learn how to …
Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question