2016-07-06 13 views
1

この概念の考え方が私を混乱させていると私はなぜ分かりませんか?私はこれにいくつかの簡単な解決策があると確信しています。ラジオボタン/チェックボックス

ここに私のコード(以下添付)の写真があります。 enter image description here

ユーザーは各ボックス内で1つのラジオボックスをクリックできるはずですが、そうすることはできません。今のところ、1つの休暇ボタンしか選択できず、1つの不在ボタンしか選択できません。ここで

が私のコードです:

if($loop < 4) { 

    echo '<td>'; 

    echo ' NAME<BR><input type="radio" name="vacationTeammates[]" value="'.$value[0].'">Vacation<br> 
      <input type="radio" name="absentTeammates[]" value="'.$value[0].'">Absent'; 

    echo '</td>'; 

    $loop++; 
} else { 
    $loop = 1; 
    echo "</tr><tr align='center'>"; 

    echo '<td>'; 

    echo ' NAME<BR><input type="radio" name="vacationTeammates[]" value="'.$value[0].'">Vacation<br> 
      <input type="radio" name="absentTeammates[]" value="'.$value[0].'">Absent'; 

    echo '</td>'; 

} 

(ループは、それがテーブルの行が終了するようになり、新しいものを開始し、それは多少は無関係ですが、ラジオボタンは重要なものです)

答えて

0

ありがとうございます@ user3163495 & @FirstOneここで私の答えに使用したヒントをいくつか紹介します。

各セルのラジオボタンの両方を同じ名前にし、他のラジオボタンの名前を変えました。値について

 if($loop < 4) { 

      echo '<td>'; 

      echo ' <input type="radio" name="goneTeammates['.$uniqueLoop.']" value="'.$value[0].'|V">Vacation<br> 
        <input type="radio" name="goneTeammates['.$uniqueLoop.']" value="'.$value[0].'|A">Absent<br>NAME'; 

      echo '</td>'; 

      $loop++; 
     } else { 
      $loop = 1; 
      echo "</tr><tr align='center'>"; 

      echo '<td>'; 

      echo ' <input type="radio" name="goneTeammates['.$uniqueLoop.']" value="'.$value[0].'|V">Vacation<br> 
        <input type="radio" name="goneTeammates['.$uniqueLoop.']" value="'.$value[0].'|A">Absent<br>NAME'; 

      echo '</td>'; 

     } 

、Iは、チームメイトの名前(実際に一意ID)と、存在しないか、または休暇のためのV用Aを使用。出力は基本的に次のようになります。|

23 |

35 V

64 |処理側では

など

私はその時の入力はd explode()|基本的には、一意のIDと文字を別々の変数に入れてそこから普通のように処理します。

1

各ラジオボタンのペアは、ブラウザが自分のセットであることを知るためには、同じ「名前」属性値を持たなければなりません。

「$ SomeUniqueRowVarは」行ごとに変化する可変である場合には、このような何かにあなたのコードを変更し

:というよりも、

echo 'NAME<BR>'; 
echo '<input type="radio" name="status'.$SomeUniqueRowVar.'" value="vacation">'; 
echo 'Vacation<br>'; 
echo '<input type="radio" name="status'.$SomeUniqueRowVar.'" value="absent">'; 
echo 'Absent'; 
+0

これは行には有効ですが、オペアンプのコードを見ると、 '$ loop'を' 1'にリセットします。 – FirstOne

+0

@FirstOneループ中に別の変数を簡単に作ることができますので、大したことではありません – GrumpyCrouton

+0

したがって、基本的に各列は単一選択です – FirstOne

1

私はカウンターを追加して、特定の配列要素にそれぞれの名前を割り当てますただ[]。チームメイトごとに1つの無線機しか選択できないようにするため、入力は同じ名前でなければならず、値が異なります。チームメイトの名前を、カウンタをインデックスとして使用する配列(ラジオ入力とは別の変数)に入れます。どのような対応がどのチームメイトに行われるのかを知ることができます。

if($loop < 4) { 
    $name[$counter] = $value[0]; 
    echo '<td>'; 
    echo ' NAME<BR><input type="radio" name="teammates[$counter]" value=1>Vacation<br> 
      <input type="radio" name="teammates[$counter]" value=0>Absent'; 
    echo '</td>'; 
    $counter++; 
    $loop++; 
} else { 
    $name[$counter] = $value[0]; 
    $loop = 1; 
    echo "</tr><tr align='center'>"; 
    echo '<td>'; 
    echo ' NAME<BR><input type="radio" name="teammates[$counter]" value=1>Vacation<br> 
      <input type="radio" name="teammates[$counter]" value=0>Absent'; 
    echo '</td>'; 
    $counter++; 
} 

は今、あなたは配列を処理するとき、あなたが知っているチームメイト[$カウンター]が1であれば、それは不在を意味休暇と0を意味します。

また、特殊文字がない/安全に特殊文字を解析することができる場合は、名前をインデックスとして使用することもできます。

+0

@ user3163495の回答を読んでください。 「FirstOneが指摘したように、これはまだ機能しません。これにより、両方のラジオをボックス内で選択できるようになります。基本的にはすべてのラジオボタンを同時に選択できるようにします。 – GrumpyCrouton

+0

名前を各ラジオ入力に関連付け、名前ごとのラジオだけを選択できるようにすることを考慮して編集しました。 – tjfo