2017-10-04 7 views
1

を選択:私はPHPにPOSTリクエストを送信しています、そして私がチェックしています。.. jQueryのではPHPのスイッチケースHTML私はHTMLの複数選択ボックス持って

<option value="1">First selection item</option> 
<option value="2">Another selection item</option> 
<option value="3">Third selection item</option> 

を:

switch($value) : 
    case 1: 
     $firstItem = 1; 
     break; 
    case 2: 
     $anotherItem = 1; 
     break; 
    case 3: 
     $thirdItem = 1; 
     break; 
    default: 
     $firstItem = $anotherItem = $thirdItem = 0; 
endswitch; 

次に...

なぜコードが機能しないのかわかりません。たとえば、option with value = 2のみを選択した場合は、$firstItem = NULL$thirdItem = NULLを選択します。私は、すべての可能な選択肢があれば、たくさんのことをするのは馬鹿だと思う。私はこれを作る必要があります:

オプション1選択--- $ firstItem = 1、$ anotherItem = $ thirdItem = 0;

オプション1,2選択 - $ firstItem = $ anotherItem = 1、$ thirdItem = 0;その後、

そして、はい...任意の選択した場合($value = 0$firstItem = $anotherItem = $thirdItem = 0

任意の提案ですか?前もって感謝します。

+0

何か問題があります。スイッチが* one *の場合のみ表示されます。唯一のオプションですが、あなたが求めている機能は、ユーザが同時に複数の値を選択できることを意味します。つまり、 '$ value'は' int'ではなく配列かもしれません。 – Fanckush

+0

申し訳ありませんが、スイッチケースの前に0で値を初期化する。デフォルトの場合は、fのときはヒットしません。私。ケース2が実行されます。それは役に立ちますか? はい...スイッチのケースは、ELSEのないIF文で置き換える必要があります。これは、複数選択があり、毎回すべての値をチェックする必要があるためです。 – elvirus

答えて

1

スイッチのみ行い1ケース、あなた最初に常に0に設定したいと考えています。

これは、その実行する必要があります。$valueあなたはnullを取得した理由である、1、2、または3でない場合

$firstItem = ($value == 1) ? 1 : 0; 
$anotherItem = ($value == 2) ? 1 : 0; 
$thirdItem = ($value == 3) ? 1 : 0; 

をデフォルトの場合にのみ実行されます。また、スイッチは、1つのブランチ(または1つのブランチとそれに続くすべてのブランチがブレークしていない場合は)の後ろに続くので、上記のようなif文または3次文を使用してください。変数値として(1/0ではなく)変数値としてtrue/falseを指定することができます。$firstitem = ($value == 1);

+0

私のコードは更新されていますが、値は1つだけです.2つ以上の値を選択すると、SQLは1つの行しか更新しません。 – DisplayName

+0

実際には破損していないので、常に3が1に設定されます。私は更新します。この場合、if文が3つ必要です。 – Loren

1

あなたが$valueを取得する場所あなたは示さなかったが、あなたはselectを必要とし、それはPHP側の配列で複数の値を取得するための配列[]として定義されnameを必要とします。次に、それらの配列値を1に設定するほうが簡単です。

<select name="something[]" multiple> 
    <option value="1">First selection item</option> 
    <option value="1">Another selection item</option> 
    <option value="1">Third selection item</option> 
</select> 

だから今、あなたは選択の配列に置き換え、0 sおよび$nicknameのデフォルトの配列を作成することができ、その後に使用execute

$params = array_replace(array(0,0,0,$nickname), $_POST['something']); 
$stmt->execute($params); 
+0

良い解決策!:-) – elvirus

関連する問題