簡體   English   中英

foreach循環從php字符串中的數據庫填充多個單選按鈕

[英]foreach loop to populate multiple radio buttons from a database in a php string

更新:感謝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>

顯示兩個單選按鈕組,但只從db中填充第二組的單選按鈕。 如果我切換順序並首先調用radio_opts2,則填充radio_opts並將radio_opts2顯示為未選擇的無線電組。 這就是為什么我認為如果我能以某種方式結束foreach的話,它幾乎可以工作。 如果我結束第一個foreach組或在內容變量中調用第二個foreach組,我會收到意外的T_STRING錯誤。 我知道這個電話是錯誤的代碼,但為了完整起見,無論如何都要嘗試。

它必須是我正在做的一些愚蠢的事情,而不是結束第一個foreach循環,但是當我嘗試使用endif或break時,我將無法為第一個無線電組得到任何回應或者拋出意外的其他錯誤消息。 我已經查看了所有的手冊,花了幾個小時在這個論壇上尋求幫助,但我仍然無法弄清楚如何編寫這段代碼。

非常感謝您的幫助!

一切都很好看。 但是,對於每組單選按鈕,您都具有相同的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";
    // ------------------------------------------------^
}

問題是groupname的名稱。 對於第二組單選按鈕,您需要更改此按鈕,或者表單將它們視為一組單選按鈕。 將您的代碼更改為:

$radio_opts2 .= "<input type=\"radio\" name=\"groupname2\" value=\"{$val2}\"{$checked2}> {$val2}<br />\n";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM