简体   繁体   中英

Having trouble getting submitted values and names in dynamic radio button loop

I have selected data from mysql and inserted them into a radio button form which is looped as shown:

if($num_rows) {

    echo '<form name="fixtureform" method="POST" action="index.php">';

    while ($row = mysql_fetch_assoc($result)) {

    echo $row["home_team"] . " vs " . $row["away_team"]. '<br />' . " Home" . '<input type="radio" name="win'.$row["home_id"].'" value="'.$row["home_id"].'"/>' ." Draw" . '<input type="radio" name="'.$row["home_id"].$row["away_id"].'" value="draw"/>' ." Away" . '<input type="radio" name="win'.$row["away_id"].'" value="' . $row["away_id"] . '"/>' .'<br />';

}
    echo '<input type="Submit" Name="Submitacc" Value="Submit your teams">';
    echo '</form>';

} else { 
        echo "There are no fixtures today ";
        }

I then have an if statement for submitted values:

if($_POST['Submitacc']=='Submit your teams') {


    }

How would I say if the selected name of the radio button is win.$row[home_id] - insert value into mysql table. I'm struggling with the fact I can't get $row[home_id] outside of the loop?

thanks in advance

Try as below

$i=0;
while ($row = mysql_fetch_assoc($result)) {
    echo $row["home_team"] . " vs " . $row["away_team"]. '<br />' . " Home" . '<input type="radio" name="result['.$i.']" value="h_'.$row["home_id"].'"/>' ." Draw" . '<input type="radio" name="result['.$i.']" value="draw"/>' ." Away" . '<input type="radio" name="result['.$i.']" value="a_' . $row["away_id"] . '"/>' .'<br />';
  $i++;
}

In Your PHP

foreach($_POST['result'] as $value){
   if($value == 'draw') {
     //do stuff
   }
   else {
     $apart = explode('_',$value);
     if($apart[0]=='h'){
        //home team win
        echo $apart[1];
     }
     else {
        //away team win
        echo $apart[1];          
     }
   } 
}

用这个

echo"<input name='win' type='radio' value='".$row['home_id']."' />";

Because your radios have different names they are all separate and all being submitted, I recommend naming them all "result" and giving them values of "win", "draw" and "loose" respectively.

<label>Win: <input type="radio" name="result" value="win" /></label>
<label>Draw: <input type="radio" name="result" value="draw" /></label>
<label>Loose: <input type="radio" name="result" value="loose" /></label>
<input type="hidden" name="home_team" value="<?php echo $row['home_team']; ?>" />
<input type="hidden" name="away_team" value="<?php echo $row['away_team']; ?>" />

You can access the value with $_POST['result'] and since you know the home team and away team you can handle the data accordingly

Change your element name to win.home without the id , since you will get it by the value.

Then go like:

if(isset($_POST['win.home'])) { }

Edit:

If you want to do it like this, try this:

3 radio buttons, named win.home , draw , win.away plus a unique id (mysql id?) like win.home.1234 then you can use as many games as you want. You can get the id back with explode() later.

Then the values:

1st: $row["home_id"] . "-" . $row["away_id"] $row["home_id"] . "-" . $row["away_id"]

2nd: draw

3rd: $row["away_id"] . "-" . $row["home_id"] $row["away_id"] . "-" . $row["home_id"]

Then when processing the form:

Split the value with explode() at the - . So the first id is always the winner.

i think a diferent usage of the radio button mechanic shuold be used in this case.

in your example you are creating 3 diferent instances of a radio button for each row, instead create one instance of a radio button set with diferent values depending on the answer given

like:

<input type="radio" name="game'.$row["game_id"].'" value="'.$row["home_id"].'">
<input type="radio" name="game'.$row["game_id"].'" value="draw">
<input type="radio" name="game'.$row["game_id"].'" value="'.$row["away_id"].'">

this means that the variable $_POST["game1"] will have the value of the winner or draw that was selected for game which is game_id 1

hope this helps you

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM