1

ニュースレターの購読と購読解除を行うことができるフォームがあります。「フォーム」自体は次のようになります。

ここに画像の説明を入力してください

チェックボックスは、次のコードで動的に作成されます。

<?php 
$i = 0;  
while($objResult1 = mysql_fetch_array($objQuery1))  
 {  
$i++;  
?>  
<tr>  
   <td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td>
   <td><div align="center"><?=$objResult1["Titel"];?> </div></td>  
   <td><div align="center"><input type="checkbox" name="sub[]" value="10"> </div></td>  
   <td><div align="center"><input type="checkbox" name="sub[]" value="90"> </div></td>
</tr>  
<?php  
 }  
?>  

次のようなデータベースに値を挿入する別のスクリプトで値を使用します。

foreach($_POST['sub'] as $i=>$s){
$sql = mysql_query("INSERT INTO Subscriptions (Klant_ID, Mail_ID, Status, Datum) VALUES   ('".$Klant_ID."', '".$_POST['mailid'][$i]."', '".$s."', '".$Datum."')") or die(mysql_error());
}

ただし、問題は、すべての行で両方のチェックボックスを選択できることです(基本的にすべてのチェックボックスを選択できます)。入力タイプを「ラジオ」に設定すると、6つのラジオボタンのうち1つしか選択できません。これを機能させて、各行で1つのラジオボタンを選択できるようにする方法はありますか?ご不明な点がある場合や詳細情報が必要な場合は、コメントでお尋ねください。事前にThnx!

注:常に3行であるとは限りません。行は、データベースにある行数に応じて動的に作成されます。

編集:Jueecyの答えの おかげで、このコードで動作するようになりました:

<?php for ($i = 0; $objResult1 = mysql_fetch_array($objQuery1); $i++) : ?>
<tr>  
<td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]"     value="<?=$objResult1["ID"];?>"> </div></td>
<td><div align="center"><?=$objResult1["Titel"];?> </div></td>  
<td><div align="center"><input type="radio" name="sub[<?php echo $i; ?>]" value="10"> </div></td>  
<td><div align="center"><input type="radio" name="sub[<?php echo $i; ?>]" value="90"> </div></td>
<tr>
<?php endfor; ?>

現在、他に1つだけ問題があり、ID1の行が表示されなくなりました。誰もがこれを修正する方法を知っていますか?^^

4

5 に答える 5

1

これを機能させて、各行で1つのラジオボタンを選択できるようにする方法はありますか?

もちろんあります。ラジオボタンを選択して、名前でグループ化する必要があります。同じ名前のラジオボタンのみが、次の1つの値のみを持つように制限されます。

<input type="radio" name="row1" value="x">X</input>
<input type="radio" name="row1" value="y">Y</input>

<input type="radio" name="row2" value="x">X</input>
<input type="radio" name="row2" value="y">Y</input>

そのための適切なループを簡単に思い付くことができると思います。次のようなもの:

<?php for ($i = 0; $objResult1 = mysql_fetch_array($objQuery1); $i++) : ?>
<tr>  
   <td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td>
   <td><div align="center"><?=$objResult1["Titel"];?> </div></td>  
   <td><div align="center"><input type="checkbox" name="sub<?php echo $i; ?>" value="10"> </div></td>  
   <td><div align="center"><input type="checkbox" name="sub<?php echo $i; ?>" value="90"> </div></td>
<tr>
<?php endfor; ?>
于 2013-03-20T10:34:24.280 に答える
0

これを可能にするには、ラジオボタンの名前を行ごとに共有する必要があります。これは、名前が1つしかチェックできない無線のグループを定義しているためです。

これを修正することは、ソリューションの残りの部分に明らかに影響を及ぼしますが、それらを回避できると確信しています。

于 2013-03-20T10:29:57.063 に答える
0

ラジオボタンの例を示します。

    <html>
    <head>
    <title>My Page</title>
    </head>
    <body>
    <form name="myform" action="http://www.mydomain.com/myformhandler.cgi" method="POST">
    <div align="center"><br>
    <input type="radio" name="group1" value="Milk" /> Milk<br />
    <input type="radio" name="group1" value="Butter" checked /> Butter<br />
    <input type="radio" name="group1" value="Cheese" /> Cheese
    <hr />
    <input type="radio" name="group2" value="Water"/> Water<br />
    <input type="radio" name="group2" value="Beer" /> Beer<br />
    <input type="radio" name="group2" value="Wine" checked /> Wine<br />
    </div>
    </form>
    </body>
    </html>

ラジオボックスをグループ化するには、「name」属性を使用します。私はあなたの例を次のように変更します:

    <?php 
    $i = 0;  
    while($objResult1 = mysql_fetch_array($objQuery1))  
     {  
    $i++;  
    ?>  
    <tr>  
       <td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td>
       <td><div align="center"><?=$objResult1["Titel"];?> </div></td>  
       <td><div align="center"><input type="checkbox" name="sub1" value="10"> </div></td>  
       <td><div align="center"><input type="checkbox" name="sub1" value="90"> </div></td>

       <td><div align="center"><input type="checkbox" name="sub2" value="10"> </div></td>  
       <td><div align="center"><input type="checkbox" name="sub2" value="90"> </div></td>
    </tr>  
    <?php  
     }  
    ?>  
于 2013-03-20T10:30:48.017 に答える
0

行ごとに1つのラジオボタングループを使用するか、javascriptを使用して、サブスクライブを選択するときにサブスクライブ解除の選択を解除します。その逆も同様です。

于 2013-03-20T10:31:20.610 に答える
0

このコードを使用できます:100%動作します

<tr>  
            <td><div align="center">1</div></td>
            <td><div align="center">2</div></td>  
            <td><div align="center"><input type="radio" name="sub[1]" value="10"> </div></td>  
            <td><div align="center"><input type="radio" name="sub[1]" value="90"> </div></td>
        </tr>  
        <tr>  
            <td><div align="center">1</div></td>
            <td><div align="center">2</div></td>  
            <td><div align="center"><input type="radio" name="sub[2]" value="10"> </div></td>  
            <td><div align="center"><input type="radio" name="sub[2]" value="90"> </div></td>
        </tr>  
        <tr>  
            <td><div align="center">1</div></td>
            <td><div align="center">2</div></td>  
            <td><div align="center"><input type="radio" name="sub[3]" value="10"> </div></td>  
            <td><div align="center"><input type="radio" name="sub[3]" value="90"> </div></td>
        </tr> 
于 2013-03-20T10:57:58.757 に答える