foreach循环以php字符串形式从数据库填充多个单选按钮

foreach循环以php字符串形式从数据库填充多个单选按钮,php,mysql,arrays,foreach,radio-button,Php,Mysql,Arrays,Foreach,Radio Button,更新: 感谢SeanWM和Styphon提供的答案,我为那些寻找类似答案的人提供了完整的工作代码: <? if (isset($_GET['id'])) { include "connect_to_mysql.php"; $id= preg_replace('#[^0-9]#i','',$_GET['id']); $sql=mysql_query("SELECT * FROM angler3 WHERE id='$id' LIMIT 1"); $clientCount=mysql_num

更新: 感谢SeanWM和Styphon提供的答案,我为那些寻找类似答案的人提供了完整的工作代码:

<? 
if (isset($_GET['id'])) {
include "connect_to_mysql.php";
$id= preg_replace('#[^0-9]#i','',$_GET['id']);
$sql=mysql_query("SELECT * FROM angler3 WHERE id='$id' LIMIT 1");
$clientCount=mysql_num_rows($sql);

    if($clientCount>0){ 

 while($row=mysql_fetch_array($sql)){
 $anglerAvidity=$row["anglerAvidity"];
 $anglerFishMode=$row["anglerFishMode"];

 $vals = array('novice', 'occasional', 'avid');
 $radio_opts = "";
foreach ($vals as $val)
{
$checked = ($val==$anglerAvidity) ? ' checked="checked"' : '';
$radio_opts .= "<input type=\"radio\" name=\"anglerAvidity\" value=\"{$val}\" {$checked}> {$val}\n";

}
$vals2 = array('boat', 'kayak or canoe', 'float tube', 'on ice', 'rod and reel', 'trap nets', 'other');
$radio_opts2 = "";
foreach ($vals2 as $val2)
{
$checked2 = ($val2==$anglerFishMode) ? ' checked="checked"' : '';
$radio_opts2 .= "<input type=\"radio\" name=\"anglerFishMode\" value=\"{$val2}\"{$checked2}> {$val2}\n";
}
$content='
<h3>Please click on any buttons that are not answered. Your responses are shown below, and new or updated responses will be saved. </h3>
<hr>
<form enctype="multipart/form-data" action="thankyouAnglerYouRevise.php?id='.$id.' " method="POST"> 
<table>
<tr ><td>I consider myself a/an:</td>
<td colspan="2" align=left>'.$radio_opts .'
</td></tr>
<tr><td colspan="3" style="border-bottom: 1px solid #BBB; height: 10px;"></td></tr>
<tr ><td colspan="3" >My normal mode of fishing is:</td></tr>
<tr ><td colspan="3">'.$radio_opts2.'
</td></tr>
</table>
<br>
<input class="button" value="Submit" type="submit">
</form>
';
require_once ('index2.html.php');
?>


原始问题:

我正在尝试使用php/mysql编写一个编辑页面,并使用以下foreach代码:

$vals = array('novice', 'occasional', 'avid');
$radio_opts = "";
foreach ($vals as $val) {
    $checked = ($val == $anglerAvidity) ? ' checked="checked"' : '';
    $radio_opts .= "<input type=\"radio\" name=\"groupname\" value=\"{$val}\"{$checked}>   {$val}<br />\n";

}
$vals=array('新手'、'偶尔'、'狂热');
$radio_opts=“”;
foreach($val作为$val){
$checked=($val==$angelravity)?'checked=“checked”:'';
$radio_opts.=“{$val}
\n”; }
HTML:

<代码>我认为自己是A/A: “.$radio_opts” 将打印单选按钮并选择正确的值

然而,我在页面上有很多问题,所有问题都是使用这种类型的东西在字符串中调用的:

$title='Survey<br>';
$content='
<tr ><td>I consider myself a/an:</td>
<td colspan="2" align=left>'. $radio_opts .'
</td></tr>
$title='Survey
'; $content='1 我认为自己是A/A: “.$radio_opts”
这一切都很好,但当我尝试时:

$vals = array('novice', 'occasional', 'avid');
$radio_opts = "";
foreach ($vals as $val) {
    $checked = ($val == $anglerAvidity) ? ' checked="checked"' : '';
    $radio_opts .= "<input type=\"radio\" name=\"groupname\" value=\"{$val}\"{$checked}>   {$val}<br />\n";

}
$vals2 = array('kayak or canoe', 'float tube', 'on ice', 'rod and reel', 'trap nets', 'other');
$radio_opts2 = "";
foreach ($vals2 as $val2) {
    $checked2 = ($val2 == $anglerFishMode) ? ' checked="checked"' : '';
    $radio_opts2 .= "<input type=\"radio\" name=\"groupname\" value=\"{$val2}\"{$checked2}> {$val2}<br />\n";
}
$vals=array('新手'、'偶尔'、'狂热');
$radio_opts=“”;
foreach($val作为$val){
$checked=($val==$angelravity)?'checked=“checked”:'';
$radio_opts.=“{$val}
\n”; } $VAL2=阵列(‘皮艇或独木舟’、‘浮管’、‘冰上’、‘棒和卷轴’、‘陷阱网’、‘其他’); $radio_opts2=“”; foreach($vals2作为$val2){ $checked2=($val2==$anglerFishMode)?'checked=“checked”:''; $radio_opts2.=“{$val2}
\n”; }
使用HTML

    <tr ><td>I consider myself a/an:</td>
    <td colspan="2" align=left>'.$radio_opts .'
    </td></tr>
<代码>我认为自己是A/A: “.$radio_opts” 及

我的正常捕鱼模式是:
“.$radio_opts2”
两个单选按钮组都会显示,但只有第二个组的单选按钮会从数据库中填充。如果我切换顺序并首先调用radio_opts2,则会填充radio_opts并将radio_opts2显示为未选择的无线电组。这就是为什么我认为如果我能让foreach以某种方式结束的话,它几乎是有效的。如果在内容变量中结束第一个foreach组或调用第二个foreach组,则会出现意外的T_字符串错误。我知道这个调用的代码很糟糕,但为了完整起见,还是尝试了一下

这一定是我正在做的一些愚蠢的事情,没有结束第一个foreach循环,但是当我尝试使用endif或break时,我要么对第一个无线电组没有任何回音,要么抛出一条意外的else错误消息。我已经阅读了所有的手册,并花了数小时在这个论坛上寻找帮助,但我仍然不知道如何编写这段代码


谢谢你的帮助

一切看起来都很好。但是,对于每组单选按钮,您确实有相同的
名称
字段。目前,两者都是
name=“groupname”
。您应该尝试为这些组指定不同的名称:

$vals = array('novice', 'occasional', 'avid');
$radio_opts = "";
foreach ($vals as $val) {
    $checked = ($val == $anglerAvidity) ? ' checked="checked"' : '';
    $radio_opts .= "<input type=\"radio\" name=\"fishing_level\" value=\"{$val}\"{$checked}>   {$val}<br />\n";
    // ------------------------------------------------^

}
$vals2 = array('kayak or canoe', 'float tube', 'on ice', 'rod and reel', 'trap nets', 'other');
$radio_opts2 = "";
foreach ($vals2 as $val2) {
    $checked2 = ($val2 == $anglerFishMode) ? ' checked="checked"' : '';
    $radio_opts2 .= "<input type=\"radio\" name=\"fishing_mode\" value=\"{$val2}\"{$checked2}> {$val2}<br />\n";
    // ------------------------------------------------^
}
$vals=array('新手'、'偶尔'、'狂热');
$radio_opts=“”;
foreach($val作为$val){
$checked=($val==$angelravity)?'checked=“checked”:'';
$radio_opts.=“{$val}
\n”; // ------------------------------------------------^ } $VAL2=阵列(‘皮艇或独木舟’、‘浮管’、‘冰上’、‘棒和卷轴’、‘陷阱网’、‘其他’); $radio_opts2=“”; foreach($vals2作为$val2){ $checked2=($val2==$anglerFishMode)?'checked=“checked”:''; $radio_opts2.=“{$val2}
\n”; // ------------------------------------------------^ }
问题是groupname的名称。对于第二组单选按钮,您需要对此进行更改,否则表单会将它们视为一组单选按钮。将代码更改为:

$radio_opts2 .= "<input type=\"radio\" name=\"groupname2\" value=\"{$val2}\"{$checked2}> {$val2}<br />\n";
$radio_opts2.=“{$val2}
\n”;
两个显示器都显示但只有一个被填充是什么意思?天哪。这很有效,史蒂芬。万分感谢!哦,天哪,我以为我做到了!那么底部的答案是第一个答案?我已经更正了我的接受。这取决于你如何分类。只需将鼠标悬停在时间上,您就可以看到它是何时提交的。谢谢!我没看到。今天学到很多东西。:)谢谢你,肖恩,给了我这个清晰而优秀的答案。非常感谢。更正我的接受以反映您的第一反应。谢谢,肖恩。
$vals = array('novice', 'occasional', 'avid');
$radio_opts = "";
foreach ($vals as $val) {
    $checked = ($val == $anglerAvidity) ? ' checked="checked"' : '';
    $radio_opts .= "<input type=\"radio\" name=\"fishing_level\" value=\"{$val}\"{$checked}>   {$val}<br />\n";
    // ------------------------------------------------^

}
$vals2 = array('kayak or canoe', 'float tube', 'on ice', 'rod and reel', 'trap nets', 'other');
$radio_opts2 = "";
foreach ($vals2 as $val2) {
    $checked2 = ($val2 == $anglerFishMode) ? ' checked="checked"' : '';
    $radio_opts2 .= "<input type=\"radio\" name=\"fishing_mode\" value=\"{$val2}\"{$checked2}> {$val2}<br />\n";
    // ------------------------------------------------^
}
$radio_opts2 .= "<input type=\"radio\" name=\"groupname2\" value=\"{$val2}\"{$checked2}> {$val2}<br />\n";