gamebits
asked on
Radio button and array (name=grade[])
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.
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.
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.
ASKER
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.
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.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
May I ask how you would set a counter to do that?
How are you printing out your form?
ASKER
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
$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
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.
ASKER
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.
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.
I think I understand. Use $i as the counter and append it to the name of each form element as you echo it out.
ASKER
Thank You.
Gamebits
Gamebits