2011-04-13 9 views
1

を提出したと私は私の検索ページにオプションで並べ替えを追加してい「...いずれかを選択し、」他のはブランク値が

<label for="sort[order_by_field]">Field</label><select name="sort[order_by_field]" id="combobox"> 
    <option value="">Select one...</option> 
    <optgroup label="---"> 
     <option value="finding_incident_number"<?php echo ($field == 'finding_incident_number' ? ' selected="selected"': false); ?>>Incident #</option> 
     <option value="finding_violation_type"<?php echo ($field == 'finding_violation_type' ? ' selected="selected"': false); ?>>Finding</option> 

<label for="sort[order_by_direction]">Direction</label> 
    <select name="sort[order_by_direction]"> 
    <option>Select one...</option> 
    <option value="ASC"<?php echo ($dir == 'ASC' ? ' selected="selected"': false); ?>>Ascending</option> 
    <option value="DESC"<?php echo ($dir == 'DESC' ? ' selected="selected"': false); ?>>Descending</option> 
    </select> 

フォームを送信した後、私はisset($ _ POST ['sort'])をチェックします。それが設定されています。私はまた、空をチェックします。それは常に空です!ユーザーが実際に選択したかどうかを知りたいこれを設定して個々の配列値、つまりisset($ _ POST ['sort'] ['order_by_field'])をチェックする必要はありませんか?私は、今後フィールドの追加/削除可能なソートの動的な番号を持っていると思います。それだろう

は私がoptiongrpラベルを使用することができたとしたが、その後、それはセマンティックマークアップではないでしょうか?私はそれがうまくいくだろうと思う。

広い視点から、「一つを選択...」入れているフォームのドロップダウンのための良い練習を?

+0

、あなたのデータをしますprint_r場合、 '$ _POST [ 'ソートは']'は常に設定されます。また、すべてのフィールドが「選択」に設定されている場合にのみ空になります。 'sort 'をループすることでどの項目がループしているのか確認できます – JohnP

答えて

3

選択フィールドは常にあなたが

if ($_POST['sort_by']['field_name'] !='') 

OR

if ($_POST['sort_by']['field_name'] != null) 

でチェックする必要があり、これは常にそれらを使用する前に、変数をチェックすることをお勧めし$_POST

に設定されます。 「一つを選択...」置く

はこれで悪い良い練習の何物でもありません。

+0

Thanks @ Shakti、これは明らかです。それらの両方が右カバー 場合(空($ _ POST [ 'ソート'] [ 'フィールド'])!) :方法について – Bob

+0

? – Bob