无法在动态单选按钮循环中获取提交的值和名称

时间:2012-12-14 10:46:55

标签: php mysql while-loop radio-button

我从mysql中选择了数据并将它们插入一个单选按钮形式,如下所示循环:

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 ";
        }

然后我对提交的值有一个if语句:

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


    }

如果选中的单选按钮名称是win,我怎么说呢。$ row [home_id] - 将值插入mysql表。我正在努力解决这个问题,我不能在循环之外得到$ row [home_id]?

提前致谢

5 个答案:

答案 0 :(得分:1)

尝试以下

$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++;
}

在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];          
     }
   } 
}

答案 1 :(得分:0)

使用此

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

答案 2 :(得分:0)

因为你的收音机有不同的名字,所以它们都是独立的并且都是提交的,我建议将它们全部命名为“结果”,并分别给它们分别为“胜利”,“画画”和“宽松”。

<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']; ?>" />

您可以使用$ _POST ['result']访问该值,因为您知道主队和客队,您可以相应地处理数据

答案 3 :(得分:0)

将您的元素名称更改为win.home而不使用id,因为您可以通过该值获取它。

然后去:

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

编辑:

如果你想这样做,试试这个:

3个单选按钮,名为win.homedrawwin.away加上一个唯一的ID(mysql id?),如win.home.1234,那么您可以使用任意数量的游戏。您可以稍后使用explode()获取ID。

然后是值:

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

第二名:draw

第3名:$row["away_id"] . "-" . $row["home_id"]

然后在处理表格时:

explode()处使用-拆分值。所以第一个id永远是赢家。

答案 4 :(得分:0)

我认为在这种情况下可以使用单选按钮机制的不同用法。

在您的示例中,您为每行创建了3个不同的单选按钮实例,而是根据给出的答案创建一个具有不同值的单选按钮实例

像:

<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"].'">

这意味着变量$_POST["game1"]将具有为游戏选择的获胜者或抽奖的值game_id 1

希望这可以帮助你