2011-01-05 24 views
0

メインページのフォームから送信された内容に応じて$ _SESSION変数を設定および設定解除する関数があります。PHPのHTMLチェックボックスの値

機能if文:

$_SESSION['search'] = true; 
if($_POST['searchtv']){ 
    $_SESSION['searchtv'] = true; 
} else { 
    unset($_SESSION['searchtv']); 
} 
if($_POST['searchmovie']){ 
    $_SESSION['searchmovie'] = true; 
} else { 
    unset($_SESSION['searchmovie']); 
} 

searchtvと$ _POST変数は、以下のチェックボックスを介して設定されているがsearchmovie:チェックする値は常にfalseのようですし、表示 '' そうしかし

<input type="checkbox" name="searchmovie" value="movie" <? echo isset($_SESSION['searchmovie']) ? 'checked' : ''; ?>"/> 

ボックスに目盛りを表示するように「checked」は設定されていません。

私は、$ _SESSION変数が正しく設定されていることを知っていますが、同じファイルには100%動作する別のIF文があります。私はsearchtvのチェックボックスを選択した場合は

if(isset($_SESSION['searchtv'])){ 
    $database->searchTV($_GET['show'], $session->uid); 
} 
           if(isset($_SESSION['searchmovie'])){ 
    $database->searchMovies($_GET['show'], $session->uid); 
} 
           if(!isset($_SESSION['searchtv']) && !isset($_SESSION['searchmovie'])){ 
    $database->searchTV($_GET['show'], $session->uid); 
    $database->searchMovies($_GET['show'], $session->uid); 
} 

ちょうどはい、それがチェックされたと言って、チェックボックスにフィードバックを得ることができない...それだけsearchTV機能を実行し、そうで..ので、私はそれが設定されている知っていると動作します検索ボタンが選択されたとき。

答えて

3

@medoix:デフォルトでは、2つのボックスがチェックされていないので、良い点である。この

<input type="checkbox" name="searchmovie" value="movie" <?php if (isset($_SESSION['searchmovie'])) { echo 'checked="checked" '; } ?>/> 
+0

うん、あなたは 'checked = 'checked''や' checked =' ''が必要です。今すぐあなたはちょうど 'チェック'をエコーし​​ています。 – Ben

+1

は治療をします!どうもありがとうございます。そのような小さなものがちょうど私の心を滑らせることができるのは驚くべきことです! – medoix

0

$_SESSION['searchtv'] && $_SESSION['searchmovie']をチェックするコードの部分が両方とも!issetであることがわかります。もし両方がチェックされていない場合にのみ実行されます。

+0

にこの

<input type="checkbox" name="searchmovie" value="movie" <? echo isset($_SESSION['searchmovie']) ? 'checked' : ''; ?>"/> 

を変更してみてください、私はそれがそのように設計しました。しかし、あなたがこれを持っていくと、両方のボックスを選択するかどうかのオプションが表示されます。しかし、もう一度両方がチェックされていれば、各機能は相互に依存して実行されます。 – medoix

+0

少し奇妙です。本当にif/else if/else if/else構造でなければなりません。両方とも設定されている場合は両方を行い、そうでない場合はtvを実行し、そうでない場合はムービーを実行し、そうでない場合は「検索方法を選択してください。次に、両方ともデフォルトでチェックします。これは、現在のメソッドで両方をチェックしないこととまったく同じです。もちろん、ボックスがチェックされていないときにそれらを設定解除するのではなく、それらをfalseに設定して、それを行うためにissetではなくtrue/falseであるかどうかをチェックする必要があります。 – Phoenix

関連する問題