0

更新:感谢 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";

}

HTML:

<tr ><td>I consider myself a/an:</td>
            <td colspan="2" align=left>'. $radio_opts .'
            </td></tr>

打印单选按钮并选择正确的值。

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

$title='Survey<br>';
$content='
<tr ><td>I consider myself a/an:</td>
<td colspan="2" align=left>'. $radio_opts .'
</td></tr>

这一切都很好,但是当我尝试这个时:

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

使用 HTML

    <tr ><td>I consider myself a/an:</td>
    <td colspan="2" align=left>'.$radio_opts .'
    </td></tr>

    <tr ><td colspan="3" >My normal mode of fishing is:</td></tr>
    <tr ><td colspan="3">'.$radio_opts2.'
    </td></tr>

显示两个单选按钮组,但仅从数据库填充第二组的单选按钮。如果我切换顺序并首先调用 radio_opts2,则会填充 radio_opts 并且 radio_opts2 显示为未选择的无线电组。这就是为什么我认为如果我能让 foreach 以某种方式结束,它几乎可以工作。如果我结束第一个 foreach 组或在内容变量中调用第二个 foreach 组,我会收到意外的 T_STRING 错误。我知道这个调用是错误的代码,但为了完整起见,还是尝试了一下。

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

非常感谢您的帮助!

4

2 回答 2

1

一切看起来都很好。name但是,对于每组单选按钮,您确实拥有相同的字段。就目前而言,两者都是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";
    // ------------------------------------------------^
}
于 2013-07-04T15:53:05.527 回答
1

问题是组名的名称。对于您的第二组单选按钮,您需要更改此设置,否则表单会将它们视为一组单选按钮。将您的代码更改为:

$radio_opts2 .= "<input type=\"radio\" name=\"groupname2\" value=\"{$val2}\"{$checked2}> {$val2}<br />\n";
于 2013-07-04T15:53:36.530 回答